roobrief개발자를 위한 IT 뉴스
검색

AI개발·릴리스

AI가 뚫은 20년 된 레거시 코드, PHP2Shell 사태와 긴급 대응

개발자가 짠 애플리케이션 코드가 실행되기도 전에 웹 서버 권한이 탈취될 수 있어, PHP 런타임 자체 패치와 설정 변경이 시급하다.

2026년 10월 21일 PHP 공식 개발팀이 핵심 인터프리터의 메모리 관리 결함을 해결한 긴급 보안 릴리스를 배포했다. 보안 업계에서 ’PHP2Shell’로 이름 붙인 이 취약점은 두 건(CVE-2026-109618, CVE-2026-109619)으로 나뉘며, 취약점 위험도 평가 지표인 CVSS v4.0에서 9.2점을 기록한 치명적인 원격 코드 실행 결함이다. 원격 코드 실행은 공격자가 네트워크 밖에서 대상 서버에 임의 명령을 실행하는 형태를 뜻한다.

이번 사태가 ’블랙 옥토버’라는 이름으로 불리며 보안 업계에 큰 충격을 준 이유는, 취약점의 발굴과 실제 공격 양쪽 모두에 프론티어 AI(가장 앞선 성능의 AI 모델)가 실전 배치되었기 때문이다. 클라우드플레어와 보안 연구진의 분석에 따르면, 공식 패치가 배포되기도 전에 고도화된 AI 모델이 생성한 익스플로잇 코드가 전 세계 웹 서버를 무차별 스캔하며 침투를 시도했다. 이에 따라 미 사이버보안국(CISA)은 이 취약점군을 알려진 악용 취약점(KEV) 목록에 즉시 등록하고 긴급 패치를 권고했다. 배후에 특정 국가 기반 해킹 조직이 체계적으로 개입했는지는 아직 확인되지 않았다.

프론티어 AI는 어떻게 20년 묵은 PHP 코어에서 제로데이를 찾아냈나

이번에 발견된 결함은 PHP 5.x 시절부터 20년 가까이 유지되던 핵심 C 언어 인터프리터 코드 안에 숨어 있었다. 그동안 수많은 보안 감사 도구와 사람의 정밀 검토를 거쳤음에도, 정상적인 요청 흐름에서는 잘 드러나지 않는 예외 처리 경로였기에 오랜 시간 방치되었다.

코드베이스 전체를 장기 기억 형태로 맥락화할 수 있는 프론티어 AI 모델이 등장하면서 상황이 바뀌었다. 대규모 C 소스코드에서 비정상적인 종료 분기와 메모리 할당 상태를 추적하는 자율 분석 에이전트가 투입되었고, 복잡하게 얽힌 상태 머신의 허점을 짚어 내며 그동안 가려져 있던 제로데이(알려지지 않은 취약점)를 짚어냈다. 인간 보안 연구자뿐 아니라 공격자 진영에서도 동일한 프론티어 AI를 악용해 공격 페이로드를 기계적으로 양산해 낼 수 있음을 입증한 셈이다.

PHP2Shell(CVE-2026-109618·109619)의 작동 원리와 파급력

두 취약점은 공통적으로 PHP 인터프리터가 에러 발생 시 호출 스택을 건너뛰는 longjmp() 함수를 다루는 방식에서 발생한다.

CVE-2026-109618은 메모리 부족(OOM) 오류를 처리할 때 발생한다. longjmp()로 제어가 튕겨 나가면서 요청 관련 메모리가 미초기화 상태로 남게 되는데, 공격자가 조작된 패킷으로 OOM 상황을 고의 유도하면 미초기화 영역을 제어해 임의 코드를 실행할 수 있다.

CVE-2026-109619는 PHP에 기본 활성화되어 있는 파일 업로드 진행률 추적 기능(session.upload_progress.enabled)에서 비롯된 메모리 해제 후 재사용(UAF) 결함이다. 대용량 파일 업로드 중 치명적 에러가 터져 강제 점프가 일어나면, 이미 해제된 힙 메모리를 전역 포인터가 여전히 가리키고 있게 된다. 뒤이어 들어오는 요청이 이 메모리 블록을 덮어쓰면서 실행 흐름을 탈취당한다.

가장 치명적인 지점은 공격 성립 시점이다. 전통적인 웹 서버 구성인 Apache mod_php나 PHP-FPM, FrankenPHP 환경에서는 웹 서버가 HTTP 요청 본문을 파싱하고 엔진을 초기화하는 단계에서 취약점이 발동한다. 즉, 라라벨이나 워드프레스 같은 상위 애플리케이션에 작성해 둔 입력값 검증이나 방화벽 미들웨어가 동작하기도 전에 셸이 열린다.

지금 당장 운영 환경에서 점검하고 적용해야 할 조치

웹 서비스의 상당수를 차지하는 PHP 생태계 특성상, 프로덕션 환경의 빠른 점검이 필수적이다.

첫 번째 조치는 런타임 자체의 공식 패치 적용이다. 공식 개발팀이 배포한 최신 버전인 PHP 8.5.12, 8.4.27, 8.3.36, 8.2.35 중 현재 운영 라인에 맞는 버전으로 즉시 엔진을 판올림해야 한다.

엔진을 즉시 재배포하기 어려운 환경이라면 설정 수준의 임시 완화 조치를 먼저 취해야 한다. php.ini 설정 파일(또는 PHP-FPM 풀 설정)에서 파일 업로드 진행률 추적 옵션을 session.upload_progress.enabled = 0으로 변경하고 프로세스를 재시작하면 CVE-2026-109619의 침투 경로는 차단할 수 있다. 다만 이는 파일 업로드 기능과 연관된 한쪽 취약점만 막을 뿐이며, OOM 미초기화 결함인 CVE-2026-109618까지 막아 주지는 못하므로 조속한 엔진 업그레이드가 뒤따라야 한다.

공식 지원이 이미 종료된 PHP 7.x나 5.x 구형 환경을 여전히 운영 중인 레거시 서버라면 문제가 더 심각하다. 공식 보안 패치가 제공되지 않으므로, 컨테이너 격리 및 웹 방화벽(WAF)의 시그니처 차단 규칙에 기대거나 외부 인터넷 연결을 즉각 차단해야 한다.

앞으로 볼 것

프론티어 AI 모델이 레거시 코드의 맹점을 찾아내고 실전 익스플로잇을 합성하는 속도는 앞으로 더 빨라질 수밖에 없다.

방어자 입장에서도 인간의 패치 작성과 수동 배포 주기에만 의존해서는 폭발적으로 쏟아지는 자동화 공격을 따라잡기 어렵다. 오픈소스 생태계 전반에서 릴리스 전 단계에 AI 기반 심층 소스코드 감사를 기본 탑재하고, 위협 탐지와 가상 패치를 기계적으로 적용하는 자율 보안 파이프라인의 구축이 필수가 될 전망이다.

출처

출처: unit42.paloaltonetworks.com

← 목록