Florian Olivo / Unsplash
사진: Florian Olivo / Unsplash
PHP 취약점 2건(CVE-2026-109618, CVE-2026-109619)이 10월 21일 공개됐고, 로그인 없이 원격에서 코드를 실행할 수 있는 등급이라 한국인터넷진흥원(KISA)도 같은 날 보안 업데이트를 권고했습니다. 해결 버전은 8.2.35, 8.3.36, 8.4.27, 8.5.12이며, 이보다 낮은 버전으로 웹사이트를 돌리고 있다면 대상입니다. 워드프레스, 그누보드, 라라벨처럼 PHP 위에서 도는 사이트를 운영 중이라면 오늘 안에 서버의 PHP 버전부터 확인하세요. 이 글은 10월 22일 저녁 기준 PHP 공식 공지와 KISA 공지를 바탕으로 정리했습니다.
핵심은 메모리를 다루는 과정에서 생긴 결함 두 개가 합쳐지면 서버 장악까지 갈 수 있다는 점입니다. PHP 개발팀은 두 건 모두 CVSS v4.0 기준 9.2점으로 분류했고, 인증 없이 원격 코드 실행(RCE)이 가능할 수 있다고 밝혔습니다.
사진: Taylor Vick / Unsplash
무서운 대목은 공격 시점입니다. 공식 공지에 따르면 Apache에 PHP를 모듈로 붙인 mod_php 환경에서는 애플리케이션 코드가 실행되기도 전에 인증 없는 요청 하나로 공격이 동작하는 시연 익스플로잇이 이미 있습니다. 플러그인을 잘 관리하고 관리자 비밀번호를 길게 걸어 둬도 PHP 엔진 자체가 낡았다면 막아 주지 못한다는 뜻입니다.
해외 반응도 빨랐습니다. 한국경제와 아시아경제 보도에 따르면 네덜란드와 핀란드 일부 정부기관은 예방 차원에서 웹사이트를 잠시 내렸습니다. 실제 공격(in the wild) 피해가 확인됐다는 내용은 공식 공지에 아직 없습니다.
아래 표에서 내 버전이 왼쪽 범위에 들어가면 업데이트 대상입니다. PHP 8.1 이하는 표에 없는데, 안전해서가 아니라 공식 보안 지원이 끝나 패치 버전 자체가 나오지 않기 때문입니다.
| 사용 중인 계열 | 영향받는 버전 | 해결 버전 | 비고 |
|---|---|---|---|
| PHP 8.5 | 8.5.12 미만 | 8.5.12 이상 | 최신 계열 |
| PHP 8.4 | 8.4.27 미만 | 8.4.27 이상 | – |
| PHP 8.3 | 8.3.36 미만 | 8.3.36 이상 | – |
| PHP 8.2 | 8.2.35 미만 | 8.2.35 이상 | 2026년 12월 31일 지원 종료 |
| PHP 8.1 이하 | 전부 위험권 | 공식 패치 없음 | 지원 계열로 이전 필요 |
여기서 흔한 실수가 하나 있습니다. 터미널에서 php -v만 치고 안심하는 경우인데, 이 명령은 CLI용 PHP 버전을 보여 줄 뿐입니다. 웹 요청을 처리하는 PHP-FPM이나 mod_php는 다른 패키지라 버전이 다를 수 있으니, 반드시 웹 쪽에서 phpinfo()나 사이트 건강 화면으로 교차 확인해야 합니다.
정답은 해결 버전 이상으로 올리고 PHP 프로세스를 재시작하는 것입니다. 공식 공지가 “완전한 완화책은 없고 업데이트만이 안전한 선택”이라고 못박았기 때문에, 설정 변경만으로 버티는 방법은 임시방편으로 봐야 합니다.
사진: Mohammad Rahmani / Unsplash
Ubuntu, Debian, RHEL 계열처럼 OS 패키지로 PHP를 설치했다면 배포판 보안 업데이트를 받으면 됩니다. PHP 측은 배포판과 장기지원(LTS) 벤더에 패치를 미리 전달했다고 밝혔습니다. 다만 배포판은 버전 숫자를 그대로 올리지 않고 기존 번호에 패치만 덧붙이는 백포트 방식을 쓰는 경우가 많습니다. 그래서 숫자가 8.3.36이 아니라고 무조건 미적용은 아니니, 해당 배포판 보안 공지에서 두 CVE 번호가 반영된 패키지인지 확인하세요.
예를 들어 PHP 8.2로 워드프레스 블로그 하나를 운영 중이라면 이번에 8.2.35로 올려도 두 달 뒤 연말에 다시 지원이 끝납니다. 테마와 플러그인 호환성을 점검할 여유가 있다면 이번 기회에 8.3 이상으로 한 번에 옮기는 편이 작업을 두 번 하지 않는 길입니다.
공식 공지가 제시한 완화책은 특정 공격 경로를 좁혀 줄 뿐 서버를 안전하게 만들지는 않습니다. 업데이트 일정이 잡히기 전까지 시간을 버는 용도로만 쓰세요.
| 대상 취약점 | 임시 조치 | 주의할 점 |
|---|---|---|
| CVE-2026-109618 | memory_limit = -1 을 php_admin_value 방식으로 고정 | RLIMIT_AS·RLIMIT_DATA 제한은 오히려 취약한 실패를 부를 수 있어 쓰지 않음 |
| CVE-2026-109618 | post_max_size 축소(업로드 없으면 8M, 있으면 32M), upload_max_filesize는 그보다 작게 | 웹서버·프록시에서 요청 크기와 필드 수도 함께 제한 |
| CVE-2026-109619 | session.upload_progress.enabled = 0 후 모든 워커 재시작 | ini_set()이나 .user.ini가 아니라 php.ini 또는 FPM 풀 설정에 적용 |
| CVE-2026-109619 | PHP 8.5는 fatal_error_backtraces = 0 추가 | display_errors나 @로 오류를 숨기는 것은 효과 없음 |
memory_limit을 무제한으로 풀면 메모리 폭주 위험이 커집니다. 공지가 컨테이너나 cgroup 단위 제한을 가용성 경계로 함께 두라고 권하는 이유가 여기에 있습니다. 소스로 직접 빌드하는 7.4, 8.0, 8.1 사용자를 위해 PHP 보안팀이 최소 백포트 브랜치를 GitHub에 올려 두긴 했지만, 공식 지원 버전이 아니니 이전 계획과 함께 써야 합니다.
해결되지 않습니다. 이번 문제는 워드프레스가 아니라 그 아래에서 도는 PHP 엔진에 있습니다. 워드프레스 버전이 최신이어도 서버 PHP가 해결 버전 미만이면 그대로 노출됩니다.
공식 공지가 영향 범위로 꼽은 것은 웹 요청을 처리하는 설치 형태(PHP-FPM, mod_php, php-cgi, FrankenPHP, LiteSpeed)입니다. 외부 요청을 받지 않는 CLI 전용 환경은 노출 경로가 다르지만, 같은 서버의 웹용 PHP가 함께 설치돼 있지 않은지 반드시 확인하세요.
그렇지 않습니다. Nginx는 보통 PHP-FPM과 붙어서 동작하고, PHP-FPM도 영향 대상에 포함됩니다. mod_php는 위험도가 가장 높다고 언급된 것일 뿐 FPM이 제외된 것은 아닙니다.
같은 계열 안에서 패치 버전만 올리는 경우(예: 8.3.35에서 8.3.36)는 보안·버그 수정 위주라 호환성 문제가 드뭅니다. 8.2에서 8.3처럼 계열을 바꿀 때는 테마·플러그인 호환성을 스테이징 환경에서 먼저 점검하는 것이 안전합니다.
침해가 의심되거나 대응 방법이 궁금하면 한국인터넷진흥원 사이버민원센터(국번 없이 118)에 문의할 수 있습니다.
한화엠앤에스 공개매수 물량이 2620만주로 늘었습니다. 주당 8000원, 11월 2일 마감 일정과 NH투자증권 응모 방법, 안분…
플레이오프 예매 일정과 삼성 KIA 경기 시간을 정리했습니다. 광주 3·4차전은 10월 22일 오후 2시와 3시…
반대매매가 5거래일 3407억 원으로 급증했습니다. 담보비율 140% 기준, 몇 퍼센트 하락에 팔리는지 계산 예시, 부족액보다…
상생소비복권 응모 방법 총정리. 디지털온누리 앱 동의 후 3만 원 결제마다 응모권이 쌓이고 비수도권은 2배입니다.…