화면은 멀쩡한데 버전만 멈춰 있습니다
홈페이지가 어제와 똑같이 열리기 때문에, 서버 안에서 무엇이 멈춰 있는지는 밖에서 보이지 않습니다. PHP 버전이 그렇습니다. 버전이 낡아도 화면은 느려지지 않고 오류도 나지 않으므로, 담당자가 바뀌는 동안 확인 대상에서 조용히 빠집니다.
그래서 남의 조사를 인용하지 않고 직접 세어 보았습니다. 더블루캔버스 리뷰 아카이브에 대상 사이트 주소가 남아 있는 641곳에 차례로 접속해, 서버가 스스로 붙여 보낸 응답 헤더의 X-Powered-By 와 Server 만 읽었습니다. 취약점을 찔러 보는 시도는 하지 않았고, 첫 화면 한 번을 받은 것이 전부입니다. 615곳이 응답했습니다.
버전을 드러낸 26곳 중 22곳이 지원 종료였습니다
응답 헤더에 PHP 버전이 그대로 적혀 있던 곳은 26곳이었습니다. 그 가운데 보안 지원이 남아 있는 버전은 네 곳뿐이었고, 나머지 22곳은 이미 지원이 끝난 버전이었습니다.
| 버전 | 곳 | 보안 지원 종료일 | 경과 |
|---|---|---|---|
| 7.4 | 6곳 | 2022-11-28 | 3년 9개월 |
| 7.3 | 5곳 | 2021-12-06 | 4년 8개월 |
| 5.4 | 4곳 | 2015-09-03 | 10년 11개월 |
| 5.2 | 2곳 | 2011-01-06 | 15년 7개월 |
| 8.3 · 8.4 | 4곳 | 2027-12-31 · 2028-12-31 | 지원 기간 안 |
표에 적지 않은 5.3 한 곳, 7.1 한 곳, 7.2 두 곳, 8.1 한 곳까지 더하면 26곳이 됩니다. 지원이 끝난 22곳 가운데 21곳은 종료일로부터 3년이 넘게 지나 있었고, 가장 오래된 곳은 2011년에 끝난 5.2.17 이었습니다.
지원 종료는 고쳐 주지 않는다는 뜻입니다
보안 지원이 끝났다는 말은 성능이 조금 떨어진다는 뜻이 아닙니다. 새 취약점이 발견되어도 그 버전을 위한 수정본이 더 이상 나오지 않는다는 뜻입니다. PHP 공식 지원 정책에 그렇게 적혀 있습니다.
공격하는 쪽에서 보면 버전 번호는 어떤 취약점이 남아 있는지 알려 주는 목록과 같습니다. 화면을 아무리 새로 만들어도 그 아래에서 도는 버전이 그대로면 조건은 달라지지 않습니다.
버전을 감춘 곳이 다섯 배 넘게 많았습니다
이번 측정에서 한 가지를 더 확인했습니다. 쿠키와 최종 주소, 응답 헤더로 보아 PHP로 도는 것이 확인된 곳은 157곳이었는데, 버전까지 읽힌 곳은 26곳뿐이었습니다. 나머지 131곳은 버전 번호를 내보내지 않는 설정(expose_php = Off)이었습니다.
이 설정은 자동으로 훑고 다니는 목록에서 빠지게 해 주므로 켜 두는 편이 낫습니다. 다만 감추는 것과 올리는 것은 다른 일입니다. 번호를 가려도 서버에 남아 있는 취약점은 그대로 남습니다. 그래서 이번 편의 숫자는 "몇 퍼센트가 위험하다"가 아니라 "버전을 드러낸 곳이 몇 곳이고 그중 몇 곳이 지원 종료였다"까지만 말합니다.
30초면 확인할 수 있습니다
- 브라우저에서 F12 를 눌러 개발자 도구를 엽니다.
- 네트워크 탭을 열고 새로 고침한 다음, 맨 위의 문서 요청을 고릅니다.
- 오른쪽 응답 헤더에서
x-powered-by: PHP/7.4.33처럼 적힌 줄을 찾습니다. - 그 줄이 없다면 서버에 접속해
php -v한 줄로 확인합니다.
버전을 확인하셨다면 PHP 공식 지원 버전 표와 대조해 보시면 됩니다. 종료일이 이미 지난 버전이라면 올리는 일정을 잡으셔야 합니다.
올릴 때는 순서를 지켜야 합니다
- 지금 버전을 적어 둡니다. 응답 헤더나
php -v로 확인한 값을 그대로 기록합니다. - 호환성을 먼저 확인합니다. CMS와 플러그인, 라이브러리가 요구하는 버전을 맞춰 봅니다.
- 복제본에서 먼저 올려 봅니다. 같은 구성의 사본을 만들어 올린 뒤 오류를 잡습니다.
- 그다음에 실서버를 올리고, 버전을 감추는 설정은 마지막에 켭니다.
세 번째 단계를 건너뛰고 실서버부터 올리면 되돌릴 자리가 남지 않습니다. 버전이 크게 뛸수록 오래된 함수가 사라져 화면이 멈추는 경우가 있으므로, 복제본에서 한 번 지나가는 시간이 결국 가장 짧습니다.
PHP 버전만 문제가 되는 경우는 드뭅니다. 홈페이지가 해킹됐는지 10초 만에 확인하는 방법과 인증서 점검을 함께 확인하시면 서버 상태를 대략 파악하실 수 있습니다.
측정은 2026년 8월 30일에 했습니다. 특정 회사를 가리키지 않도록 화면과 본문의 도메인은 모두 example.com 으로 바꾸어 적었고, 헤더 값만 측정에서 나온 그대로 썼습니다.