2026년 10월 20일부터 26일 사이에 PHP, Node.js, Java가 줄줄이 보안 업데이트를 냈다. 서버 하나에 셋이 다 돌고 있으면 뭐부터 올려야 할지 당최 감이 안 온다.
내 판단으로는 PHP부터다. 인증 없는 원격 코드 실행이 두 건이다. 공지는 mod_php에서 인증 없는 요청 하나로 공격이 시연됐다고 적었다.
올릴 버전 한눈에
공식 공지에 적힌 수정 버전만 모았다.
| 런타임 | 발표일 | 올릴 버전 | 최고 점수·등급 |
|---|---|---|---|
| PHP | 10월 21일 | 8.5.12 / 8.4.27 / 8.3.36 / 8.2.35 | Critical, CVSS v4.0 9.2 |
| Node.js | 10월 21일 | v26.12.1 / v24.22.1 / v22.23.4 | HIGH |
| Java(Oracle) | 10월 20일 CPU, 21·24일 알림 | 아래 Java 인증서 절 참고 | CVSS 9.1(21·24일 알림) |
먼저 지금 버전부터 찍어 보자.
# 각 런타임 버전 확인
php -v
node -v
java -version
PHP 원격 코드 실행 두 건

PHP는 하루 전에 사전 공지까지 띄웠다. 두 건 모두 CVSS v4.0 9.2다.
- CVE-2026-109618 : 메모리 부족으로 덜 초기화된 요청 데이터를 정리 단계가 유효한 것으로 다루는 문제
- CVE-2026-109619 : 해제된 요청 상태를 같은 워커의 다음 요청이 쓰는 문제
대상은 웹 요청을 받는 모든 PHP다. PHP-FPM, mod_php, php-cgi, FrankenPHP, LiteSpeed가 다 들어간다.
PHP 8.1 이하는 PHP 프로젝트의 업데이트가 없다. 대신 보안팀이 7.4·8.0·8.1용 최소 소스 백포트를 따로 내놨다. 배포판이나 LTS 벤더 패키지를 쓴다면 벤더 쪽을 확인하면 된다. 8.2도 2026년 12월 31일에 보안 지원이 끝난다.
도커 공식 이미지에는 수정 버전 태그가 이미 올라와 있다.
# 마이너 태그를 다시 받고 버전을 찍어 확인
docker pull php:8.4-fpm
docker run --rm php:8.4-fpm php -v # 8.4.27 이상인지 본다
PHP 설정 하나는 더 꺼 둔다
올린 뒤에도 끝이 아니다. 10월 23일 추가 공지는 다음 정기 릴리스까지 세션 업로드 진행 기능을 꺼 두라고 권했다. CVE-2026-115560은 그때 전체 권고가 나온다.
; php.ini 또는 FPM 풀 설정에 둔다. ini_set()·.user.ini로는 안 된다
session.upload_progress.enabled = 0
; 바꾼 뒤 모든 워커를 재시작한다
이 설정은 21일 공지에서 CVE-2026-109619 완화책으로도 나왔다. 109618 쪽 완화책은 memory_limit=-1과 낮은 post_max_size다. 공지는 둘 다 완전한 해결이 아니라고 못 박았다.
윈도 PHP는 10월 26일에 나온 8.5.12-1 같은 재빌드로 한 번 더 바꿔야 한다. Brotli 1.2.1이 들어가 CVE-2026-111497을 막는다. cURL의 자동 응답 압축 해제를 켠 앱이 대상이다.
Node.js 10건
26.x, 24.x, 22.x 세 줄기가 같이 나왔다. 10건 중 HIGH가 4건이다.
- CVE-2026-111497 : 번들 Brotli 디코더 범위 밖 쓰기(원격 코드 실행 가능)
- CVE-2026-106069 : 호스트가 느슨하게 IP로 해석될 때(예: 0127.0.0.1) TLS 호스트명 검증 우회
- CVE-2026-105483 : 전각 숫자 IP에서 TLS 호스트명 검증 우회 (26·24만)
- CVE-2026-105482 : dns.resolve가 NUL 문자가 든 이름을 잘라 처리
Brotli 건은 위 PHP 윈도 재빌드와 같은 CVE다. 압축 라이브러리 하나가 두 런타임을 같이 흔든 셈이다.
지원이 끝난 v20·v25는 고친 버전이 없다. 공식 글도 EOL 버전은 보안 릴리스 때마다 늘 영향받는다고 적었다. 22·24·26 일정은 Node.js 26 LTS 글에 따로 적어 뒀다.
Java 인증서 추가 알림
Java는 한 번에 끝나지 않았다. 순서대로 보면 이렇다.
- 10월 20일 CPU : Oracle Java SE 55건, 최고 7.5
- 10월 21일 알림 : CVE-2026-91403(9.1), eMudhra 중간 CA 인증서 불신 처리
- 10월 24일 알림 : CVE-2026-114820(9.1), eMudhra 루트 CA 인증서 제거
함정은 21일 알림의 영향 목록에 8u511, 11.0.33, 17.0.21, 21.0.13, 25.0.5, 27.0.1이 들어 있다는 점이다. 24일 알림은 8u511-b32와 .0.2가 붙은 빌드까지 영향 목록에 넣었다. 이 번호로 올렸다고 안심하면 안 된다.
Temurin은 이 건을 고친 빌드로 27.0.1.0.2+1, 25.0.5+8, 21.0.13+9, 17.0.21+9를 냈다. 8과 11은 10월 26일 기준 업스트림 태그를 기다리는 중이었다.
내 런타임이 해당되는지는 OpenJDK가 안내하는 CheckCerts.java로 본다. JDK 8 이상에서 돈다. 갱신 빌드가 아직 없으면 공식 안내의 폐기 확인 옵션을 켜는 방법도 있다.
# TLS 연결에서 인증서 폐기 여부를 확인하게 한다 (app.jar는 예시)
java -Dcom.sun.net.ssl.checkRevocation=true \
-Dcom.sun.security.enableCRLDP=true -jar app.jar
도커 이미지 태그 함정
10월 29일에 도커 공식 이미지 정의를 열어 보니 eclipse-temurin 태그는 아직 21.0.12.1 같은 10월 이전 빌드를 가리켰다. 라벨만 새 우유인데 내용물은 지난주 우유인 셈이다. Java 이미지는 태그를 다시 받는 것으로 끝내지 말고 컨테이너 안에서 java -version을 찍어 위 Temurin 빌드 번호와 맞춰 보는 걸 권장한다.
참고
- PHP 2026-10-21 보안 공지 https://www.php.net/archive/2026.php#2026-10-21-5
- Node.js 2026년 10월 보안 릴리스 https://nodejs.org/en/blog/vulnerability/october-2026-security-releases
- Oracle CPU 2026년 10월 https://www.oracle.com/security-alerts/cpuoct2026.html
- Oracle 보안 알림 CVE-2026-114820 https://www.oracle.com/security-alerts/alert-CVE-2026-114820.html
- OpenJDK eMudhra 안내 https://openjdk.org/emudhra
'개발 > 백엔드' 카테고리의 다른 글
| 🐘 PostgreSQL 14 지원 종료 11월 12일 · 버전별 종료표 (0) | 2026.10.30 |
|---|---|
| 🟣 .NET 8 지원 종료 2026년 11월 10일 · 9도 같은 날 끝난다 (0) | 2026.10.30 |
| 🔒 GitHub Actions lockfile 2026 · actions.lock 언제 쓰나 (0) | 2026.10.29 |
| 🪟 윈도우10 ESU 연장 · 2027년 10월 12일까지 받는 법 (0) | 2026.10.26 |
| 🟩 Node.js 26 LTS 10월 28일 · 22는 2027년 4월 종료 (0) | 2026.10.25 |