데일리 · 기사 01 · 5 분 읽기
- 보안
PHP, Brotli 보안 수정을 담은 Windows 패키지 재배포
10월 26일자 공식 발표 · 10월 27일 JST 원문 확인
요약·개요
PHP 개발팀이 10월 26일 Brotli 1.2.1을 넣은 Windows용 패키지를 재배포했습니다. PHP 본체 번호는 그대로여서, 담당자는 설치 패키지의 -1 개정과 실제 적용을 함께 확인해야 합니다.
서버가 다른 서비스에서 가격표를 받아 오는 중에도 압축 해제 프로그램이 동작할 수 있습니다. PHP 개발팀이 10월 26일 재배포한 Windows 패키지는 이 통신 경로에 쓰이는 부품을 고친 것입니다.
핵심 팩트
PHP 개발팀은 Windows용 8.5.12-1·8.4.27-1·8.3.36-1·8.2.35-1을 공개했습니다. 압축을 푸는 부품 Brotli를 1.2.1로 올려 CVE-2026-111497을 수정한 패키지입니다. CVE는 공개된 보안 결함에 붙는 식별번호입니다. 끝의 -1은 부품을 교체해 다시 만든 Windows 패키지를 뜻하며, PHP 본체의 실행 버전은 그대로입니다. PHP 발표 · 다운로드

