
웹 개발 언어 PHP의 보안 취약점이 공개되자 글로벌 소프트웨어 개발 플랫폼 깃허브에 관련 공격 코드가 빠르게 유포되고 있다. 안랩은 미검증 코드를 실행할 경우 오히려 또 다른 보안 위협에 노출될 수 있다고 경고했다.
취약점 공개 직후 저장소 급증
24일 안랩의 보안위협분석조직 ASEC이 공개한 자료에 따르면 깃허브에서 'PHP2Shell'을 검색해 확인한 상위 100개 저장소(포크 제외) 가운데 99개가 관련 취약점을 다뤘다. PHP2Shell은 공격자가 별도 인증 없이 서버에서 악성 명령을 실행할 수 있는 PHP 보안 취약점 2건(CVE-2026-109618·CVE-2026-109619)을 통칭하는 이름이다.
PHP는 홈페이지와 온라인 쇼핑몰, 게시판 등 웹서비스를 개발하는 데 널리 쓰이는 프로그래밍 언어다. 이용자가 웹사이트에 로그인하거나 상품을 주문하면 서버에서 PHP로 작성된 프로그램이 요청을 처리하고 데이터베이스(DB)와 정보를 주고받는다. 국내에서 널리 사용하는 홈페이지 제작 도구인 워드프레스와 그누보드도 PHP를 기반으로 작동한다.
이번 취약점은 개별 웹사이트가 아닌 PHP 자체에서 발견됐다. 공격자가 별도 인증 없이 서버에서 임의 코드를 실행할 수 있는 문제다. 웹사이트를 안전하게 개발했더라도 취약한 PHP 버전을 사용하면 공격에 노출될 수 있다. PHP 개발진은 취약점 위험도를 '심각'으로 분류했다.
안랩이 저장소 이름과 설명 등을 기준으로 분석한 결과 취약점 점검·완화·탐지에 활용되는 방어 목적 저장소는 46개였다. 공격 가능성을 재현하는 개념증명(PoC)과 실습 환경 관련 저장소는 36개로 집계됐다. 저장소 수는 방어 쪽이 더 많았지만 관심도에서는 정반대 결과가 나타났다.
깃허브에서 이용자들이 관심 있는 프로젝트에 표시하는 '스타'는 분석 대상 전체에서 1394개였다. 이 가운데 83%인 1158개가 PoC 저장소에 몰렸다. 방어 목적 저장소가 받은 스타는 총 148개에 그쳤다. 상위 두 PoC 저장소가 전체 스타의 68%를 차지했다.
다만 안랩은 저장소에 게시된 코드를 직접 검증한 것이 아니라 이름과 설명, 주제 등을 기준으로 분석했다고 설명했다. 따라서 저장소의 실제 기능이나 공격 성공 여부는 확인되지 않았다.
가짜 공격코드·방어 도구도 위험…패치가 우선
공개된 코드가 모두 정상적으로 작동하는 것은 아니다. 안랩에 따르면 분석한 PoC 저장소 27개 중 21개는 스타가 10개 미만이었다. 일부 저장소는 실제 원격코드 실행에 성공했다고 주장했지만 다른 저장소에는 재현에 실패했다는 기록도 있었다. 인기 저장소의 설명을 그대로 복제한 사례도 확인됐다.
보안을 위해 내려받은 코드가 오히려 공격 통로가 될 가능성도 있다. 공격 재현 코드를 가장해 악성코드를 유포하거나 관리자 권한으로 실행하는 방어용 스크립트에 악성 기능을 숨길 수 있기 때문이다. 안랩은 코드 출처와 내용을 확인하지 않은 채 실행하는 행위를 경계했다.
실제 공격 정황도 보고됐다. 해외 보안업체 워치타워는 이달 21일 자체 공격 탐지용 서버망에서 이번 취약점의 악용을 관찰했다고 발표했다. 다만 안랩이 분석한 깃허브 저장소의 코드가 실제 공격에 사용됐는지는 확인되지 않았다.

안랩은 PHP 운영 버전부터 확인하고 8.2.35, 8.3.36, 8.4.27, 8.5.12 등 보안패치가 적용된 버전으로 업데이트할 것을 권고했다. 즉시 업데이트하기 어려운 서버는 일부 기능을 비활성화하는 임시 조치를 검토할 수 있지만 완전한 해결책은 아니다.
이미 외부에 노출됐던 서버는 비정상적인 요청이나 의심 파일 등 침해 흔적도 점검해야 한다. 안랩은 "근본적인 해결책은 PHP를 수정 버전으로 업데이트하는 것"이라며 출처가 불분명한 공개 코드는 격리된 환경에서 검증한 뒤 사용하도록 권고했다.
강준혁 기자
Copyright © 블로터