로그인 없이 서버가 뚫린다고? PHP2Shell 취약점과 대응 방법

이전 글과 다음 글
현재 글을 기준으로 앞뒤 글을 바로 이동해서 볼 수 있습니다.
Loading Services...

현재 글을 기준으로 앞뒤 글을 바로 이동해서 볼 수 있습니다.
로그인조차 필요 없다. 해커가 특수하게 조작된 요청만 보내면 웹사이트 서버를 통째로 마음대로 휘두를 수 있는 치명적인 구멍이 발견됐다. 바로 전 세계 웹서버에서 널리 쓰이는 프로그래밍 언어 PHP에서 터진 보안 사고다.
이번에 발견된 취약점은 통칭 PHP2Shell이라 불린다. 놀라운 건 이 결함이 무려 10년 넘게 인간 개발자들의 눈을 피해 숨어 있었다는 사실이다. 결국 이 결함을 세상 밖으로 끌어낸 것은 다름 아닌 고성능 추론 AI였다.
웹사이트 소스 코드가 아무리 완벽해도 PHP 자체의 메모리 관리 결함 때문에 서버 전체가 위험에 빠질 수 있다.
이번 사태는 두 가지 형태의 메모리 관련 결함에서 시작됐다. 하나는 메모리 초과 상황에서 데이터 구조가 제대로 초기화되지 않아 발생하는 오류고, 다른 하나는 이전 요청이 남긴 찌꺼기가 다음 요청에서 재사용되며 발생하는 오류다.

상황은 생각보다 심각하다. 보안업체의 조사에 따르면, 취약점에 노출된 것으로 추정되는 국내 PHP 호스트는 약 11만 개로 전 세계에서 6위에 달한다. 특히 업데이트가 제대로 되지 않은 중소 규모 사이트나 방치된 구형 사이트가 주 타깃이 될 수 있다.
가장 확실한 해결책은 최신 보안 패치를 적용하고 반드시 프로세스를 재시작하는 것이다. 패치만 하고 재시작을 안 하면 구버전 프로세스가 그대로 돌아가서 취약점이 유지된다는 점을 꼭 기억해야 한다.
| 사용 중인 PHP 계열 | 조치해야 할 정식 해결 버전 |
|---|---|
| PHP 8.5 | 8.5.12 이상 |
| PHP 8.4 | 8.4.27 이상 |
| PHP 8.3 | 8.3.36 이상 |
| PHP 8.2 | 8.2.35 이상 (8.3 이상 전환 권장) |
업데이트가 즉시 어렵다면 임시로라도 조치를 취해야 한다. 세션 업로드 기능을 끄거나 메모리 제한 설정을 조정하는 등의 완화 조치를 검토할 수 있다. 하지만 이는 어디까지나 임시방편일 뿐이다.
정부는 현재 사이버 위기 경보를 '주의' 단계로 올리고 긴급 대응에 나섰다. 보안 업데이트를 마쳤더라도 이상 접속 기록이나 침투 흔적이 있는지 꼼꼼히 살펴보고, 피해가 의심되면 즉시 신고해야 한다.