나무모에 미러 (일반/어두운 화면)
최근 수정 시각 : 2026-11-09 11:56:02

PHP2Shell



파일:관련 문서 아이콘.svg   관련 문서: PHP
#!if 문서명2 != null
, [[]]
#!if 문서명3 != null
, [[]]
#!if 문서명4 != null
, [[]]
#!if 문서명5 != null
, [[]]
#!if 문서명6 != null
, [[]]


#!if this['this'] == null
'''이 문서는'''
#!if this['this'] != null
'''이 문단은'''
#!if 토론주소2 == null
''' {{{#!if 토론주소1 != null
[[https://namu.wiki/thread/NeedlessKnottyStormyGrandfather|토론]]}}}{{{#!if 토론주소1 == null
토론}}}을 통해 본 취약점에 대하여 제3자가 임의로 패치하는 활동이 있었다는 등 확인되지 않은 단체 또는 개인이 취약점을 이용해 취약점을 패치했다는 논조의 서술을 금지하기로 합의되었습니다.''' 합의된 부분을 토론 없이 수정할 시 [[나무위키:기본방침/이용자 관리 방침#편집권 남용|편집권 남용]]으로 간주되어 제재될 수 있습니다.
#!if 토론주소2 != null
''' 아래 토론들로 합의된 편집방침이 적용됩니다.''' 합의된 부분을 토론 없이 수정할 시 [[나무위키:기본방침/이용자 관리 방침#편집권 남용|편집권 남용]]으로 간주되어 제재될 수 있습니다.{{{#!wiki style="text-align:center;"
{{{#!folding [ 내용 펼치기 · 접기 ]
{{{#!wiki style="margin: 0 -5px"
||<tablewidth=100%><tablebordercolor=transparent><tablebgcolor=transparent><(>'''[[https://namu.wiki/thread/NeedlessKnottyStormyGrandfather|토론]] - 본 취약점에 대하여 제3자가 임의로 패치하는 활동이 있었다는 등 확인되지 않은 단체 또는 개인이 취약점을 이용해 취약점을 패치했다는 논조의 서술을 금지하기'''
----
'''[[https://namu.wiki/thread/|토론]] - 합의사항2'''
----
{{{#!if 토론주소3 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항3'''
----
}}}{{{#!if 토론주소4 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항4'''
----
}}}{{{#!if 토론주소5 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항5'''
----
}}}{{{#!if 토론주소6 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항6'''
----
}}}{{{#!if 토론주소7 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항7'''
----
}}}{{{#!if 토론주소8 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항8'''
----
}}}{{{#!if 토론주소9 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항9'''
----
}}}{{{#!if 토론주소10 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항10'''
----
}}}{{{#!if 토론주소11 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항11'''
----
}}}{{{#!if 토론주소12 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항12'''
----
}}}{{{#!if 토론주소13 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항13'''
----
}}}{{{#!if 토론주소14 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항14'''
----
}}}{{{#!if 토론주소15 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항15'''
----
}}}{{{#!if 토론주소16 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항16'''
----
}}}{{{#!if 토론주소17 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항17'''
----
}}}{{{#!if 토론주소18 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항18'''
----
}}}{{{#!if 토론주소19 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항19'''
----
}}}{{{#!if 토론주소20 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항20'''
----
}}}{{{#!if 토론주소21 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항21'''
----
}}}{{{#!if 토론주소22 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항22'''
----
}}}{{{#!if 토론주소23 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항23'''
----
}}}{{{#!if 토론주소24 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항24'''
----
}}}{{{#!if 토론주소25 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항25'''
----
}}}{{{#!if 토론주소26 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항26'''
----
}}}{{{#!if 토론주소27 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항27'''
----
}}}{{{#!if 토론주소28 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항28'''
----
}}}{{{#!if 토론주소29 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항29'''
----
}}}{{{#!if 토론주소30 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항30'''
----
}}}{{{#!if 토론주소31 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항31'''
----
}}}{{{#!if 토론주소32 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항32'''
----
}}}{{{#!if 토론주소33 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항33'''
----
}}}{{{#!if 토론주소34 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항34'''
----
}}}{{{#!if 토론주소35 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항35'''
----
}}}{{{#!if 토론주소36 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항36'''
----
}}}{{{#!if 토론주소37 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항37'''
----
}}}{{{#!if 토론주소38 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항38'''
----
}}}{{{#!if 토론주소39 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항39'''
----
}}}{{{#!if 토론주소40 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항40'''
----
}}}{{{#!if 토론주소41 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항41'''
----
}}}{{{#!if 토론주소42 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항42'''
----
}}}{{{#!if 토론주소43 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항43'''
----
}}}{{{#!if 토론주소44 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항44'''
----
}}}{{{#!if 토론주소45 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항45'''
----
}}}{{{#!if 토론주소46 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항46'''
----
}}}{{{#!if 토론주소47 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항47'''
----
}}}{{{#!if 토론주소48 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항48'''
----
}}}{{{#!if 토론주소49 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항49'''
----
}}}{{{#!if 토론주소50 != null
'''[[https://namu.wiki/thread/|토론]] - 합의사항50'''
----
}}}||}}}}}}}}}




1. 개요2. 경과3. 해당하는 보안 취약점4. 대처 방법5. 영향을 받은 서비스6. 여담

1. 개요

2026년 10월에 발견된 PHP의 원격 코드 실행 취약점. CVE 취약점 식별 번호는 CVE-2026-109618[1], CVE-2026-109619[2]이다. 심각도 등급은 CVSS 4.0 기준 10점 만점에 9.2점이다. Java의 Log4shell 당시의 10/10보다는 낮지만 9점대 또한 즉시 패치를 진행해야 하는 등급이다.

2. 경과

코딩애플의 사태 정리 영상

한국 시간 기준 10월 21일 PHP 개발진이 취약점 2개가 발견되었으며 같은 날 UTC 기준 14시, 한국 시간 기준 23시에 보안 업데이트를 배포할 것을 발표하였다.[3]

PHP의 공식 발표 전에 해커 뉴스 포럼에서 해당 취약점에 대한 정보가 공개될 것이라는 유출 정보가 게시되었으며, 상술한 2개의 취약점 식별 번호도 게시되었다.[4]

제일 치명적인 문제는 이 상황을 화이트 해커들이 알아내고 사이트들에게 알리고 대응과 패치를 할 시간을 주고 조치가 어느정도 된 후에 해당 사실 공표를 14시간 후에 발표하기로 했으나 J4ck3LSyN이라는 해커가 2026년 10월 21일 오전에 해당 공격을 재현했다고 주장하면서 기술적인 분석 정보를 뿌리는 대형 사고를 쳤다.[5] 치명적인 바이러스가 발견되었는데 제약회사와 국가들이 대응 전에 바이러스 제조법을 뿌린 격이다.

이에 수많은 사이트들이 공격에 노출되었고 긴급하게 서버를 내리는 대혼란이 벌어지게 되었다. 이에 사람들은 그 14시간을 못 기다리냐며 가열찬 비난을 하는 중이다. X가 실시간 자동번역이 되면서 그야말로 전세계 사람들한테 욕을 먹고 있으며 다른 해커들의 해킹 공격을 수시로 받고 있다고 한다. 그러나 당사자는 자신은 아무런 불법적인 행위도 하지 않았다며 적반하장의 반응을 보이고, 자신을 향한 비판 트윗에 공격적으로 반응하면서 더욱 어그로를 끌고 있다.[6]

그 외에도 Calif, Chainguard 등의 보안 업체도 실제 공격 시연 영상[7]이나 수정된 PHP 이미지를 배포하는 등의 행위를 저질렀고, 이후 PHP 공식 재단은 Chainguard를 향해 사전 합의를 일방적으로 어겼다며 공개 비판했다.[8]

상황이 긴박해진 이후 유럽연합 컴퓨터긴급대응팀(CERT-EU), 호주 사이버보안센터(ACSC), 일본 국가사이버통괄실과 도쿄 경시청 등은 패치가 나오기 전, 세계 각국의 보안팀이 PHP를 사용하는 사이트들에 대해 패치가 나온 즉시 업데이트를 하길 권고했다.[9]

한국인터넷진흥원(KISA)에서는 21일 23시 패치 공개 이후~22일이 되기 직전에 대응했다.[10] 한국에서는 전자정부표준프레임워크 때문에 Java의 비중이 높다고는 하지만 디시인사이드, 더쿠 등 민간에 트래픽이 높은 PHP로 제작된 사이트가 다수 존재하며[11] 정부 사이트 중에서도 PHP를 사용하는 사이트가 일부 존재하는데, 일찌감치 공개 시간까지 고지되었으나 상당히 늦게 대응하였다.

Cloudflare의 CTO인 Dane Knecht는 21일 오후 4시에 임시조치로 해당 취약점과 관련한 WAF 설정을 무료 플랜을 포함한 모든 이용자에게 이용가능하도록 조치를 취했으며[12], 또한 해당 취약점으로 이미 초기단계의 공격을 감지했다고 밝혔다.[13]

한국 시간 기준 2026년 10월 21일 23시, 해당 취약점의 상세 정보와 취약점을 패치한 버전이 공개되었다.[14] 8.1버전 이하는 지원 기간이 종료되어 수정 버전이 공개되지 않았으나, PHP 보안팀이 PHP 7.4, PHP 8.0 및 PHP 8.1에 대한 최소한의 소스 백포트를 제공했다고 밝혔다.[15]

웹호스팅을 제공하는 카페24와 가비아는 패치 공개 이후 30~60분이 지난 뒤 관련 대응을 위한 보안 패치 작업을 시작하였다.[16]

10월 22일 12시, KISA에서 사이버위기 경보 단계를 관심에서 주의로 격상하였다.[17]

3. 해당하는 보안 취약점

CVE에 등록된 해당 취약점은 다음과 같다.두 CVE 모두 예외 처리에서 메모리를 건든 후 이를 제대로 정리하지 않은 예외가 처리된다는 공통점이 있다.

4. 대처 방법

PHP를 보안 취약점이 수정된 버전으로 업데이트해야 한다. PHP 8.2는 8.2.35 이상, 8.3은 8.3.36 이상, 8.4는 8.4.27 이상, 8.5는 8.5.12 이상으로 업데이트한 뒤 Apache 또는 PHP-FPM 등 사용 중인 PHP 실행 서비스를 재시작한다.

연장 지원이 종료된 7.4, 8.0, 8.1도 몇몇 배포판[18]은 패치가 제공되며, 비공식적으로 제공되는 backport도 존재한다.

PHP2Shell 이라서 distroless 컨테이너 같은 Shell이 없으면 되는건가? 같은 생각을 할 수 있는데, 마치 셸 처럼 실행이 된다라는 것이지 셸을 사용하는 것이 아니기 때문에 셸의 제거나 권한 설정으로 대처할 수 없다.

또한 업데이트시 구버전 PHP 코드에 변경이 필요한데 이럴때 PHP 마이그레이션 툴인 Rector PHP 를 쓰면 수월하다. PHP VM 개발측과 심포니프레임워크 측도 Rector 를 이용하라고 한다. PHP 7 출시당시 다양한 5버전대 코드 마이그레이션 툴이나왔는데 Rector 만 살아남아 10년째 명맥을 유지중이다.

5. 영향을 받은 서비스

보안 업데이트가 실행될 때까지 본 취약점으로 인한 불법 접근이나 개인 정보 유출 등을 막기 위해 아래의 서비스들이 긴급 점검에 돌입하였다.

기본적으로 미디어위키 등 PHP를 이용하는 모든 사이트는 본 취약점의 영향을 받았다고 볼 수 있다. 2026년 10월 21일 23시의 업데이트 이후 점검을 마치고 운영을 재개하는 사이트들이 나오고 있다.

PHP를 많이 사용하는 일본, 유럽 사이트들이 주로 영향을 받았다.

한국은 Java의 점유율이 높아서 상대적으로 영향이 적다는 전망도 초기에 나왔고, 실제로도 대기업이나 공공기관 측은 거의 Java 기반이었기에 이번에는 피해갔으나, 중소기업, 개인 웹사이트 PHP 서버로 넘어가면 규모가 11만 개에 달한다. 기사에서도 한국은 세계 6번째로 PHP를 많이 사용 한다고 한다. (#) 이 중 상당수는 PHP 5,7 버전대다.[19] PHP 8.2 이후가 공식패치이고 비공식으로 리눅스 배포판마다 백포트가 제공되었다. 패치가 공개된 뒤 36시간 동안 국내 웹사이트 대부분이 무방비로 열려 있었기 때문에(#) 그 시간 동안 얼마든지 패치를 역설계한 자동화 공격에 노출되었을 가능성이 있다.

같은 코드를 사용하더라도 PHP 버전에 따라 동작이 다르거나 에러가 발생하는 경우가 있어 버전 업데이트를 하려면 코드 수정이 불가피한데, 오랫동안 운영되며 버전 업데이트를 하지 않은 서비스 중에서는 업데이트에 따르는 비용을 감당하느니 아예 운영을 종료해버리는 사례도 발생하고 있다.

6. 여담


[1] GHSA-w8hw-w9fx-j79w[2] GHSA-6wmf-4rv5-p3rp[3] Upcoming Critical PHP Security Release (PHP.net)[4] Tell HN: 2x PHP RCE CVEs with CVSS 10.0 Incoming (Hacker News)[5] 원본 트윗 링크 (삭제됨) 아카이브[6] Jλckλι (X)[7] 뜬금없게도 로리카미의 모션을 영상 하단에 합성해둬서 어그로를 끌어댔다.[8] Today's PHP Security Release, and How We're Strengthening PHP Security (The PHP Foundation)[9] 전 세계 웹사이트 보안 비상…"PHP서 치명적 취약점 2건 발견" (뉴스1)[10] PHP 제품 보안 업데이트 권고 (KISA 보호나라)[11] 특히나 그누보드가 PHP를 사용하기 때문에 영향받는 소규모 커뮤니티가 많이 있었다.[12] Cloudflare deploys protections against php2shell vulnerability (Cloudflare)[13] Dane Knecht (X)[14] 8.2.35, 8.3.36, 8.4.27, 8.5.12[15] Security advisory: Critical remote code execution vulnerabilities, update now (PHP.net)[16] 2026년 10월 21일(수) PHP 공식 보안 패치 적용 작업 공지 (Cafe24 호스팅), [긴급 공지] 웹호스팅(PHP) 긴급 보안 패치 작업 (가비아)[17] 사이버위기 경보 단계 '관심' → '주의' 상향 조정 (KISA 보호나라)[18] 우분투[19] 특히 그누보드 가 5.2 버전을 지원하기에 그대로 쓰는 경우가 많고 지방 에이전시들은 작년에도 php 5.3 기준으로 만드는 곳이 있을 정도다[20] 업로드 제한 공지[21] 기본적으로 유저의 접속을 막지 않고 업데이트를 하는 게임이라 접속 불가인 점검은 서비스 기간 8년 중 처음이 되었다. #[22] 마이마이 일본 내수판/국제판, 츄니즘 일본판/국제 수출판, 온게키 일본 내수판[23] 게임에 따라 더 일찍 시작한 경우도 있다. 이니셜D 아케이드[24] maimai 일본 내수판/태고의 달인[25] #[26] 중국판은 WAHLAP의 별도 서버를 사용해 영향을 받지 않았다.#[27] 원래 21일 23시부터였으나 점검을 1시간 당겼다.[28] X[29] X[30] X[31] 같은 시간 동안 PHP를 사용하며 포켓몬 홈과 연동되는 3DS의 포켓몬 뱅크 역시 긴급 점검에 들어갔다. 다만 이쪽은 ILCA가 아닌 게임프리크와 포켓몬 컴퍼니가 직접 개발.[32] nForum down until further notice. The nForum software is no longer maintainable. A recent vulnerability has forced us to take it down. We hope to install some replacement, but it may take some time. -- the nLab technical team #[33] the PHP security vulnerability which even general media reported on forced us to do something about our nForum, which was written in PHP. #@[34] Paheal 및 Rastafarian에서 운영하는 동명의 사이트에는 해당되지 않는다.