10년 묵은 PHP 결함이 AI 덕에 몇 시간 만에 ‘공격 무기’로? PHP2Shell·HTTP2Shell로 본 AI가 취약점 발견과 공격 도구 제작을 앞당기는 이유, 내 워드프레스·PHP·Node.js 사이트 버전표와 오늘 밤 30분 점검법을 초보도 쉽게

요즘 보안 업계에서 ‘PHP2Shell(php2shell)’, ‘HTTP2Shell(http2shell)’이라는 이름이 연달아 터지고 있습니다. 이름 끝의 ‘2Shell’은 “서버를 원격으로 조종하는 명령창(셸)까지 간다”는 뜻으로, 그만큼 위험하다는 표시입니다. 그리고 이번 소식의 진짜 핵심은 따로 있습니다. AI가 취약점을 찾는 속도와, 그것을 공격 도구로 만드는 속도를 동시에 끌어올리고 있다는 점입니다. 오늘은 공격 방법이 아니라 “무슨 일이고, 왜 빨라졌고, 내 사이트는 무엇을 점검해야 하는지”만 쉽게 정리해 봅니다.

PHP2Shell 타임라인
패치가 나오기 전부터 공격 시도가 관측됐다는 점이 이번 사건의 무서운 부분입니다.

1. 한눈에 보는 이번 사건

항목 PHP2Shell HTTP2Shell (Node2Shell)
어디의 문제? PHP 언어 엔진 자체 구글 Brotli 압축 해제 라이브러리
CVE 번호 CVE-2026-109618, CVE-2026-109619 CVE-2026-111497
영향 범위 PHP 5.4 ~ 미패치 8.5 (약 10년치) libbrotli 1.0.3 ~ 1.2.0을 쓰는 Node.js·Python 등
위험도 CVSS v4.0 9.2 (각각) 원격 코드 실행 가능성이 있는 메모리 오류
로그인 필요? 대부분 불필요 (앱 코드보다 먼저 처리됨) 압축된 요청·응답만으로 영향 가능
해결책 PHP 업데이트가 유일한 완전한 해결 런타임·라이브러리 업데이트

2. ‘~2Shell’이 대체 뭔가요?

쉽게 말해 “인터넷에서 요청 한 번 보냈을 뿐인데 서버 주인 권한으로 명령을 실행할 수 있게 되는 결함”에 붙는 별명입니다. 2021년 전 세계를 흔든 ‘Log4Shell’처럼, 이름이 붙을 정도면 영향이 넓고 심각하다는 뜻입니다.

용어 쉬운 뜻 비유
취약점 소프트웨어의 설계·구현 실수 잠기지 않는 창문
익스플로잇(공격 도구) 그 실수를 실제로 이용하는 프로그램 창문을 여는 도구
원격 코드 실행(RCE) 멀리서 서버에 명령을 내리는 것 집 안에 들어와 마음대로 움직이기
셸(Shell) 서버를 조종하는 명령창 집의 마스터키
패치 실수를 고친 업데이트 창문 잠금장치 교체
제로데이 패치 전부터 악용되는 결함 수리공보다 도둑이 먼저 온 상황

3. PHP2Shell, 무엇이 그렇게 심각한가

클라우드 보안 기업 Wiz 연구팀은 10월 21일 공개한 글에서 PHP가 전 세계 웹사이트의 약 70%를 움직인다고 설명하며, 워드프레스·드루팔·줌라의 최신 컨테이너 이미지에서도 인증 없이 원격 코드 실행이 가능함을 시연했다고 밝혔습니다. 문제는 앱이 아니라 PHP 자체에 있어서, 아주 단순한 페이지만 있는 사이트도 영향을 받을 수 있습니다. 또 코드 실행까지 가지 않더라도 PHP 프로세스 메모리에서 비밀번호·토큰·API 키 같은 정보를 읽어낼 수 있다는 점도 지적됐습니다.

