TA 팀이 “PHP 스택 버퍼 오버플로 취약점”을 분석하여 작성한 취약점 보고서
CVE-2023-3824는 PHAR(PHP 아카이브) 파일을 읽을 때 발생하는 PHP의 스택 버퍼 오버플로 취약점입니다. 이 취약점으로 인해 공격자는 영향을 받는 시스템에서 메모리 손상을 일으키거나 원격 코드를 실행할 수 있습니다. 이 위험을 완화하려면 PHP를 최신 버전으로 업데이트하고 PHAR 파일을 처리할 때 적절한 유효성 검사를 수행하는 것이 중요합니다.
Tags: PHP, Stack buffer overflow, Remote Code Execution, CVE-2023-3824, phar archive
1. 개요
8.0.30 이전의 PHP 버전 8.0.*, 8.1.22 이전의 8.1.*, 8.2.8 이전의 8.2.*에서 발견된 취약점입니다. PHP가 PHAR(PHP Archive) 파일을 처리하는 방식과 관련이 있습니다. 구체적으로, PHAR 디렉토리 항목을 읽는 동안 길이 검사가 충분하지 않으면 스택 버퍼 오버플로가 발생할 수 있습니다. 이 취약점은 메모리 손상 또는 더 중요한 원격 코드 실행(RCE)을 일으킬 가능성이 있는 공격 입니다.
2. 공격 유형
해당 취약점은 PHP에서 악성 Phar 파일을 생성하고 버퍼 오버플로 취약점을 발생시킵니다.
1. 새 PHP파일을 생성하고 코드를 추가합니다.
2. 악성 Phar 파일을 생성하기 위해 PHP 스크립트를 실행 시킵니다.
위의 스크립트가 실행되면 버퍼 오버플로 및 오버리드가 트리거되어 해당 취약점이 발생됩니다.
해당 취약점을 악용하는 것은 어렵고 대상 어플리케이션에 크게 의존하지만, 스택 정보 누출, 버퍼 오버플로를 조합하여 공격할 수 있기 때문에 조심 해야 합니다.
EX)
Valgrind(리눅스 기반의 오픈소스 DBI 도구)에서 해당 코드가 실행 된 경우, 문제 사항이 표시됩니다.
strlen() 함수가 d_name 버퍼를 제대로 NUL 종료하지 않아서 오버리딩이 시작되는 문제 사항이 표시됩니다.
3. 대응
CVE-2023-3824 취약점에 대한 보편 적인 대응 방법은 다음과 같습니다:
- PHP 버전 최신 보안 패치 업데이트
- 취약점이 발생하는 Phar 파일 관련 기능 검토 및 보안
- 서버 차원에서 접근 통제 강화 및 WAF 기능을 통해 데이터 차단
4. 결론
CVE-2023-3824는 심각한 보안 위험을 초래할 수 있는 PHP의 심각한 취약점입니다. 이 취약점을 악용하면 공격자가 원격 코드를 실행하거나 스택 버퍼 오버플로를 활용하여 메모리 손상을 일으킬 수 있습니다. 이러한 위험을 완화하려면 PHP를 최신 패치 버전으로 업데이트하고 Phar 파일을 처리할 때 엄격한 보안 관행을 구현하는 것이 중요합니다.