
AI가 찾아낸 「wp2shell」, 무엇을 어떻게 찾아냈는가
요약
WordPress의 복합 취약점인 'wp2shell'의 발견 과정과 원리를 다룹니다. AI가 인간 연구원의 해석을 도와 대량의 코드 조합을 검증함으로써, 단독으로는 위험하지 않은 두 결함을 연결해 원격 코드 실행(RCE) 취약점을 찾아낸 사례를 설명합니다.
핵심 포인트
- wp2shell은 REST API 결함과 SQL 인젝션을 조합한 공격 수법임
- AI는 넓은 범위의 코드 조합을 기계적으로 검증하는 데 탁월한 성능을 보임
- 취약점 근본 해결을 위해 WordPress Core의 최신 버전 업데이트가 필수적임
- WAF나 플러그인 제한은 근본적인 코드 수정 대책이 될 수 없음
이 기사는 「누구나 알 수 있는 보안 이야기」 시리즈의 기사입니다.
Python 경력 5년 이상, 보안에도 관심이 있는 변태가 작성하고 있습니다.
이 기사는 개인의 경험에 기반한 포엠(Poem)입니다.
환경·용도·경험에 따라 다를 수 있습니다.
2026년 7월 17일, WordPress가 긴급 보안 릴리스를 발표했다.
세계에서 가장 많이 사용되는 CMS의 표준 구성——플러그인을 전혀 설치하지 않은 상태에서도, 인증되지 않은 공격자가 원격으로 코드를 실행할 수 있는 취약점이 발견되었다.
그 이름은 「wp2shell」.
그리고 이 취약점은, AI(대규모 언어 모델 (LLM))를 이용한 해석을 통해 발견되었다고 보도되고 있다.
미리 말해두자면, 이 기사는 「AI가 인간을 대신해 해킹했다」는 이야기가 아니다.
발견한 것은 어디까지나 Searchlight Cyber 산하의 보안 연구원이다.
AI는 그 연구원의 해석 작업을 돕는 도구로서 사용되었다.
이 기사는 그 「돕는 방법」이 어떤 것이었는지를 정리하는 내용이다.
먼저 결론을 쓰겠다.
wp2shell은 단일 취약점의 이름이 아니다.
두 가지 결함을 조합한 공격 수법에 붙여진 이름이다.
한쪽만으로는 그렇게 위험하지 않았다.
조합됨으로써 인증이 필요 없는 원격 코드 실행(Remote Code Execution (RCE))이라는 최악의 결과가 되었다.
첫 번째(CVE-2026-63030)는 WordPress의 REST API 안에 있다. 여러 처리를 한꺼번에 실행하는 「배치 처리 (Batch Processing)」에서, 어떤 요청이 어떤 처리에 대응하는지의 연결이 어긋나는 결함이다. 이를 통해 본래는 호출할 수 없어야 할 처리를 동작시키거나, 입력 체크를 우회할 수 있게 된다.
「호출할 수 없어야 할 처리가 왜인지 호출할 수 있다」
이렇게 들으면 단순한 버그처럼 느껴진다. 하지만 이것이 첫 번째 조각이었다.
두 번째(CVE-2026-60137)는 게시물을 검색하는 내부 메커니즘(WP_Query)에 있다. 특정 파라미터(author__not_in)에 조작된 값을 전달하면, SQL 인젝션 (SQL Injection)——데이터베이스에 대해 의도하지 않은 명령을 보낼 수 있는 상태가 발생한다.
이 두 가지를 조합함으로써, 외부에서 인증되지 않은 상태로 원격 코드 실행(Pre-Auth RCE)이 가능해진다.
이 부분이 가장 궁금한 대목이다.
취약점을 찾을 때, 인간 연구자는 「수상해 보이는 곳」을 짐작하여 읽어 내려간다.
코드베이스가 커질수록 이 「짐작하는」 작업 자체가 힘들어지게 된다.
REST API의 배치 처리라는, 언뜻 보면 평범하게 작동하는 기능.
검색 파라미터라는, 일상적으로 사용되는 입력.
단독으로는 위험해 보이지 않는 곳을 대량으로, 그리고 조합하여 검증하는 작업은,
인간이 하나씩 수작업으로 하기에는 엄청난 노력이 필요하다.
AI는 「여기가 수상하다」라는 직관은 없는 대신,
넓은 범위를 기계적으로, 지치지 않고 계속해서 검증할 수 있다.
「의미 없어 보이는 조합」을 대량으로 시도할 수 있다는 점이, 이런 종류의 복합적인 취약점 발견과 궁합이 좋다고 생각한다.
RCE가 성립하는 버전은 WordPress 6.9.06.9.4 및 7.0.07.0.1이다. 6.8.0~6.8.5는 SQL 인젝션 단독의 영향을 받는다.
근본 대책은 WordPress Core를 수정 버전으로 업데이트하는 것이다. 7.0 계열은 7.0.2 이상, 6.9 계열은 6.9.5 이상으로 업데이트한다. 6.8 계열은 wp2shell의 RCE 대상은 아니지만, SQL 인젝션을 수정하기 위해 6.8.6 이상으로 업데이트한다.
WAF나 플러그인에 의한 액세스 제한은 취약한 코드를 수정하지 않기 때문에, 업데이트를 대신할 수는 없다.
일시적인 완화책은 있을지언정, 근본 대응은 버전 업그레이드뿐이다.
이 결함이 만들어진 것은 2025년 12월 2일에 공개된 WordPress 6.9부터다. 비교적 최신 버전에만 존재하는 취약점이며, 오래된 6.8 계열이나 그 이전 사이트는 이 특정 구멍에 대해서는 영향을 받지 않는다.
「어쨌든 최신으로 만들면 안전하다」는 고정관념이 반드시 옳지는 않다는 것을 여기서 알 수 있다.
새로운 기능이 늘어날수록 새로운 구멍도 늘어난다.
wp2shell은 특별히 운이 나쁜 사고가 아니다. WordPress의 취약점은 매주 보고되고 있다.
그리고 이번에, AI에 의한 해석이 그 발견에 사용되었다.
이는 향후 취약점 발견 속도 자체가 변할 가능성을 보여준다.
공격자 측도 AI를 사용하면 똑같이 「넓고 기계적으로」 구멍을 찾을 수 있게 된다.
지키는 측도 같은 무기를 갖지 않으면 따라잡지 못하게 될지도 모른다.
- wp2shell은 하나의 취약성이 아니라, 두 가지 결함의 조합
- REST API 배치 처리 (Batch Processing)의 연결 오류와 검색 파라미터의 SQL 인젝션 (SQL Injection)
- AI를 통한 분석이 발견에 사용되었다고 보도됨
- 「수상한 곳에 대한 직관」보다 「광범위한 영역을 기계적으로 검증하는 힘」이 효과적이었을 가능성
- 대응은 근본적으로 버전 업데이트뿐. WAF는 대체할 수 없음
취약점을 찾는 측에도 AI가 도입되기 시작하고 있다.
그것은 지키는 측에게 희소식인 동시에, 약간의 불안이기도 하다.
마찬가지로 「WordPress를 운영하지 않으니 관계없다」라고 생각했던 사람이 있다면,
그것은 아마, 자신을 포함하여 당신뿐만이 아닐 것이다.
「누구나 알 수 있는 보안 이야기」 시리즈에서는,
보안의 메커니즘을 언어화해 나갑니다.
👉 스톡(Stock)을 팔로우해 두면 다음 기사를 놓치지 않습니다!
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기