EuroBSDcon 2018
Author: Kamil Rytarowski
E-mail: kamil@netbsd.org
Date: September 23th 2018
Place: Bucharest, Romania
Kamil Rytarowski (born 1987)
Krakow, Poland
NetBSD user since 6.1.
The NetBSD Foundation member since 2015.
Work areas: kernel, userland, pkgsrc.
Interest: NetBSD on desktop and in particular NetBSD as a workstation.
The current activity in 3rd party software:
Sanitizer is a programming tool that detects computer program bugs. There are 4 fundamental sanitizers:
Sanitizers supported in NetBSD:
Work-in-progress kernel sanitizers researched by Linux kernel developers:
Kernel Sanitizers (kUBSan and kASan):
Static analyzers (builtin in compilers, Coverity, cppcheck and others)
Dynamic Binary analysis tools (Valgrind)
Available the NetBSD kernel diagnostics:
They are usually expensive and detect logical kernel bugs in certain subsystems or routines only.
Detects:
µUBSan - independent NetBSD runtime:
µUBSan - independent NetBSD runtime:
... and more
Mostly:
Primary author of the port: Maxime Villard (maxv@NetBSD.org).
Initial porting by Siddharth Muralee (during Google Summer of Code).
Quick overview by myself.
Detects unauthorized memory access (unallocated or already freed) - use-after-free, out-of-bound access
The NetBSD port functional with ASan ABI v6 (GCC 6.x) and v8 (GCC 7.x, Clang/LLVM 6.x).
Requirements:
kASan supported on the following ports:
Nice to have for bug detecting purposes:
sys/net/rtsock.c
 1 Fix buffer overflow, detected by kASan.
 2 
 3     ifconfig gif0 create
 4     ifconfig gif0 up
 5 
 6 [   50.682919] kASan: Unauthorized Access In 0xffffffff80f22655: \
 7 Addr 0xffffffff81b997a0 [8 bytes, read]
 8 [   50.682919] #0 0xffffffff8021ce6a in kasan_memcpy <netbsd>
 9 [   50.692999] #1 0xffffffff80f22655 in m_copyback_internal <netbsd>
10 [   50.692999] #2 0xffffffff80f22e81 in m_copyback <netbsd>
11 [   50.692999] #3 0xffffffff8103109a in rt_msg1 <netbsd>
12 [   50.692999] #4 0xffffffff8159109a in compat_70_rt_newaddrmsg1 <n
13 [   50.692999] #5 0xffffffff81031b0f in rt_newaddrmsg <netbsd>
14 [   50.692999] #6 0xffffffff8102c35e in rt_ifa_addlocal <netbsd>
15 [   50.692999] #7 0xffffffff80a5287c in in6_update_ifa1 <netbsd>
16 [   50.692999] #8 0xffffffff80a54149 in in6_update_ifa <netbsd>
17 [   50.692999] #9 0xffffffff80a59176 in in6_ifattach <netbsd>
18 [   50.692999] #10 0xffffffff80a56dd4 in in6_if_up <netbsd>
19 [   50.692999] #11 0xffffffff80fc5cb8 in if_up_locked <netbsd>
20 [   50.703622] #12 0xffffffff80fcc4c1 in ifioctl_common <netbsd>
21 [   50.703622] #13 0xffffffff80fde694 in gif_ioctl <netbsd>
22 [   50.703622] #14 0xffffffff80fcdb1f in doifioctl <netbsd>
sys/dev/pci/if_msk.c
 1 Fix buffer overflow, detected by kASan.
 2 
 3 [    1.044878] kASan: Unauthorized Access In 0xffffffff804ec7e2: \
 4 Addr 0xffffffff818a51e4 [2 bytes, read]
 5 [    1.044878] #0 0xffffffff804ec7e2 in mskc_probe <netbsd>
 6 [    1.044878] #1 0xffffffff80e92a77 in mapply <netbsd>
 7 [    1.044878] #2 0xffffffff80e92e5f in config_search_loc <netbsd>
 8 [    1.044878] #3 0xffffffff80e93fb5 in config_found_sm_loc <netbsd>
 9 [    1.044878] #4 0xffffffff802ca9ea in pci_probe_device <netbsd>
10 [    1.044878] #5 0xffffffff802cad97 in pci_enumerate_bus <netbsd>
11 [    1.044878] #6 0xffffffff802caf00 in pcirescan <netbsd>
12 [    1.044878] #7 0xffffffff802cb1ee in pciattach <netbsd>
13 [    1.044878] #8 0xffffffff80e93e5b in config_attach_loc <netbsd>
14 [    1.044878] #9 0xffffffff80e93fce in config_found_sm_loc <netbsd>
15 [    1.044878] #10 0xffffffff80271212 in mp_pci_scan <netbsd>
16 [    1.044878] #11 0xffffffff8022d9ee in mainbus_attach <netbsd>
17 [    1.044878] #12 0xffffffff80e93e5b in config_attach_loc <netbsd>
18 [    1.044878] #13 0xffffffff8021e38b in cpu_configure <netbsd>
19 [    1.044878] #14 0xffffffff814a7068 in main <netbsd>
| Table of Contents | t | 
|---|---|
| Exposé | ESC | 
| Full screen slides | e | 
| Presenter View | p | 
| Source Files | s | 
| Slide Numbers | n | 
| Toggle screen blanking | b | 
| Show/hide slide context | c | 
| Notes | 2 | 
| Help | h |