PHP2Shell 악용 성공 사례가 아직 없다는 표현은 실제 인터넷 환경, 구체적으로는 Wiz의 허니팟에서 관측되지 않았다는 뜻임. 취약점 자체는 이미 악용에 성공했으며, 대표적으로 “Steal my Bitcoin” 챌린지가 있음.
Trail of Bits의 Dan Guido는 범용 공격 코드를 확보했다고 주장함. 지금까지의 실적을 보면 이를 의심할 이유는 없다고 봄.
[1]: https://stealmybitcoin.com/.
[2]: https://news.ycombinator.com/item?id=50226010.
덧붙이면, 이 댓글을 쓴 뒤 HN 제목이 변경됨.
stealmybitcoin.com이 HN에 올라왔을 때는 “아무도 훔치지 못했으니 취약점은 가짜고 전부 AI 마케팅”이라는 식의 댓글 수백 개가 높은 추천을 받았다는 게 흥미로움.
정작 악용에 성공한 뒤에는 후속 논의가 전혀 없고, 원래 토론에 참여한 대다수는 성공 사실조차 모를 것 같음.
범용 공격 코드라고 주장한 것은 아님. 작동하는 공격 코드가 있다고 했을 뿐임. 취약점의 성격상 이 분야 종사자라면 범용이라는 표현을 매우 조심해서 쓸 것이고, Guido의 댓글도 그에 부합해 보임.
실제 내용은 “함정처럼 보임. 상금을 가져갈 수 있는 RCE는 있지만, 시연하면 우리가 만든 방법이 유출될 수 있음. 아직 패치할 시간이 남아 있으니 위험을 감수하고 싶지 않음”이라는 취지임. 내 해석으로는 다른 이들에게 공격 코드 제작의 실마리를 주고 싶지 않다는 뜻임.
Steal my Bitcoin 공격은 특정 구성에서 작동하며, 챌린지 운영자가 사이트에 축약된 phpinfo 등 일부 정보를 공개한 것도 그 때문임.
불과 지난주에는 기업들이 PHP2Shell 공격이 수개월째 만연했다고 했는데, 사실이라면 우리 로그에도 이상한 오류가 나타나야 하지 않을까? 뭔가 석연치 않음.
Steal my Bitcoin 챌린지는 일반적인 PHP 운영 환경과 전혀 달랐음. 인터넷에 노출하지 말라고 명시된 PHP 내장 개발 서버를 쓰는, 극도로 비현실적이고 어리석은 구성이었음.
공격하려면 같은 워커에 요청을 보내야 한다면 그것부터 별도의 난관인데, 챌린지에서는 이 부분을 다루지 않았음. pm.max_requests를 1로 설정해 요청마다 프로세스를 다시 띄우면 100% 안전해져 범용 공격이라는 주장이 무의미해지는 걸까? 아니면 요청 한 번만으로도 공격이 가능할까?
벤치마크도 실행해 봤는지 궁금함. 이런 용도의 벤치마크가 있는지도 모르겠음. PHP와 웹 서버를 놓고 성능을 따지는 게 좀 우스울 수도 있지만, 원래 토론에서 내가 제안했을 때 성능을 우려하는 이들이 있었음.
특히 Zend 할당자는 세밀한 추적과 잘 맞지 않아 시스템 할당자로 바꿔야 한다고 하는데, 그렇다면 기존 할당자로는 이 취약점을 잡지 못했을까?
어떤 테스트를 어떤 개념 증명(PoC) 코드로 수행했는지? 공개된 php2shell 공격 도구는 기본 8.4에서도 이미 워커를 죽임. 8개 중 8개가 충돌하고 셸 획득은 0개라면, “DoS로 바뀌었다”는 것은 이식의 효과가 아니라 원래 상태일 수 있음.
메모리 부족 오류를 일으키는 것도 memory_limit이 설계대로 작동하는 것이지 시스템 침해가 아님. 증거를 제시해야 함.
Bleeping Computer는 취약한 버전에 PHP 6도 포함된다고 보도했음. 검증 기준을 그다지 신뢰하기 어려움.
아직 패치 중인 팀이라면 먼저 외부에 노출된 호스트와 컨테이너 중 취약한 PHP 버전을 실행하는 대상 목록부터 확인하는 것이 실용적임. 이 목록은 불완전한 경우가 많음. 패치해도 이미 심어진 악성 파일은 제거되지 않으므로, 노출된 호스트의 웹 루트와 업로드 디렉터리에서 새로 생기거나 수정된 PHP 파일을 확인하고 패치 이전 접근 로그도 검토할 필요가 있음. 허니팟에서 성공 사례가 적다는 것은 추세 파악에는 유용하지만, 내 서버가 침해됐는지는 거의 알려주지 못함.
지난 며칠간 이 사안에 몰두하면서, 변화하는 상황을 시각이 명시된 상세 연표로 정리하고 있음. https://claude.ai/artifact/5cZex56WutyVnpMBrWXxzV
요약하면 특정 구성에서 악용에 성공한 사례는 여러 개 있음. 다만 단일 워커 mod_php처럼 공격하기 쉽게 꾸민 허니팟이거나, 실제 운영 환경과 얼마나 비슷한지 불분명한 실험 환경인 경우가 꽤 많음. Dan Guido와 Trail of Bits의 광범위하게 통하는 공격 코드 주장도 있지만 세부 정보는 부족함. 실제 인터넷에서 수백만 번의 시도가 있었지만 침해 증거는 극히 적고, Unit 42는 자신들이 제시했던 증거를 철회함.