
Baron Samedit 취약점의 시각화, 퍼징, 익스플로잇 및 패치
Baron Samedit 취약점의 시각화, 퍼징, 익스플로잇 및 패치
보고서 보기 »
Francesco Marchiori
·
Alessandro Lotto
모든 Unix 기반 운영체제는 일시적인 루트 권한 상승이 필요한 사용자를 위해 sudo 명령어를 제공합니다. sudo는 중요한 기능을 제공하지만, 악용될 경우 시스템의 보안과 신뢰성을 손상시킬 수 있습니다. 운영체제 내에서의 중요성 때문에 sudo의 소스 코드는 빈번한 테스트와 코드 리뷰를 거칩니다. 이러한 과정에서 약 10년 동안 숨겨져 있던 힙 기반 오버플로우 취약점(CVE-2021-3156)이 발견되었습니다. 버그 및 취약점 발견에 가장 많이 사용되는 기술 중 하나인 퍼징 기법조차도 이를 사전에 찾아내지 못했습니다. 본 논문에서는 버퍼 오버플로우 취약점부터 권한이 없는 사용자이거나 sudo 명령어 사용이 허용되지 않은 상태에서 루트 셸을 획득할 수 있는 방법까지, CVE-2021-3156 sudo 취약점을 상세히 분석합니다.
Visualization 디렉토리에는 백슬래시 문자 유무에 따라 인수가 어떻게 파싱되는지 시각화하고, 환경 변수가 힙 레이아웃에 미치는 영향을 분석하여 제안된 익스플로잇의 구조를 더 잘 이해하기 위해 사용한 스크립트가 몇 개 있습니다.
Fuzzing 디렉토리에는 취약한 버전의 sudo에서 퍼징을 수행하는 데 필요한 파일들이 있습니다. 또한, AFL이 바로 작동하지 못하게 하는 문제들을 해결하여 퍼징을 수행하는 방법과 취약점이 어떻게 약 10년 동안 숨겨졌는지 설명되어 있습니다.
Exploit 디렉토리에는 다른 취약한 sudo 버전에서 공격을 수행하는 데 필요한 파일들이 있습니다. 우리는 환경 변수를 통한 메모리 채우기를 이용해 힙 펭 슈이(heap feng shui)를 수행하고 service_user 객체의 이름을 덮어써서 라이브러리를 로드하는 대신 자체 코드를 실행합니다.
Patch 디렉토리에는 오버플로우의 동작을 시뮬레이션하고 우리가 작성한 추가 코드로 패치하는 overflow_simulation_patch.c 스크립트가 있습니다. Sudo 프로젝트 개발자들은 코드 자체 대신 취약점 흐름을 수정하기로 결정했기 때문에, 우리는 다른 접근 방식을 보여주고 몇 줄의 코드만으로 어떻게 수정할 수 있는지 제시합니다.