보안동향

최신 보안정보를 신속하게 전해드립니다.

[보안취약점] Nginx 서버의 PHP 결함으로 원격 코드 실행 취약점 발견

2019-10-29

Nginx서버에서 PHP 기반의 웹서버를 실행 중 PHP-FPM 기능의 특정 설정이 되어 있는 경우 “CVE-2019-11043” 취약점으로 인해 공격자가 원격 코드를 실행할 수 있다.

 

[이미지 출처: thehackernews.com]

 

해당 취약점은 필드에서는 흔하지 않는 특정  PHP-FPM 구성의 웹 서버에 영향을 미친다. PHP-FPM란 PHP 프로그래밍 언어로 작성된 스크립트에 대하여 고효율 처리를 해주는 PHP FastCGI 환경이다.

취약점의 원인은 PHP-FPM 모듈의 "env_path_info"언더 플로우 메모리 손상 문제이며, 이를 다른 문제와 함께 연결하면 공격자가 취약한 웹 서버에서 원격으로 임의 코드를 실행할 수 있다.

 

취약한 Nginx 및 PHP-FPM 설정은 다음과 같다.

[그림1 : 취약한 Nginx 및 PHP-FPM 설정]

 

fastcgi_split_path_info 지시어를 정의하는 샘플 정규식은 split 함수가 결국 경로 정보를 비워 두는 방식으로 개행 문자를 사용하여 조작할 수 있다.

다음으로, FPM 코드의 env_path_info에 실제로 서버에 파일이 있는지 확인하지 않고 PHP 스크립트 경로와 동일한 접두사가 있다고 가정하는 산술 포인터가 있으므로 공격자가 데이터를 덮어쓸 수 있다. 타겟팅 된 웹 서버에 특수하게 조작된 URL을 요청하여 메모리에 저장하는 방식이다.

[그림2 : PoC 코드  실행 ]

 

대상 서버의 PHP-FPM 구성 파일의 맞는 php.ini 값을 추가함으로써 공격자는 웹쉘을 사용하여 임의 코드를 실행할 수 있다.

[그림3 : 원격 코드 실행 ]

 

 

[권고 사항]

해당 취약점은 특정한 웹서버를 사용해야 하고, 언어, 버전 등 특정한 설정을 충족해야 하기 때문에 공격이 우려되는 서버는 많지 않을것으로 추정된다. 하지만 이미 공격자들은 조건을 충족하는 웹 사이트에 대해 검색을 시작하고 공격을 준비하고 있을 것이다. 따라서 사용자는 취약 할 수 있는 설정을 변경하거나, PHP를 최신버전인 7.3.11 또는 7.2.24로 업데이트 할 것을 권고한다.



[참조]

https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-11043

https://github.com/neex/phuip-fpizdam

https://thehackernews.com/2019/10/nginx-php-fpm-hacking.html

 

 

보안관제센터 MIR Team

목록