소개
리눅스 커널 해커 및 컨트리뷰터로 활동 중인 김현우(V4bel)입니다.
⦁ Contact: imv4bel@gmail.com
Awards
⦁ Google kernelCTF LTS-6.6.56/COS-109 0-day WIN (exp196/exp197, CVE-2024-50264)
⦁ Google kernelCTF LTS-6.6.35 0-day WIN (exp183, CVE-2024-41010)
Vulnerability Reports
⦁ CVE-2024-27394 (Linux kernel TCP Use-After-Free)
⦁ CVE-2024-27395 (Linux kernel openvswitch Use-After-Free)
⦁ CVE-2024-27396 (Linux kernel GTP Use-After-Free)
⦁ CVE-2023-51779 (Linux kernel bluetooth socket Use-After-Free)
⦁ CVE-2023-51780 (Linux kernel atm socket Use-After-Free)
⦁ CVE-2023-51781 (Linux kernel appletalk socket Use-After-Free)
⦁ CVE-2023-51782 (Linux kernel rose socket Use-After-Free)
⦁ CVE-2023-32269 (Linux kernel NET/ROM socket Use-After-Free)
⦁ CVE-2022-41218 (Linux kernel DVB core Use-After-Free)
⦁ CVE-2022-45884 (Linux kernel DVB core Use-After-Free)
⦁ CVE-2022-45885 (Linux kernel DVB core Use-After-Free)
⦁ CVE-2022-45886 (Linux kernel DVB core Use-After-Free)
⦁ CVE-2022-45919 (Linux kernel DVB core Use-After-Free)
⦁ CVE-2022-40307 (Linux kernel Device driver Use-After-Free)
⦁ CVE-2022-41848 (Linux kernel Device driver Use-After-Free)
⦁ CVE-2022-41849 (Linux kernel Device driver Use-After-Free)
⦁ CVE-2022-41850 (Linux kernel Device driver Use-After-Free)
⦁ CVE-2022-44032 (Linux kernel Device driver Use-After-Free)
⦁ CVE-2022-44033 (Linux kernel Device driver Use-After-Free)
⦁ CVE-2022-44034 (Linux kernel Device driver Use-After-Free)
⦁ CVE-2022-45888 (Linux kernel Device driver Use-After-Free)
Linux kernel Contributions
⦁ vsock/virtio: Initialization of the dangling pointer occurring in vsk->trans
(github.com/torvalds/linux/commit/6ca575374dd9a507cdd16dfa0e78c2e9e20bd05f)
⦁ hv_sock: Initializing vsk->trans to NULL to prevent a dangling pointer
(github.com/torvalds/linux/commit/e629295bd60abf4da1db85b82819ca6a4f6c1e79)
⦁ tcp: Fix Use-After-Free in tcp_ao_connect_init
(github.com/torvalds/linux/commit/80e679b352c3ce5158f3f778cfb77eb767e586fb)
⦁ net: openvswitch: Fix Use-After-Free in ovs_ct_exit
(github.com/torvalds/linux/commit/5ea7b72d4fac2fdbc0425cd8f2ea33abe95235b2)
⦁ net: gtp: Fix Use-After-Free in gtp_dellink
(github.com/torvalds/linux/commit/f2a904107ee2b647bb7794a1a82b67740d7c8a64)
⦁ Bluetooth: af_bluetooth: Fix Use-After-Free in bt_sock_recvmsg
(github.com/torvalds/linux/commit/2e07e8348ea454615e268222ae3fc240421be768)
⦁ atm: Fix Use-After-Free in do_vcc_ioctl
(github.com/torvalds/linux/commit/24e90b9e34f9e039f56b5f25f6e6eb92cdd8f4b3)
⦁ appletalk: Fix Use-After-Free in atalk_ioctl
(github.com/torvalds/linux/commit/189ff16722ee36ced4d2a2469d4ab65a8fee4198)
⦁ net/rose: Fix Use-After-Free in rose_ioctl
(github.com/torvalds/linux/commit/810c38a369a0a0ce625b5c12169abce1dd9ccd53)
⦁ media: dvb-core: Fix use-after-free due to race at dvb_register_device()
(github.com/torvalds/linux/commit/627bb528b086b4136315c25d6a447a98ea9448d3)
⦁ af_key: Fix heap information leak
(github.com/torvalds/linux/commit/2f4796518315ab246638db8feebfcb494212e7ee)
⦁ netrom: Fix use-after-free caused by accept on already connected socket
(github.com/torvalds/linux/commit/611792920925fb088ddccbe2783c7f92fdfb6b64)
⦁ net/rose: Fix to not accept on connected socket
(github.com/torvalds/linux/commit/14caefcf9837a2be765a566005ad82cd0d2a429f)
⦁ net/x25: Fix to not accept on connected socket
(github.com/torvalds/linux/commit/f2b0b5210f67c56a3bcdf92ff665fb285d6e0067)
⦁ efi: capsule-loader: Fix use-after-free in efi_capsule_write
(github.com/torvalds/linux/commit/9cb636b5f6a8cc6d1b50809ec8f8d33ae0c84c95)
⦁ HID: roccat: Fix Use-After-Free in roccat_read
(github.com/torvalds/linux/commit/cacdb14b1c8d3804a3a7d31773bc7569837b71a4)
⦁ video: fbdev: smscufx: Fix use-after-free in ufx_ops_open()
(github.com/torvalds/linux/commit/5610bcfe8693c02e2e4c8b31427f1bdbdecc839c)
⦁ video: fbdev: smscufx: Fix several use-after-free bugs
(github.com/torvalds/linux/commit/cc67482c9e5f2c80d62f623bcc347c29f9f648e1)
⦁ char: xillybus: Fix trivial bug with mutex
(github.com/torvalds/linux/commit/c002f04c0bc79ec00d4beb75fb631d5bf37419bd)
⦁ bpf: Always use maximal size for copy_array()
(github.com/torvalds/linux/commit/45435d8da71f9f3e6860e6e6ea9667b6ec17ec64)
⦁ media: dvb-core: Fix UAF due to refcount races at releasing
(github.com/torvalds/linux/commit/fd3d91ab1c6ab0628fe642dd570b56302c30a792)
강의
수강평
- 리눅스 커널 해킹. A부터 Z까지
게시글
질문&답변
CTF 참가 시 전문 분야
안녕하세요.포너블, 웹해킹, 암호학 등 하나의 영역을 파는 사람들도 있고 전 분야를 전반적으로 잘하는 사람들도 있습니다.그래도 보통 팀으로 CTF에 나갈 경우 각자 전문 영역이 있는 사람들이 모이는 경우가 좀 더 많은 것 같네요.
- 0
- 1
- 113
질문&답변
SMAP 우회에서 궁금한게 하나 있습니다.
안녕하세요.해당 강의에서는 BOF 취약점을 이용해 ROP를 실행하기 때문에 가능합니다.BOF로 인해 payload가 커널 영역인 커널 스택에 쌓이기 때문에, 이를 실행할 때 SMAP의 영향을 받지 않게 됩니다.유저 영역의 shell()을 실행할 땐 ROP payload로 인해 커널에서 유저 영역으로의 전환이 끝난 후기 때문에 실행되는 것이고, 이는 SMAP와 무관합니다.BOF 외의 취약점을 이용해 exploit 할 경우, 커널 힙 영역으로의 pivoting 작업이 필요합니다.
- 0
- 2
- 260
질문&답변
KADR 우회에서 init파일이 없는 경우는 어떻게 하나요?
안녕하세요. /etc/init.d/ 경로에 존재하는 스크립트와 파일들을 확인해보시기 바랍니다.스크립트가 없을 경우, kallsyms 파일을 복사해서 유저가 읽을 수 있도록 하는 스크립트를 /etc/init.d/ 에 추가하는 것도 방법이 될 수 있습니다.
- 0
- 1
- 310
질문&답변
여전히 해결책 없는 build_result
안녕하세요, 답변이 늦어 죄송합니다. build_result 디렉토리는 제가 임의로 만들어 bzImage와 rootfs.cpio를 한 곳에 모아놓은 것일 뿐이고, make 과정에서 생성되지 않습니다.원하는 디렉토리를 만들어서 bzImage와 rootfs.cpio를 모아놓은 뒤, 해당 위치에서 qemu script를 실행하시면 됩니다.감사합니다.
- 0
- 1
- 283
질문&답변
KASLR 강의에서 주어진 환경에서는 /proc/kallsyms 확인 못하는 것이 맞나요?
안녕하세요.강의 중 KADR 우회 강의를 확인하시면, init 스크립트를 수정하여 root 권한으로 부팅한 후 /proc/kallsyms를 읽어오는 내용이 있습니다.해당 강의를 확인하시면 될 것 같습니다.감사합니다.
- 0
- 1
- 419
질문&답변
안녕하세요 수강중 궁금한 것이 있습니다.
안녕하세요.답변을 늦게 드리게 되어 죄송합니다.해당 강의는 pwnable에 대한 개념이 어느정도 잡힌 수강생 분들을 주 대상으로 하고 있습니다.만약 pwnable 기본 개념을 쌓고 싶으시다면, https://dreamhack.io/ 교육 플랫폼을 추천 드립니다.
- 0
- 2
- 449
질문&답변
가젯에 대해 이해가 잘 안됩니다.
안녕하세요.pop rax;가 실행되는 시점에 rsp는 0x6f0를 가리키고 있게 됩니다.이 상황에서 pop rax;가 실행되면, rsp가 가리키고 있는 0x6f0을 rax로 pop하기 때문에 0x6f0을 넣을 수 있게 됩니다.더 자세한 것은 ROP에 대해 공부해보시면 도움이 될 것 같습니다.
- 0
- 1
- 471
질문&답변
Kernel KPTI 적용시 영향?
안녕하세요.리눅스 커널 이미지는 런타임에서 command-line parameter 등에 의해 그 구조가 바뀔 수 있습니다.KPTI를 적용하고 부팅한 커널에선, 커널 모드와 유저 모드로 전환하는 함수들의 흐름이 바뀌기도 하구요.이런 경우엔 그냥 살아있는 가젯을 사용하거나, gdb의 find 명령어로 런타임에서 가젯을 찾는 것이 가장 간편한 방법입니다.
- 0
- 1
- 520
질문&답변
qemu 스크립트 실행시 Kernel panic이 발생합니다.
안녕하세요.해당 오류는 rootfs.cpio 파일에 문제가 있어서 발생하는 오류로 보입니다.3-2. KASLR 강의의 수업 자료를 다운받아서 boot.sh를 실행시켜도 같은 오류가 출력되는지 확인해보시기 바랍니다.
- 0
- 2
- 681
질문&답변
Kernel UAF
안녕하세요.cred overwrite 기법을 사용할 수 있는 커널 버전에서는, cred와 동일한 크기에 속하는 kmalloc-N 슬랩 캐시의 객체를 이용해 UAF를 트리거할 수 있습니다.또, 커널 구조체의 크기는 커널 버전마다 다르기 때문에 이를 확인하려면 pahole을 사용해야 합니다.https://manpages.ubuntu.com/manpages/impish/man1/pahole.1.html위의 설명대로 pahole을 이용해 cred 구조체의 크기를 구할 수 있습니다.감사합니다.
- 0
- 1
- 510