1. PHP 서버가 답을 받아 읽을 때
서버는 사이트 방문자의 요청을 처리하고 필요한 자료를 보내 주는 컴퓨터입니다. PHP는 WordPress 같은 웹사이트에서 이 처리를 맡는 프로그램이고, cURL 확장은 PHP가 다른 서버에서 자료를 가져오게 하는 통신 도구입니다. Brotli는 전송량을 줄이는 압축 방식이며, 디코더는 받은 자료를 다시 읽을 수 있게 풀어 주는 부품입니다.
자동 압축 해제를 켠 가상의 가게 서버가 외부 가격표 서비스를 호출한다고 해 봅시다. 평소에는 압축된 가격표를 풀어 숫자를 읽습니다. 여기서는 외부 서비스가 침해돼 공격자가 바꾼 응답을 보냈다고 가정합니다. 그 자료를 수정 전 디코더가 풀면 결함에 도달할 수 있습니다.
%% 가상 가격표 서비스가 침해됐을 때의 입력 경로 · PHP와 cURL 문서 기준
flowchart TD
A["가게의 Windows PHP 서버"] -->|"가격표 요청"| B["가정: 외부 서비스 침해"]
B -->|"조작된 Brotli 응답"| C["cURL 자동 압축 해제 켜짐"]
C --> D["수정 전 디코더가 자료 처리"]PHP 공지는 Windows 패키지에서 cURL의 HTTP 응답 자동 압축 해제를 켰을 때 취약한 디코더에 도달할 수 있다고 설명합니다. cURL 기본값은 꺼짐이지만 앱이나 통신 라이브러리가 켤 수 있습니다. 운영자가 직접 켠 기억이 없어도 앱의 설정을 살펴야 하는 이유입니다. 자동 압축 해제 옵션
고양이와 풀어보기 Q&A
- 고양이 연구원
내 사이트에 파일 업로드 창이 없어도 이 경로를 쓰는 거야?
포켓 노트외부 서버의 응답을 받아 압축을 푸는 기능이 있으면 이 경로를 쓸 수 있어. 이 예에서는 침해된 가격표 서비스의 응답이 입구야. 실제 노출 여부는 앱이 그 자료를 취약한 Brotli 처리로 푸는지에 달려 있어.
2. 잘못된 압축 자료가 만드는 피해
메모리는 프로그램이 일하는 동안 자료를 잠깐 두는 작업 공간입니다. 이번 결함은 잘못된 압축 입력을 처리하다가 정해진 작업 칸 밖까지 쓰는 문제입니다. Brotli 개발팀은 이를 1.2.1에서 수정했다고 밝혔고, 같은 CVE를 다룬 Node.js 공지는 메모리 손상이 처리 중단·정보 노출·조건에 따른 코드 실행으로 이어질 수 있다고 설명합니다. Brotli 릴리스 · Node.js 보안 설명
작업 칸 옆에는 다른 자료나 프로그램이 다음 처리를 이어 가는 데 쓰는 정보도 있을 수 있습니다. 그 정보를 덮어쓰면, 나중에 이를 읽는 프로그램이 멈추거나 의도와 다른 일을 할 수 있습니다. 아래 표는 이 일반 원리를 작업 칸에 비유한 것으로, 이번 PHP 결함의 실제 메모리 배치나 공격 성공을 재현한 것은 아닙니다. 보안 약점 분류 CWE의 범위 밖 쓰기 설명
| 처리 상황 | 작업 공간에서 생기는 일 | 이어질 수 있는 결과 |
|---|---|---|
| 정상 처리 | 자료를 정해진 칸 안에 기록 | 다른 처리 정보를 보존하며 작업 계속 |
| 경계 밖 쓰기 | 칸을 넘어 다른 자료나 처리 정보를 덮음 | 중단·정보 노출, 조건에 따라 공격자가 고른 코드 실행 |
- 처리 상황
정상 처리
- 작업 공간에서 생기는 일
- 자료를 정해진 칸 안에 기록
- 이어질 수 있는 결과
- 다른 처리 정보를 보존하며 작업 계속
- 처리 상황
경계 밖 쓰기
- 작업 공간에서 생기는 일
- 칸을 넘어 다른 자료나 처리 정보를 덮음
- 이어질 수 있는 결과
- 중단·정보 노출, 조건에 따라 공격자가 고른 코드 실행
고양이와 풀어보기 Q&A
- 고양이 연구원
압축 데이터를 읽는 일이 왜 코드 실행으로 이어질 수도 있어?
포켓 노트데이터를 명령문으로 믿고 실행하는 문제가 아니라, 프로그램이 다음 처리를 결정할 때 쓰는 정보까지 덮일 수 있기 때문이야. 그 정보가 어떻게 손상되는지와 실행 환경에 따라 결과가 달라져. 처리가 멈추는 경우도 있어서 모든 메모리 오류가 코드 실행으로 이어지는 것은 아니야.
3. 8.4.27이라고 보여도 패키지는 바뀐다
설치 패키지는 PHP 본체와 통신·압축 같은 의존 부품을 묶습니다. 이번 공식 Windows 재배포본의 대응은 다음과 같습니다.
| PHP 실행 버전 | 교체할 Windows 패키지 |
|---|---|
| 8.5.12 | 8.5.12-1 |
| 8.4.27 | 8.4.27-1 |
| 8.3.36 | 8.3.36-1 |
| 8.2.35 | 8.2.35-1 |
- PHP 실행 버전
8.5.12
- 교체할 Windows 패키지
- 8.5.12-1
- PHP 실행 버전
8.4.27
- 교체할 Windows 패키지
- 8.4.27-1
- PHP 실행 버전
8.3.36
- 교체할 Windows 패키지
- 8.3.36-1
- PHP 실행 버전
8.2.35
- 교체할 Windows 패키지
- 8.2.35-1
예를 들어 공식 Windows 패키지로 PHP 8.4.27을 쓰는 사이트라면 8.4.27-1 배포 묶음을 찾아야 합니다. 관리 화면의 PHP 번호만으로는 포함된 Brotli 수정까지 알 수 없으므로, 설치한 패키지 이름·개정과 공급자의 수정 기록을 함께 봅니다.
고양이와 풀어보기 Q&A
- 고양이 연구원
호스팅 업체에는 어떻게 물어보면 돼?
포켓 노트“이 사이트를 처리하는 PHP에 어떤 패키지 개정과 Brotli 수정이 적용됐는지, 교체 뒤 실행 중인 PHP에도 반영됐는지 알려 주세요”라고 물으면 돼. 패키지 파일을 내려받았다는 답만으로는 사이트가 새 부품을 쓰는지 알 수 없어.
4. 내 환경에서 적용을 확인하는 근거
운영체제나 설치 방식을 모르면 서버 담당자에게 그 정보부터 묻습니다. 호스팅 업체가 별도 패키지를 공급한다면 수정 내용을 자기 배포판에 넣은 근거를 받아야 합니다. Windows용 -1을 Linux 서버의 업데이트 번호로 적용하는 것은 아닙니다.
| 확인 대상 | 담당자에게 받을 근거 |
|---|---|
| 무엇을 교체했나 | 공식 Windows 패키지의 이름·개정, 또는 공급자 보안 수정 기록 |
| 사이트에 반영됐나 | 사이트 요청을 실제로 처리하는 PHP가 사용하는 Brotli 버전과 교체 후 반영 확인 결과 |
| 기능이 계속 동작하나 | 외부 자료 조회 등 기존 기능의 점검 결과 |
- 확인 대상
무엇을 교체했나
- 담당자에게 받을 근거
- 공식 Windows 패키지의 이름·개정, 또는 공급자 보안 수정 기록
- 확인 대상
사이트에 반영됐나
- 담당자에게 받을 근거
- 사이트 요청을 실제로 처리하는 PHP가 사용하는 Brotli 버전과 교체 후 반영 확인 결과
- 확인 대상
기능이 계속 동작하나
- 담당자에게 받을 근거
- 외부 자료 조회 등 기존 기능의 점검 결과
PHP의 cURL 정보에는 사용 중인 Brotli 버전을 보여 주는 항목이 있습니다. 담당자는 이를 해당 사이트의 실행 환경에서 볼 수 있습니다. 명령줄에서 확인한 PHP가 사이트를 처리하는 PHP와 다른 설치본일 수 있으므로, 확인 대상을 맞추는 것이 중요합니다. PHP의 cURL 버전 정보
서버를 바꾸기 전에는 백업을 확보하고 기존 구성에 맞는 패키지를 고릅니다. 교체 후에는 실행 중인 웹 처리에도 반영됐는지와 기존 기능이 동작하는지를 점검해야 대응이 끝납니다.
고양이와 풀어보기 Q&A
- 고양이 연구원
WordPress 본체를 최신으로 바꾸면 이 부품도 바뀌어?
포켓 노트PHP 패키지는 서버·호스팅 담당자가 별도로 관리해. 그 담당자에게 PHP 쪽의 수정 적용 근거를 받으면 돼.
마무리
사이트가 실제로 쓰는 부품까지
앞서 다룬 Node.js의 Brotli 수정과 같은 결함이 Windows PHP의 배포 묶음에서도 처리됐습니다. 운영자에게 필요한 마지막 답은 “새 파일을 받았다”가 아니라 “사이트를 처리하는 PHP에 수정된 부품이 반영됐다”는 근거입니다.
출처
- PHP 발표php.net
- 다운로드php.net
- 자동 압축 해제 옵션curl.se
- Brotli 릴리스github.com
- Node.js 보안 설명nodejs.org
- 보안 약점 분류 CWE의 범위 밖 쓰기 설명cwe.mitre.org
- PHP의 cURL 버전 정보php.net