주 단위 웹 공격 추이
주 단위 웹 공격 추이를 통해 웹 공격이 어느 시기에 많이 발생했는지 확인할 수 있습니다. 이를 바탕으로 공격이 많은 시기에 미리 웹 공격으로부터 예방 및 대응책을 마련할 수 있습니다.
아래 그래프는 2024년 6월을 기준으로 AIWAF에서 탐지된 웹 공격들을 보여주고 있습니다.
2024년 6월에는 일 평균 20만 건 이상의 공격이 탐지되었으며, 특히 14일에 가장 많은 공격이 발생한 것을 확인 할 수 있습니다.
14일에 발생한 취약점중 가장 많은 공격 시도된 SQL Injection의 경우 저희 AIWAF 내 가장 많은 탐지 조건을 가지고 있습니다. 하지만 SQL Injection 공격의 경우 새로운 공격 유형 및 우회 방법이 많기 때문에 항시 모니터링을 진행하고 있습니다.
공격 유형별 웹 공격 동향
탐지 로그 기반으로 공격 유형별 웹 공격 동향을 통해 한 달 동안 어떤 공격이 많았는지 확인할 수 있습니다. 이를 바탕으로 기본적인 웹 공격 대응 가이드라인을 수립함으로써 해당 공격 유형에 대한 예방 및 대응책을 마련할 수 있습니다.
아래 그래프는 2024년 6월을 기준으로 AIWAF에서 탐지된 웹 공격들을 보여주고 있습니다.
SQL Injection(38.61%) 공격 유형이 가장 많았으며, Default page(20.72%), app weak(19.56%), Directory Traversal(8.2%) 순으로 탐지 되었습니다.
SQL Injection은 OWASP 에서 1위에 랭크되어 있는 만큼 가장 다양하며 위험한 공격입니다. 사용자 요청에 따라 동적으로 데이터를 생성하는 SQL 구문에 악의적인 SQL 문을 강제로 삽입하는 공격으로 취약한 어플리케이션의 경우 비정상으로 인증을 받거나 SQL 결과값을 리턴받을 수 있습니다. 다음과 같은 구문이 쿼리값에서 발생하였다면 공격을 의심해보시기 바랍니다.
Default page는 정상적이지 않은 경로로 파일접근을 시도하거나 인가된 파일을 우회해서 해당 파일에 직접적으로 접근하는 경우가 이에 해당합니다. 일반적으로 웹서비스에서 사용되는 파일들이 아니기 때문에 부정한 의도로 인한 접근시도를 의심해보시기 바랍니다.
최근 3개월 웹 공격 추이 그래프 요약
3월
4월
5월
공격자 IP Top 30
취약점 분석 보고서
[PHP-CGI Argument Injection]
1. 개요
최근 이슈가 된 Windows에서 실행되는 Apache 및 PHP-CGI에서 발생한 Argument Injection 및 Remote Code Execution 취약점에 대해 분석을 진행하였습니다.
이미지 출처 : https://portswigger.net/daily-swig/php-package-manager-component-packagist-vulnerable-to-compromise
2. 공격 유형
해당 취약점은 Windows에서 실행되는 특정 버전의 PHP 기반 서비스를 사용 시 발생하는 취약점으로, watchTowr에서 해당 취약점에 대한 분석 및 Exploit 정보를 공개하면서 크게 이슈가 되었습니다.
PHP-CGI 서비스의 경우 HTTP 요청을 구문 분석하여 php 스크립트에 전달하는데, 기본적으로 Query 문자열의 경우 https://test.com/test=test 와 같은 요청이 php.exe cgi.php test=test 와 같은 형태로 실행됩니다.
해당 사실을 악용하여 임의 명령을 삽입하는 공격을 막기 위해 PHP-CGI에서는 공격에 사용되는 문자들에 대해 Escape를 진행하는데, 공격자는 Windows에서 PHP-CGI가 실행 될 시 특정 문자를 임의 문자로 변환하는 Win32 API 함수의 "Best-Fit Mapping" 기능을 통해 헤댕 Escape 작업을 우회할 수 있다는 사실을 발견하였습니다.
아래 문자열은 실제 하이픈(-) 문자와 소프트 하이픈(0xAD) 문자로 구성된 호출 문자열로서, 겉보기에는 차이점이 보이지 않으나 HxD를 통해 16진수 형태로 데이터를 확인해보면 다른 문자열임을 확인할 수 있습니다.
php.exe의 실제 하이픈(-) 문자를 활용한 정상 호출과 소프트 하이픈(0xAD) 문자를 활용한 악성 호출.
Hxd로 확인한 호출 비교.
소프트 하이픈 문자는 실제 하이픈 문자가 아니기에 CGI 핸들러에서는 Escape되지 않지만, 앞에서 설명했던 "Best-Fit Mapping" 기능으로 인해 PHP에서는 실제 하이픈 문자로 해석되어 임의 명령 인수를 삽입할 수 있습니다.
따라서 RCE 공격을 수행할 수 있도록 설계된 Argument를 삽입하여 악성 PHP 코드를 실행하도록 유도합니다.
3. 대응 방안
다행히 PHP에서는 빠르게 패치 버전을 발표하여 PHP 버전을 8.1.29, 8.2.20, 8.3.8 버전으로 업데이트 진행 시 해당 취약점에 대해 대응이 가능합니다.
저희 AIWAF 제품에서는 825: Webshell 패턴에서 악성 PHP 코드가 포함된 요청을 기본적으로 탐지하기 때문에 해당 공격 또한 정상 탐지되고 있으나, 소프트 하이픈이 삽입된 공격 구문에 대한 추가적인 패턴이 필요할 것으로 보여 추가 분석 및 패턴 개발 단계에 있습니다.
4. 결론
Windows에서 실행되는 PHP-CGI에서 발생한 Argument Injection 공격의 경우 간단한 방법으로 손쉽게 악용이 가능한 취약점이며, 아직도 많은 곳에서 Apache 등 PHP 기반 서비스를 사용하기 때문에 그 영향도가 높아 빠르게 최신 버전으로 업데이트가 필요합니다.
저희 AIWAF 제품에서는 PHP-CGI에서 발생하는 취약점들에 대해 패턴을 개발하여 대응하고 있으며, 앞으로도 발견되는 관련 취약점들에 대해서도 신속하게 대응할 예정입니다.
5. 참고 자료
https://nvd.nist.gov/vuln/detail/CVE-2024-4577
https://labs.watchtowr.com/no-way-php-strikes-again-cve-2024-4577/
https://github.com/watchtowrlabs/CVE-2024-4577
최신 취약점 CVE 현황
1. 고위험 취약점 현황 (2024.06)
2. 고위험 취약점 설명