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 |