
CVE-2017-5123 커널 취약점 재현: waitid 시스템 콜 메모리 쓰기를 통한 로컬 권한 상승, Linux 4.13에서 Docker 컨테이너 탈출로 시연됨.
참고: 이 저장소의 코드는 kata containers와 같은 보안 팟 샌드박스 기술의 격리를 시연하기 위한 것이며, 어떤 플랫폼을 공격하려는 의도가 아닙니다.
(gdb) p &(((struct task_struct *)0)->fs)
(gdb) p &(((struct task_struct *)0)->parent)
(gdb) p &(((struct fs_struct *)0)->root)
업스트림 커널의 waitid 구현은 정보 결과를 복사할 대상 대상을 제한하지 않았습니다. 이로 인해 로컬 사용자가 보호된 커널 메모리에 쓰기 작업을 수행할 수 있으며, 이는 권한 상승으로 이어질 수 있습니다.
버그는 2017-05-21에 도입되었고 2017-10-09에 수정되었습니다.
이 CVE는 4.13 브랜치의 이후 릴리스 및 최신 메인라인 커널에서 이미 수정되었습니다. 그러나 유사한 CVE가 존재하여 권한 상승을 허용할 수 있습니다. 이 CVE 자체는 실제로 유명한 dirty cow, CVE-2016-5195 와 매우 유사합니다.
CVE-2017-5123.c는 이 취약점을 사용하여 /proc/sys/vm/mmap_min_addr 값을 변경합니다. 그런 다음 리눅스 커널이 셸코드를 호출하여 호스트 루트의 파일 접근 권한을 획득하도록 합니다.