관찰 출처 의미
10월 17일부터 실제 공격 시도 관측 AWS 보고(데이터독 인용) 패치 공개 4일 전부터 악용
앱 단 로그인으로 막을 수 없음 데이터독 시큐리티 랩스 앱 코드 실행 전 단계에서 처리
설정 변경만으로는 완전 방어 불가 데이터독 시큐리티 랩스 커뮤니티 임시 대책을 믿지 말 것
메모리 속 비밀값 노출 가능 Wiz 리서치 패치 후 키 교체도 고려
공격 성공해도 서버가 안 멈출 수 있음 데이터독 시큐리티 랩스 “멀쩡해 보임”이 안전의 증거 아님
두 가지 2Shell
이름은 비슷하지만 PHP2Shell과 HTTP2Shell은 전혀 다른 곳의 결함입니다.

4. HTTP2Shell은 또 뭔가요?

웹에서 데이터를 압축해 주고받을 때 쓰는 ‘Brotli(br)’ 압축의 해제 코드에 버그가 있어, 조작된 압축 데이터가 메모리 범위를 넘어 쓰게 되는 문제입니다. 처음엔 Node.js 사례로 알려져 ‘Node2Shell’로 불리다가, HTTP를 쓰는 거의 모든 곳에 Brotli가 들어 있어 ‘HTTP2Shell’로 불리게 됐습니다. 특히 사용자가 입력한 주소를 서버가 대신 가져오는 기능(웹훅, 링크 미리보기, 크롤러)이 더 노출돼 있다고 분석됩니다. 앞단의 nginx보다는 그 뒤의 런타임이 핵심입니다.

런타임/라이브러리 수정된 버전
Node.js 22.23.4, 24.22.1, 26.12.1 (20 이하는 수정 없음 → 22 이상으로 이전)
Bun 1.4.4
Python Brotli 1.2.1
Python brotlicffi 1.2.1.0
libbrotli 1.2.1 (또는 1.0.10 / 1.1.1)

5. 왜 ‘AI 때문에’ 빨라졌다고 할까

Wiz는 이 결함들이 10년 넘게 코드에 있었지만, 실제 공격으로 이어 붙이는 과정이 “사람 연구자가 현실적으로 해낼 수 있는 한계”에 가까울 만큼 복잡했다고 설명합니다. 여러 버그를 연결하고, 서버마다 다른 메모리 구조에 맞춰 수없이 시험·수정해야 했기 때문입니다. 그런데 최신 AI 모델이 이 장벽을 크게 낮춰 여러 애플리케이션에 맞는 공격 코드를 몇 시간 만에 만들고 조정할 수 있었다고 밝혔습니다.

AI가 줄인 시간
AI는 ‘발견’과 ‘무기화’ 사이의 시간을 줄이고, 그만큼 방어자의 패치 여유도 줄어듭니다.
단계 AI 이전 AI 이후 (이번 사례가 보여준 방향)
오래된 코드 속 결함 찾기 숙련자가 수주~수개월 AI가 대량 코드 검토를 빠르게 보조
여러 버그 연결(체이닝) 극소수 전문가만 가능 AI가 반복 시험·디버깅 보조
대상별 맞춤 조정 환경마다 다시 분석 몇 시간 단위로 적응
패치 → 공격 도구 등장 며칠~몇 주 패치 분석이 빨라져 간격 단축
필요한 전문성 매우 높음 점점 낮아지는 추세

6. 공격자와 방어자, 누구에게 더 유리할까

AI는 양날의 칼입니다. 이번 PHP2Shell도 공격자가 아니라 보안 연구팀이 AI로 찾아내 패치가 나온 사례입니다. 다만 공개된 패치와 연구 자료를 보고 공격 도구를 만드는 속도도 빨라졌기 때문에, “업데이트는 시간 날 때”라는 습관이 가장 위험해졌습니다.

구분 방어자에게 좋은 점 공격자에게 좋은 점
발견 오래된 결함을 먼저 찾아 고침 미패치 결함을 먼저 찾을 수도
분석 패치 영향 빠른 파악 패치 비교로 공격 지점 추정
자동화 탐지 규칙·점검 자동화 대량 스캔 자동화
진입 장벽 작은 팀도 점검 가능 초보 공격자도 도구 확보 쉬움

