PHP2Shell 사태 총정리: 인터넷 70%를 흔든 PHP 결함과 딥시크 스웜 루머
2026년 10월은 보안계에서 '블랙 옥토버'로 불렸어요. GPTunneL의 정리에 따르면 10월 12일부터 22일 사이에만 11건의 대형 침해·유출·취약점이 터졌고, 이 중 7건에 AI가 얽혀 있었어요. 그 한복판에서 터진 게 PHP 코어의 원격 코드 실행 취약점, 별명 'PHP2Shell'이에요.
그리고 패치가 공개되자마자 X(트위터)에는 이런 글이 돌았어요. "누군가 딥시크(DeepSeek) 스웜을 돌려서, 패치 안 된 PHP 서버를 원격으로 해킹한 뒤 대신 고쳐주고 있는 것 같다." 화이트햇 봇넷이 블랫햇 스웜과 경주한다는 그림이 너무 인상적인 나머지 7만 뷰를 찍었지만, 지금 기준 근거는 없어요. 이 글에서는 사태 자체와 루머를 출처와 함께 분리해서 정리했어요.
PHP2Shell, 무엇이 터졌나
Wiz 리서치와 Calif, OpenAI가 공동으로 밝힌 건 PHP 코어의 메모리 안전 결함 두 묶음이에요.
- CVE-2026-109618: 업로드 진행률(unserialize) 처리 경로의 use-after-free. 공격자가 인증 없이 PHP 워커의 프로세스 메모리를 읽을 수 있어요. 그 메모리에는 다른 요청의 비밀번호, 토큰, API 키, 인증서가 살아 있어요.
- CVE-2026-109619: 치명적 오류(fatal error) 백트레이스의 use-after-free + OPcache 타입 컨퓨전. 공유 상태를 오염시켜 코드 실행까지 도달할 수 있어요.
둘 다 CVSS v4.0 기준 9.2점(치명)이에요. PHP 보안팀은 10월 21일 14:00 UTC에 긴급 수정판을 배포했고, 대상은 PHP 8.5.12, 8.4.27, 8.3.36, 8.2.35였어요.
뿌리는 하나예요. 요청 처리 중 메모리 한도 초과(OOM) 같은 치명적 오류가 나면 PHP가 내부 정리를 끝내지 못한 채 상태를 남길 수 있어요. 같은 워커의 다음 요청이 그 오염된 상태를 산 상태로 재사용하면서 메모리 유출이나 코드 실행으로 번져요. Calif는 이 패턴으로 OOM-fatal 유발 경로 2개와 인터프리터의 중단 지점 3개를 찾았어요.
위험한 점은 애플리케이션과 무관하다는 거예요. 취약한 건 PHP 런타임 자체라서, Calif의 검증 목록에는 WordPress, Drupal, Joomla, MediaWiki(위키피디아), Roundcube, Magento, phpMyAdmin, Nextcloud, Laravel, Symfony, WHMCS에서 사전인증 RCE가 확인됐어요.
'Hello World'만 띄운 서버도 버전만 맞으면 똑같이 위험해요. 영향 범위도 최근 10년치, PHP 5.4(2012년)부터 모든 릴리스가 두 CVE 중 하나 이상에 걸려요. PHP가 전체 웹사이트의 약 70%를 구동한다는 게 업계 통설이라, 사실상 웹의 대부분이 대상이에요.
20년 묵은 결함, 왜 지금 터졌나
Calif의 타임라인이 이력을 잘 보여줘요.
- 2004: Stefan Esser가 최초의 PHP 메모리 리밋 원격 취약점을 발견해요. 익스플로잇은 공개하지 않았어요.
- 2020: bug #78876 - 긴 변수가 OOM을 유발하면 정리가 누락된다는 보고가 올라오지만 큰 주목 없이 묻혀요.
- 2024: OSTIF/Quarkslab 감사가 같은 OOM 문제를 재발견해요. 그러나 악용이 증명되지 않아 수리되지 않았어요.
- 2026-07-30: OpenAI의 'Patch the Planet' 프로그램에 Calif가 합류하고, PHP 재단과 협업을 시작해요.
- 2026-08-01: 감사 시작 며칠 만에 첫 OOM-fatal 경로가 발견돼요. 이후 mod_php와 PHP-FPM 모두에서 안정적으로 먹히는 변형을 추가로 찾았어요.
- 2026-08-11: PHP에 최초 보고. 8월 14일 PoC 공유, 15일 PHP 측 재현 확인.
- 2026-10-21: 계획보다 하루 빠른 긴급 패치.
결함은 10~20년을 버텼는데, '이걸 신뢰성 있는 익스플로잇으로 만드는 체이닝'이 사람에겐 너무 어려웠던 거예요. 그 벽을 AI가 낮췄어요.
공개가 '사고'로 터진 과정
원래 패치는 10월 22일 예정이었어요. 그런데 10월 20일 하루에 세 가지가 동시에 터졌어요. CVE 번호가 유출됐고, Calif가 실수로 PoC 데모 영상을 공개했고, 어떤 컨테이너 벤더가 패치 이미지를 예정보다 먼저 배포했어요. PHP는 미리 공지해둔 원칙대로 공개를 하루 앞당겼어요.
그리고 이미 실전이었어요.
- 아마존 위협 인텔리전스는 공개 4일 전인 10월 17일, 허니팟(MadPot)에서 첫 공격 시도를 확인했어요.
- Cloudflare CEO Matthew Prince의 네트워크 수치가 규모를 보여줘요. 공지 10시간 전 수천 회 시도, 공지 45분 후 수만, 2시간 후 수십만, 글을 쓰는 시점엔 수백만 회.
- The Record 보도에 따르면 닌텐도를 포함한 기관·기업 웹사이트 수백 곳이 예방 차원에서 운영을 중단했어요.
패치 전 임시 완화책도 있긴 한데 완전하지 않아요. PHP-FPM은 session.upload_progress.enabled=0 설정과 memory_limit=-1, mod_php는 memory_limit=-1이 그것이에요. 다만 메모리 상한을 없애는 건 메모리 고객 DoS 리스크를 그대로 사는 길이라서, Calif도 PHP 보안팀도 결국 '패치가 정답'이라고 말해요. 영국 NCSC는 패치가 불가능한 시스템은 인터넷에서 떼어내라고 권고했어요.
탐지 힌트도 남겨요. Wiz 기준으로 비정상적인 multipart 요청 뒤에 memory-limit 에러나 500 반복, 유난히 크거나 변형된 PHPSESSID 쿠키, 워커 프로세스의 반복 재시작이 보이면 조사할 신호예요. 애플리케이션 레이어 아래에서 일어나는 일이라 앱 로그엔 흔적이 거의 없어요.
AI가 바꾼 것: '복잡성 방어막'의 소멸
이 사태의 진짜 주제는 PHP가 아니라 경제학이에요.
Wiz 표현을 빌리면, 결함은 10년 넘게 코드베이스에 있었지만 익스플로잇으로 만드는 일은 '인간 연구자가 실질적으로 해낼 수 있는 선'의 끝자락이었어요. 여러 결함을 체이닝하고, 타깃마다 다른 메모리 배치를 반복 테스트로 맞춰야 했으니까요.
Wiz는 이번 연구에 Wiz Atlas, Gemini 4 Argon, GPT-5.6 Sol을 썼어요. 특히 Gemini 4 Argon이 취약점 발견부터 익스플로잇 개발, 탐지 룰, 패치 검증까지 기여했다고 밝혀요.
Calif의 회고도 읽을 만해요. 특별한 하니스나 비공개 모델 없이, 일반에 공개된 모델로 시작했어요. 대신 연구자가 20년 된 취약점 역사를 알고 있었고, LLM의 변형 분석이 '최신 버그 주변'으로만 돌지 않도록 방향을 프롬프트로 잡아줬어요. "타깃을 알아라"는 LLM 시대에도 여전하다는 교훈이에요.
공격 쪽 실측치는 Reuters가 문서로 남겼어요. 중국어권 해커 한 명이 9월 25일부터 AI 에이전트를 돌려 미국·캐나다·호주·일본의 웹사이트 1,200곳 이상을 공격해 100곳 넘게 뚫었어요.
성공한 침해 하나당 평균 23시간이 걸렸고, 캠페인 전체 토큰 비용은 약 5,000달러, 침해당 약 50달러였어요. 에이전트는 오픈소스 플랫폼 Cairn 위에서 DeepSeek과 Claude Code를 섞어 구동됐어요.
발각 원인도 아이러니한데, 운영자가 Cairn 관리자 패널을 인터넷에 열어둔 탓에 스캔에 걸린 거예요. Reuters가 확인한 피해자에는 John Deere, SharkNinja, Cummins가 있었어요.
정리하면 이렇게 돼요. 복잡한 익스플로잇의 개발·이식 비용이 전문가 몇 주에서 '모델 몇 달러' 단위로 떨어지면, '아직 실전 악용이 증명 안 됐으니 괜찮다'는 판단 자체가 무효화돼요. 2024년 감사에서 그 논리로 넘어간 결함이 2026년엔 공개 4일 전부터 실공격당했어요.
'딥시크 스웜' 루머의 정체
패치 직후인 10월 22일, X에서 이런 대화가 퍼졌어요.
leo (@synthwavedd): "Using swarms of agents to exploit the PHP2Shell vulnerability to remotely patch vulnerable devices before a malicious actor can exploit the same vulnerability using their own swarms 😭 crazy times" (악성 스웜이 먼저 익스플로잇하기 전에, 에이전트 스웜으로 PHP2Shell을 익스플로잇해 취약한 서버를 원격으로 패치해버리는 중. 미쳤다.)
Hensen Juang (@basedjensen): "Lol I am pretty sure someone is running a deepseek swarm to remotely patch unpatched php boxes. Well good on them." (Lol 누군가 딥시크 스웜을 돌려 패치 안 된 PHP 서버를 원격으로 패치하고 있는 게 분명해. 잘하고 있는 거야.)
'화이트햇 봇넷이 블랫햇과 경주한다'는 그림이 강력해서인지 leo의 글은 7.1만 뷰에 좋아요 3,900여 개를 받았어요. 중국어 계정 하나는 AI 생성 이미지까지 붙여서 '딥시크 AI 클러스터가 전 세계 패치 안 된 PHP 서버를 원격 패치 중'이라고 확산시켰어요.
그런데 보안 업계 어디에도 '원격 패치'의 실제 사례는 없어요. AI매터스가 정리했듯 Help Net Security, The Record, WatchTower의 보도와 분석에 그런 언급이 없고, 워치타워는 공격 주체조차 아직 공개되지 않았다고 밝혔어요. 즉 '딥시크 스웜이 서버를 고쳐주고 있다'는 건 추측이 밈이 된 케이스예요.
반대로 '딥시크 스웜'이 실제로 한 일은 패치가 아니라 침해였어요. 위 Reuters 캠페인의 에이전트는 DeepSeek과 Claude Code로 구동됐어요. CrowdStrike도 5월부터 8월 사이 Claude Code 기반 하니스로 기업을 뚫은 네 그룹을 별도로 보고했어요.
그 네 그룹엔 아르헨티나 의료기관 15곳 이상을 뚫은 스페인어권 운영자, 두 개국 정부 기관을 노린 중국어권 그룹, GitHub에서 Claude Code 스킬 819개를 받아 쓴 인도네시아 그룹이 포함돼요. 'AI 스웜이 서버를 해킹한다'는 건 이미 실재하는데, 방향은 방어가 아니라 공격 쪽이에요.
'블랫햇이 먼저 뚫으니 대신 고쳐주면 안 돼?'
결론부터 말하면 안 돼요. 그리고 하지 말아야 해요.
동의 없는 침입은 목적이 뭔든 범죄예요. AI매터스가 정리한 대로 한국 정보통신망법 제48조는 정당한 접근 권한 없이 정보통신망에 침입하는 행위를 금지하고, 미국 CFAA도 무단 접근을 처벌해요. '그 서버는 취약했고, 나는 고쳐줬을 뿐'은 변론가 아니라 공격의 자백이에요.
선례도 있어요. 2021년 FBI가 Microsoft Exchange 사태에서 피해 서버 수백 대의 웹셸을 삭제했는데, 법원 승인을 받은 수사기관의 작업이었고 그래도 웹셸만 지웠지 취약점 패치는 하지 않았어요. 시스템 소유자의 동의 없이 '고쳐주는' 행위가 왜 경계되는지 보여주는 사례예요.
실용적인 이유도 있어요. PHP2Shell급 메모리 손상 프리미티브를 원격에서 '선의로' 실행한다는 건, 검증 불가능한 코드를 타인의 서버 메모리에서 돌리는 것과 같아요. 성공해도 소유자에겐 침입이고, 실패하면 워커를 죽이는 DoS예요.
그리고 '도와주는 스웜이 어딘가 있다'는 믿음 자체가 사람들의 패치를 미루게 만들어요. 이 루머의 가장 위험한 부작용이에요.
지금 할 일
- 운영 중이라면 지금 PHP 8.5.12, 8.4.27, 8.3.36, 8.2.35 중 하나로 올리세요. 워드프레스나 플러그인 업데이트로는 안 끝나요. PHP 런타임 자체를 업데이트해야 해요.
- EOL인 8.1 이하는 공식 수정판이 없어요. PHP 보안팀이 7.4/8.0/8.1용 최소 소스 패치를 GitHub에 공개했으니 적용하고, 근본 해결은 버전 업이에요.
- 당장 패치가 불가능하면 NCSC 권고대로 인터넷에서 분리하거나, Cloudflare 무료 플랜을 포함한 WAF 규칙으로 완화하세요.
- 공유 호스팅이라면 업체가 돌리는 PHP 버전을 확인하세요. 문제는 당신 코드가 아니라 런타임이었으니까요.
마무리: '복잡해서 안전하다'의 시대는 끝났다
Heartbleed(2014)는 공유 라이브러리의 취약성을, Log4Shell(2021)은 의존성의 깊이를 보여줬다면, PHP2Shell은 'AI 시대의 익스플로잇 경제학'을 보여줬어요. 20년 묵은 결함이 모델 몇 달러짜리 작업으로 무기화되고, 같은 속도로 방어 도구와 탐지·패치 검증도 가속되는 시대요.
'딥시크 스웜이 세상을 구해주고 있다'는 밈은 그럴듯하지만 아직 이야기예요. 현실의 정답은 여전히 지루해요. 당신 서버를 지켜주는 건 경주하는 스웜이 아니라, 당신이 오늘 누르는 업데이트예요.

