[논문] 리눅스 IOCTL 조사: 소스 기반 리눅스 커널 제어 코드 영역 데이터베이스

발행: (2026년 6월 9일 AM 10:28 GMT+9)
4 분 소요
원문: arXiv

개요

ioctl 시스템 콜은 Linux의 범용 디바이스 제어 인터페이스입니다. 사용자 공간 프로그램이 디바이스 노드를 열고 드라이버에 숫자형 명령 코드와 인자 버퍼를 전달하면, 드라이버는 해당 코드가 의미하는 바에 따라 하드웨어를 설정하거나 상태를 읽어오거나 커널 안팎으로 데이터를 이동시킵니다. 드라이버는 수천 개에 달하는 이러한 명령을 직접 정의하고, 커널 컨텍스트에서 인자를 파싱합니다. 이 때문에 ioctl 핸들러는 커널 내 가장 넓고 일관성 없는 로컬 공격 표면 중 하나가 됩니다. 인자 길이를 검증하지 않고 신뢰하는 핸들러는 커널 메모리를 범위 밖으로 읽거나 쓸 수 있으며, 명령 공간은 중앙에서 관리되지 않습니다. 우리는 이러한 표면을 Linux IOCTL Census라는 소스 기반·쿼리 가능한 인벤토리로 제시합니다. allmodconfig 빌드로 169개의 서브트리에서 878개의 모듈을 컴파일하고, 단일 결정적 libclang 패스를 커널 소스에 적용해 586개의 ioctl 디스패치 진입점, 1,289개의 디코딩된 _IOC 명령 코드, 3,583개의 제어 입력 싱크, 1,298개의 권한 게이트를 복원했습니다. 두 번째 패스에서는 커널 자체 문서화된 위협 모델을 쿼리 가능한 컬럼으로 인코딩해, 권한이 없는 ioctl 표면(특권 없는 접근에 대한 상한)과 강력한 권한 게이트가 차단하는 부분을 구분했습니다. 우리는 이 인벤토리를 최근 22개의 트리 내 ioctl CVE와 백테스트했으며, 구조적 계층을 오픈 데이터로 공개합니다. 또한 Windows IOCTL Census와 스키마를 공유해 하나의 쿼리로 두 운영체제를 모두 탐색할 수 있게 했습니다.

핵심 기여

이 논문은 다음 분야의 연구를 제시합니다:

  • cs.CR
  • cs.SE

방법론

자세한 방법론은 전체 논문을 참고하십시오.

실용적 함의

이 연구는 cs.CR 분야의 발전에 기여합니다.

저자

  • Michael J. Bommarito

논문 정보

  • arXiv ID: 2606.10290v1
  • 분류: cs.CR, cs.SE
  • 발표일: 2026년 6월 9일
  • PDF: Download PDF
0 조회
Back to Blog

관련 글

더 보기 »