A Study on Fuzzing the Linux Kernel Networking Subsystem Using Syzkaller

Syzkaller 를 이용한 리눅스 커널 네트워크 서브시스템 퍼징에 관한 연구

  • Su-Bin Song (Dept. of Computer Science and Engineering, Seoul National University) ;
  • Min-Kyung Park (Cyber Security Research and Education Institute, The University of Texas at Dallas) ;
  • Tae-Kyoung Kwon (Dept. of Computer Science and Engineering, Seoul National University)
  • 송수빈 (서울대학교 컴퓨터공학부 ) ;
  • 박민경 ;
  • 권태경 (서울대학교 컴퓨터공학부)
  • Published : 2024.05.23

Abstract

본 연구에서는 커널 퍼저인 Syzkaller 를 사용하여 리눅스 커널의 네트워크 서브시스템을 퍼징하고 그 결과를 분석하여, 높은 커버리지를 달성하기가 왜 어려운지 분석하고 이를 개선하기 위한 방법들을 제안한다. 첫 번째 실험에서는 TCP 및 IPv4 소켓과 관련된 시스템 콜 및 매개변수만 허용하여 리눅스 커널 네트워크 퍼징을 진행하고, 두 번째 실험에서는 Syzkaller 가 지원하는 모든 시스템 콜을 포함하도록 범위를 확장한다. 첫 번째 실험 결과, 퍼징 시작 약 55 시간만에 TCP 연결 수립에 성공하였다. 두 번째 실험 결과, 첫 번째 실험보다 전반적인 커버리지와 라우팅 서브시스템의 커버리지는 개선되었으나 TCP 연결 수립에는 실패하였다. TCP 연결 수립을 위해서는 서버의 IP 주소 및 포트번호를 클라이언트가 무작위 입력 생성을 통해 맞혀야 하는데, 이 과정에서 시간이 오래 걸리기 때문에 연결 수립이 쉽게 이루어지지 않는 것으로 분석된다. 추가적으로, 본 연구에서는 TCP 연결 수립을 쉽게 하기 위한 하이브리드 퍼징, IP 패킷 포워딩 허용, 패킷 description 없이 퍼징 등 Syzkaller 를 이용하여 리눅스 커널 네트워크 서브시스템을 더 효율적으로 퍼징할 수 있는 방법들을 제안한다.

Keywords

Acknowledgement

이 논문은 정부(과학기술정보통신부)의 재원으로 한국연구재단의 지원을 받아 수행된 연구임(No. RS-2023-00220985). 본 연구는 과학기술정보통신부 및 정보통신기획평가원의 대학 ICT 연구센터육성지원사업의 연구결과로 수행되었음 (IITP-2024-2021-0-02048) 이 논문은 정부(과학기술정보통신부)의 재원으로 한국연구재단의 지원을 받아 수행된 연구임(NRF-2022R1A2C2011221)

References

  1. "google/syzkaller." Google, Apr. 19, 2024. Accessed: Apr. 19, 2024. [Online]. Available: https://github.com/google/syzkaller 
  2. "syzkaller-bugs - Google Groups." Accessed: Apr. 19, 2024. [Online]. Available: https://groups.google.com/g/syzkaller-bugs 
  3. "syzkaller/docs/linux/external_fuzzing_network.md at master.google/syzkaller," GitHub. Accessed: Apr. 19, 2024. [Online]. Available: https://github.com/google/syzkaller/blob/master/docs/linux/external_fuzzing_network.md 
  4. A. Konovalov, "🔍 Looking for Remote Code Execution bugs in the Linux kernel," Andrey Konovalov. Accessed: Apr. 19, 2024. [Online]. Available: https://xairy.io/articles/syzkaller-external-network 
  5. "syzkaller/docs/pseudo_syscalls.md at master.google/syzkaller," GitHub. Accessed: Apr. 19, 2024. [Online]. Available: https://github.com/google/syzkaller/blob/master/docs/pseudo_syscalls.md 
  6. "IP Sysctl - The Linux Kernel documentation." Accessed: Apr. 20, 2024. [Online]. Available: https://www.kernel.org/doc/html/v6.6/networking/ip-sysctl.html 
  7. V.-T. Pham, M. Bohme, and A. Roychoudhury, "AFLNET: A Greybox Fuzzer for Network Protocols," in 2020 IEEE 13th International Conference on Software Testing, Validation and Verification (ICST), in ICST'20. Oct. 2020, pp. 460-465. doi: 10.1109/ICST46399.2020.00062. 
  8. R. Natella, "StateAFL: Greybox fuzzing for stateful network servers," Empir. Softw Engg, vol. 27, no. 7, Dec. 2022, doi: 10.1007/s10664-022-10233-3.