인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

박재유님의 프로필 이미지
박재유

작성한 질문수

리눅스 커널 해킹. A부터 Z까지

모듈 프로그래밍

디바이스 드라이버 취약점

작성

·

460

0

안녕하세요

모듈 프로그래밍을 통해 디바이스 드라이버를 임의로 하나 만들 수 있다는 것을 이해했습니다

특히 디바이스 드라이버가 처리할 system call 구현 부분에서 취약점을 넣는 방식으로 실습 및 테스트가 진행되는 것 같습니다.

 

궁금한 사항은, 흔히 "커널 취약점"이라고 부를 때

"디바이스 드라이버 취약점"과 동일한 표현인가요?

아니면 디바이스 드라이버 외에도 커널의 다른 부분에 취약점이 존재할 수 있나요? 있다면 어떤 종류가 있을까요? 

본 강의에서는 대부분 디바이스 드라이버 내부의 취약점만을 위주로 다루는 것이 맞나요?

답변 1

0

김현우님의 프로필 이미지
김현우
지식공유자

안녕하세요.

 

1. 모듈 프로그래밍을 통해 취약점이 존재하는 디바이스 드라이버를 커널에 등록한 후 취약점을 공격하는 방식은, 분석해야 할 코드의 범위를 제한할 필요가 있는 CTF 문제에서 주로 사용되는 방식입니다. 물론, 리얼월드에서도 모듈화된 디바이스 드라이버에 취약점이 존재할 가능성이 있습니다.

 

2. "디바이스 드라이버 취약점" 은 "커널 취약점"의 하위 개념입니다. 단순히 "디바이스 드라이버"에서 발생하는 취약점 외에도 각종 file system, 각 아키텍쳐 별 system call, eBPF, 네트워크 드라이버 및 서브 시스템 등 수 많은 부분에서 취약점이 발생할 수 있습니다.

 

3. 본 강의에서는 수강생분들께 linux kernel exploit의 기초 개념을 잡아드리기 위해, CTF 문제에서 사용되는, 가장 직관적인 "디바이스 드라이버 취약점" 을 베이스로 강의를 진행하고 있습니다.

다만, 강의의 내용과 리얼월드에서 발생하는 취약점간의 괴리가 크진 않습니다. 여러 종류의 디바이스 드라이버에서 사용되는 file_operations 구조체를 이용한 Interface 방식과 비슷하게, 커널의 각 부분에서는 다양한 XXX_operations 구조체를 이용해 유저와 간접적으로 커뮤니케이션을 진행하기 때문에, 강의에서 설명하는 exploit 방식과 큰 차이가 없다고 볼 수 있습니다. 이 부분은 커널의 주요 코드를 읽어보시면 쉽게 이해가 되실 것입니다.

물론, 일부 file system들은, 직접적인 user input이 아니라 간접적인 커널 함수 호출을 이용해 취약점을 트리거 해야 하는 경우도 존재합니다.

 

감사합니다.

박재유님의 프로필 이미지
박재유

작성한 질문수

질문하기