디바이스 드라이버 취약점
517
작성한 질문수 2
안녕하세요
모듈 프로그래밍을 통해 디바이스 드라이버를 임의로 하나 만들 수 있다는 것을 이해했습니다
특히 디바이스 드라이버가 처리할 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이 아니라 간접적인 커널 함수 호출을 이용해 취약점을 트리거 해야 하는 경우도 존재합니다.
감사합니다.
강의 들으며 정리한 글을 블로그에 공개로 올려도 될까요?
0
103
2
cred 구조체에 __randomize_layout이 적용된건가요?
0
90
1
ppt자료 문의
0
125
2
빌드환경 및 커널소스의 버전
0
152
1
Stack based BOF 강의에서 질문입니다.
0
199
2
kaslr 우회 기법에서 commit_creds, prepare_kernel_cred의 offset을 구하는 과정 질문
0
228
1
CTF 참가 시 전문 분야
0
328
1
SMAP 우회에서 궁금한게 하나 있습니다.
0
418
2
KADR 우회에서 init파일이 없는 경우는 어떻게 하나요?
0
473
1
KADR 우회에서 init파일이 없는 경우는 어떻게 하나요
0
317
1
여전히 해결책 없는 build_result
0
433
1
KASLR 강의에서 주어진 환경에서는 /proc/kallsyms 확인 못하는 것이 맞나요?
0
622
1
build_result가 안보입니다
0
298
1
kernel stack pivoting에서 gadget 관련 질문드립니다.
0
514
1
안녕하세요 수강중 궁금한 것이 있습니다.
0
581
2
pwndbg가 커널에 attach는 되는데 디스어셈코드나 레지스터 표시가 안됩니다.
0
591
1
가젯에 대해 이해가 잘 안됩니다.
0
615
1
Kernel KPTI 적용시 영향?
0
664
1
qemu 스크립트 실행시 Kernel panic이 발생합니다.
0
895
2
Kernel UAF
0
659
1
디버깅 방법
0
948
3
강의 자료 문의
0
383
1
boot.sh 실행시
0
368
1
Kernel Debugging
0
417
1





