포스팅 내용

국내외 보안동향

새 PHP 코드 실행 공격, 워드프레스 사이트들 위험에 빠트려

New PHP Code Execution Attack Puts WordPress Sites at Risk


Secarma의 보안 연구원인 Sam Thomas가 이전에 위험도가 낮은 것으로 간주 된 기능을 이용해 해커가 PHP 프로그래밍 언어의 치명적인 역직렬화 (deserialization)취약점을 쉽게 트리거링 할 수 있는 새로운 익스플로잇 기술을 발견했습니다.


이 새로운 기술은 인기있는 컨텐츠 관리 시스템인 워드프레스와 Typo3 등으로 만들어진 웹사이트를 포함한 수 십만개의 웹 어플리케이션을 원격 코드 실행 공격에 노출 되었습니다.


PHP 역직렬화 또는 오브젝트 인젝션 취약점은 2009년 처음 문서화 되었으며, 이는 공격자가 unserialize() PHP 함수에 악성 입력을 제공해 여러 종류의 공격을 실행할 수 있도록 합니다.


Serialization은 데이터 오브젝트를 순수 문자열 형태로 변환하는 프로세스이며, unserialize 함수는 프로그램이 문자열을 다시 오브젝트로 재생성할 수 있도록 합니다.


연구원은 공격자가 Phar 아카이브에 위험도 낮은 함수를 사용해 unserialize() 함수를 사용하지 않고도 역직렬화 공격을 촉발시켜 다양한 공격을 실행할 수 있는 것을 발견했습니다.


Phar 파일은 PHP의 아카이브 포맷으로써 메타데이터를 serialized 포맷으로 저장하며 파일 작업 함수 (fopen, file_exists, file_get_contents 등)가 아카이브 파일에 접근을 시도할 때 마다 unserialized 됩니다.


“이는 "file_exists"와 같은 직접적인 파일 작업과 XML 내의 외부 엔티티 프로세싱 중 발생하는 것과 같은 비직접적인 작업(XXE 취약점이 악용될 때) 모두에 해당됩니다.”


워드프레스 사이트에 대한 PHP 역직렬화 공격



<이미지 출처: https://cdn2.hubspot.net/hubfs/3853213/us-18-Thomas-It's-A-PHP-Unserialization-Vulnerability-Jim-But-Not-As-We-....pdf>


지난 주 Black Hat 컨퍼런스에서 공개 된 논문에서 Thomas는 이 공격이 워드프레스 사이트들에서 어떻게 실행 되어 웹 서버 전체를 제어할 수 있는 권한을 가질 수 있는지 시연했습니다.


이 취약점의 성공적인 악용을 위해 공격자가 해야할 일은 악성 페이로드 오브젝트를 포함한 유효한 Phar 아카이브를 타겟의 로컬 파일 시스템에 업로드하고, "phar://"을 이용해 파일 작업 함수가 여기에 접근하도록 만드는 것입니다.


또한 Thomas는 공격자가 첫번째 바이트 100개를 변조함으로써 Phar 아카이브를 유효한 JPEG 이미지로 변환시켜 이 JPEG 이미지를 이용해 취약점을 악용할 수 있는 것도 발견했습니다.


“워드프레스 내의 특정 썸네일 기능이 동작하는 방식을 통해, 권한이 있는 공격자는 미디어 아이템을 업로드 및 변조해 “file_exists”에서 사용 된 파라미터를 제어할 수 있는 충분한 권한을 얻어 unserialization을 촉발시킬 수 있게 됩니다.”


특수하게 제작 된 썸네일이 타겟 워드프레스 서버에 업로드 되면, 공격자는 또 다른 기능을 사용해 "phar://" 스트림 랩퍼를 통해 동일한 이미지 파일을 Phar 아카이브로써 호출하여 결국 프로그램이 메타데이터를 역직렬화 할 때 임의의 코드를 실행할 수 있게 됩니다.


“이 취약점은 이미지 파일로 전달 된 데이터의 안전하지 않은 비직렬화로 인해 발생하며, '/wpincludes/post.php'스크립트 내 'wp_get_attachment_thumb_file’ 함수 내 ‘phar://’ 스트림 래퍼를 통해 실행됩니다.”


“게시물을 생성/편집할 수 있는 인증된 원격의 공격자는 취약한 시스템에서 악성 이미지를 업로드하고 임의의 PHP 코드를 실행할 수 있습니다.”


Thomas는 작년 초 이 취약점을 워드프레스 보안 팀에 제보했으며, 회사는 문제를 인정했습니다.


하지만 회사가 발행한 패치는 문제를 완전히 해결하지 못했습니다.


Thomas는 2018년 6월 9일 이 취약점을 Typo3에 제보했으며, 이 문제를 7.6.30, 8.7.17, 9.3 버전에서 해결했습니다.


이 취약점에 대한 자세한 내용은 PDF에서 확인하실 수 있습니다.





출처 :

https://thehackernews.com/2018/08/php-deserialization-wordpress.html

https://cdn2.hubspot.net/hubfs/3853213/us-18-Thomas-It's-A-PHP-Unserialization-Vulnerability-Jim-But-Not-As-We-....pdf

티스토리 방명록 작성
name password homepage