7. 작은 사이트·워드프레스 운영자에게 미치는 영향

내 상황 위험도 해야 할 일
워드프레스·그누보드·XE 등 PHP 사이트 직접 운영 매우 높음 PHP 버전 즉시 확인·업데이트
웹호스팅(공유 호스팅) 사용 높음 호스팅사 패치 공지 확인, 문의
Node.js/Python 서비스에서 외부 URL 가져오기 기능 높음 Brotli·런타임 업데이트
Node.js 20 이하 사용 높음 22 이상으로 이전 계획
정적 사이트·완전관리형 SaaS 낮음 서비스 공지만 확인
일반 방문자 간접 털린 사이트발 피싱·악성 다운로드 주의

8. 버전 확인, 이것만 보세요

PHP 계열 안전한 최소 버전
8.5 8.5.12 이상
8.4 8.4.27 이상
8.3 8.3.36 이상
8.2 8.2.35 이상
8.1 이하 / 7.x / 5.x 공식 지원 종료 계열 → 배포판 보안 패치 여부 확인 또는 업그레이드

참고로 우분투·데비안은 자체 패키지에 수정 사항을 ‘백포트’하기 때문에, 버전 숫자가 그대로여도 패치된 상태일 수 있습니다. 이 경우 배포판 보안 공지에서 패키지 버전을 확인하세요.

9. 방어 체크리스트

순서 항목 왜?
1 PHP·Node.js·Brotli 즉시 업데이트 유일한 근본 해결
2 WAF·리버스 프록시에서 비정상적으로 큰 폼 전송 제한 취약 지점 도달 전 차단 (보조 수단)
3 웹 서버 계정 최소 권한 뚫려도 피해 범위 축소
4 로그 점검: 메모리 부족 오류, 낯선 셸·다운로드 프로세스 공격 흔적 조기 발견
5 패치 후 DB 비밀번호·API 키 교체 검토 메모리 노출 가능성 대비
6 백업을 서버와 분리 보관 최악의 경우 복구
7 인터넷에 떠도는 ‘PoC·점검 스크립트’ 함부로 실행 금지 가짜 도구에 악성코드가 숨는 경우가 많음
8 AI가 만든 코드는 검토 후 실행 출처 불명 코드는 남의 서버에서도, 내 서버에서도 위험

10. AI 시대, 습관을 이렇게 바꾸세요

예전 습관 바꿀 습관
업데이트는 한가할 때 ‘긴급’ 표시 패치는 당일 적용
서버가 멀쩡하면 안전 로그로 확인해야 안전
설정 한 줄로 임시 방어 공식 패치가 우선
AI가 짜 준 코드 바로 배포 권한·네트워크 동작 검토 후 배포
보안 뉴스는 대기업 이야기 내 블로그·쇼핑몰도 대상
오늘 밤 체크리스트
오늘 밤 30분이면 끝나는 다섯 가지 점검입니다.

11. 오늘 밤 할 일 5가지

할 일 소요 시간
호스팅 관리 화면이나 서버에서 PHP 버전 확인 5분
8번 표보다 낮으면 업데이트 또는 호스팅사에 문의 10분
Node.js/Python 서비스의 런타임·Brotli 버전 확인 5분
최근 일주일 에러 로그에서 메모리 부족·낯선 프로세스 확인 5분
관리자·DB 비밀번호와 API 키 교체 일정 잡기 5분

마무리

PHP2Shell과 HTTP2Shell은 “10년 묵은 결함도 AI가 붙으면 몇 시간 만에 무기가 될 수 있다”는 신호입니다. 반대로 같은 AI가 결함을 먼저 찾아 고치는 데도 쓰이고 있습니다. 결국 차이를 만드는 건 얼마나 빨리 업데이트하느냐입니다. 오늘 밤 내 사이트 버전부터 확인해 보세요.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다