PHP 라는 프로그램에 심각한 결함 두 개가 발견됐습니다. PHP 는 전 세계 웹사이트 상당수가 돌아가는 바탕이고, 이 글을 보는 분의 사이트도 거기서 돌 가능성이 높습니다.
그런데 이상한 게 있었습니다. 그 결함은 10년도 더 전부터 그 자리에 있었습니다. 그동안 수많은 보안 연구자가 PHP 를 뜯어봤는데도요.
제가 알고 싶었던 건 하나입니다. 왜 지금 나왔나.
PHP 재단이 낸 보안 공지 두 건을 직접 열었습니다. 결함의 정식 번호와 영향 범위, 위험도 점수가 거기 있습니다.
그리고 이 결함을 찾아낸 연구팀이 공개한 기술 문서를 읽었습니다. 공지에 적힌 발견자 명단과 그 문서의 저자가 같은 사람이라, 1차 자료가 맞습니다.
마지막으로 PHP 공식 변경 기록을 열어 어느 버전에서 고쳐졌는지 맞춰봤습니다.
발견한 연구팀이 이렇게 적었습니다.
“근본적인 결함들은 수십 년간 존재해 왔다. 다만 그것이 실제로 악용 가능하다는 것을 입증하려면 예외적으로 복잡한 단계의 연쇄가 필요했고, 그것은 사람 연구자가 현실적으로 달성할 수 있는 한계선에 있었다.”
출처: Wiz Research, PHP2Shell
어려운 말이라 한 번 더 풀면 — 결함이 거기 있다는 건 알 수도 있었습니다. 문제는 그게 진짜 위험하다는 걸 증명하는 일이 사람이 할 만한 범위의 끝에 걸려 있었다는 겁니다.
그래서 안전했던 이유가 결함이 없어서가 아니었습니다. 공격하는 쪽에게도 그게 너무 번거로운 일이었던 겁니다.
같은 글의 결론입니다.
“최신 AI 모델과 적절한 도구가 있으면, 연구자 한 명이 일주일에 예전이라면 세계 최고 수준의 팀이 몇 달 걸렸을 일을 해냈다.”
출처: Wiz Research, PHP2Shell
사람에게 번거로움은 비용입니다. 하루에 쓸 수 있는 집중력이 정해져 있고, 지겨운 작업은 버티기 어렵습니다. AI 에게는 그 비용이 없습니다.
바뀐 건 결함이 아닙니다. 그걸 파낼 수 있는가가 바뀌었습니다.
날짜를 보면 이렇습니다. 8월 19일에 연구팀이 찾아서 8월 24일에 PHP 측에 알렸습니다. 10월 20일에 공개됐고 다음 날 긴급 패치가 나왔습니다.
그리고 공개 당일부터 공격 시도가 관측됐습니다.
두 결함은 위험도 9.2 점(10점 만점)을 받았습니다. 둘 다 로그인 없이 서버에서 명령을 실행할 수 있는 종류입니다.
여기가 제일 중요한 부분입니다.
내 사이트가 지금까지 안 털린 이유를 「누가 이런 데를 노리겠어」 로 생각했다면, 그 생각은 절반만 맞았습니다.
이런 종류의 공격은 대상을 고르지 않습니다. 사람이 어느 사이트를 털지 하나하나 고르는 게 아니라, 프로그램이 인터넷 전체를 긁으면서 버전만 보고 들어옵니다. 대기업 사이트든 혼자 운영하는 블로그든 버전이 낮으면 똑같이 걸립니다.
지금 할 일은 하나입니다. 사이트를 만들어준 곳이나 호스팅 업체에 이렇게 물어보면 됩니다.
“우리 사이트 PHP 버전이 몇인가요? 10월에 나온 보안 패치가 적용됐나요?”
패치된 버전은 8.2.35 · 8.3.36 · 8.4.27 · 8.5.12 이고, 이보다 낮으면 올려야 합니다. 직접 고칠 일은 아닙니다. 물어보는 것까지가 쓰는 쪽 몫입니다. 대부분의 호스팅 업체는 이미 올려뒀습니다. 안 올라가 있으면 그게 더 중요한 신호입니다.
제가 작업하면서 「이건 이론상 가능한데 현실적으로 누가 하겠어」 로 분류해 넘긴 것들이 떠올랐습니다. 그 분류의 기준이 사람의 귀찮음이었다면, 그건 이제 기준이 아닙니다.