Mac에서 PHP 2026년 10월 긴급 보안 수정 적용하기: Homebrew, MacPorts, MAMP, Server.app, 그리고 방화벽
게시일 2026-10-22
2026년 10월 21일 14:00(UTC), PHP 프로젝트는 전날 사전 공지한 대로 PHP 8.5.12, 8.4.27, 8.3.36, 8.2.35를 출시했습니다. 인증되지 않은 요청으로 서버에서 코드를 실행할 수 있는 두 가지 심각한 결함을 수정한 릴리스이며, 두 결함 모두 CVSS v4.0 기준 9.2로 평가되었습니다. php.net의 설명은 분명합니다. 완전한 완화책은 없으며, 업데이트만이 안전한 선택입니다.
대부분의 보도와 해설은 Linux 호스팅을 전제로 합니다. 배포판 패키지가 나오면 설치하면 된다는 전제입니다. Mac은 사정이 다릅니다. 지금 수정되었는지는 PHP를 어디에서 설치했는지에 달려 있으며, 이 글을 쓰는 시점(2026년 10월 22일)에는 Homebrew, MacPorts, MAMP, Apple 기본 PHP마다 답이 다릅니다. 이 글에서는 하나씩 살펴본 뒤, 마지막으로 그 앞에 있는 방화벽을 다룹니다.
두 가지 결함
- CVE-2026-109618(GHSA-w8hw-w9fx-j79w): 메모리 부족 처리 과정에서 요청 데이터가 일부만 초기화된 상태로 PHP가 중단될 수 있으며, 이어지는 정리 과정에서 잘못된 데이터를 올바른 데이터로 취급합니다.
- CVE-2026-109619(GHSA-6wmf-4rv5-p3rp): 한 요청에 속한 상태가 메모리가 해제된 뒤에도 남아, 같은 워커에서 처리되는 이후 요청이 그 상태를 사용할 수 있습니다.
웹 요청을 처리하는 모든 PHP가 영향을 받습니다. PHP-FPM, Apache의 mod_php, php-cgi, FrankenPHP, LiteSpeed입니다. php.net은 mod_php의 위험이 가장 높다고 보며, 애플리케이션 코드가 실행되기 전에 인증되지 않은 요청만으로 공격이 성립하는 익스플로잇이 시연되었습니다. 직접 작성한 코드나 플러그인, 로그인 페이지는 방어막이 되지 못합니다.
PHP 8.1 이하에는 공식 릴리스가 없습니다. 소스에서 빌드하는 사용자를 위해 보안 팀은 7.4, 8.0, 8.1용 최소한의 백포트를 php-src 브랜치로 공개했습니다(예: PHP-8.1-CVE-2026-109618-109619). 7.4보다 오래된 버전용은 없습니다.
Homebrew: 수정됨, 단 PHP-FPM을 재시작하십시오
Homebrew는 10월 21일에 새 릴리스를 패키지로 제공했습니다. php는 8.5.12이고, [email protected], [email protected], [email protected]는 각각 8.4.27, 8.3.36, 8.2.35입니다. 따라서 brew upgrade php(또는 brew upgrade [email protected] 등)로 수정이 적용됩니다. Homebrew의 자동 업데이트를 꺼 두었다면 먼저 brew update를 실행하십시오.
- 업그레이드한 뒤에는 PHP-FPM을 재시작하십시오. 두 결함 중 하나는 오래 실행되는 워커 안에 있으며, 업그레이드 전에 시작된 워커는 이전 코드로 계속 실행됩니다.
brew services restart php(또는[email protected])를 실행하고, Apache가 PHP를 모듈로 불러온다면 Apache도 재시작하십시오. - 설치된 PHP를 모두 확인하십시오. formula가 여러 개 설치된 경우가 흔합니다.
brew list --versions | grep php로 모두 볼 수 있으며, 각각 업그레이드하고 재시작해야 합니다. [email protected]에는 수정이 없습니다. Homebrew는 이를 지원 중단(deprecated)으로 표시하며 8.1.34에 머물러 있습니다. 해당 사이트는 지원되는 브랜치로 옮기십시오.- Intel Mac에서는 소스에서 빌드됩니다. 이 글을 쓰는 시점에 이번 릴리스용 Homebrew의 미리 빌드된 bottle은 Apple 실리콘 Mac용뿐이므로, Intel Mac에서는 업그레이드할 때 PHP를 컴파일합니다. 시간이 걸리며 Apple 명령줄 도구가 필요합니다.
MacPorts: 업그레이드하면 수정됩니다
MacPorts는 10월 22일에 수정 버전을 공개했습니다(php85 8.5.12, php84 8.4.27, php83 8.3.36). port install은 이미 설치된 포트를 이전 버전 그대로 두므로 명시적으로 업그레이드하십시오.
sudo port selfupdate
sudo port upgrade outdated
sudo port reload php84-fpm
-fpm 포트는 사용하는 브랜치에 맞추십시오. 다시 불러와야 하는 이유는 Homebrew와 같습니다. 설치된 항목은 port installed | grep php로 확인할 수 있습니다.
MAMP: MAMP의 업데이트를 기다리십시오
MAMP는 자체 빌드한 PHP를 함께 제공합니다. Homebrew나 MacPorts에서 온 것이 아니며, MAMP가 업데이트를 출시할 때만 바뀝니다. 그때까지는 제공하는 PHP 버전마다 MAMP가 사용하는 php.ini에 임시 설정을 넣고 MAMP의 서버를 재시작하십시오. MAMP를 자신의 Mac에서 개발용으로만 쓴다면 노출은 작습니다. 네트워크나 인터넷에 웹사이트를 제공한다면 다른 서버와 똑같이 다루십시오.
Apple PHP와 Server.app: 수정은 오지 않습니다
아직 Apple Server.app을 실행하는 오래된 Mac(macOS 10.13 세대)은 Apple PHP 7.1을 mod_php로 Apache에 불러와 웹사이트를 제공합니다. 이번 권고가 설명하는 가장 나쁜 조합입니다. 가장 위험한 PHP 실행 방식인 데다, 버전이 너무 오래되어 7.4부터 시작하는 소스 백포트조차 없습니다. Apple이 업데이트하지도 않습니다. (macOS 12 이후의 Mac에는 PHP 자체가 포함되어 있지 않습니다.)
해결책은 웹사이트를 Apple PHP 옆에서 실행되는, 지원되는 PHP(PHP-FPM)로 옮기는 것입니다. 그 방법은 「이미 가진 Mac 서버로 10년 더」에서 소개했습니다. MacPorts PHP 8.5로 전환하고, 모든 사이트를 전환 전후로 확인하며, 하나라도 깨지면 되돌립니다. FrontierStack의 현대화 패널은 이제 이런 사이트를 PHP 8.5.12 이상으로 옮기며 그보다 오래된 버전은 받아들이지 않습니다. 옮기면 사이트가 권고에서 가장 위험하다고 한 mod_php에서 벗어납니다. 아직 옮길 수 없는 사이트라면 꼭 공개해야 하는지 따져 보십시오. 직원만 쓰는 인트라넷 페이지라면 사내 네트워크나 VPN에서만 보이도록 제한할 수 있습니다.
OPNsense와 pfSense: 방화벽의 PHP
방화벽도 PHP로 동작합니다. OPNsense의 웹 GUI는 PHP로 작성되어 root로 실행되며, 종속 포털(captive portal)은 게스트 기기에 PHP 페이지를 제공합니다. 즉 게스트 네트워크에서는 막아야 할 기기가 바로 그 PHP와 통신합니다. 이 글을 쓰는 시점에 OPNsense는 수정을 발표하지 않았습니다. FreeBSD 포트 트리에는 이미 수정된 PHP(8.3.36, 8.4.27, 8.5.12)가 있지만, OPNsense는 PHP를 자체 펌웨어 패키지로 배포하며, OPNsense 포럼의 한 사용자는 26.1이 아직 PHP 8.3.30이라고 지적했습니다.
- 수정이 나오면 OPNsense의 펌웨어 업데이트(System ▸ Firmware ▸ Updates)로만 업데이트하십시오. 방화벽에 PHP 패키지를 직접 설치하지 마십시오.
- 그때까지는 웹 GUI를 신뢰할 수 있는 네트워크에서만 접속할 수 있게 하십시오. WAN에서도, 게스트나 IoT 네트워크에서도 접속할 수 없어야 합니다.
- 종속 포털을 사용한다면 OPNsense의 발표를 특히 주의 깊게 지켜보십시오. 신뢰할 수 없는 기기가 직접 닿는 PHP이기 때문입니다.
pfSense도 nginx와 php-fpm으로 PHP를 사용합니다. 이 글을 쓰는 시점에 Netgate는 권고를 발표하지 않았습니다. 대응은 같습니다. Netgate가 수정을 내놓으면 pfSense 자체의 업데이트 방법으로 업데이트하고, 그때까지는 GUI를 신뢰할 수 없는 네트워크에 노출하지 마십시오.
Linux 서버: 버전 번호가 아니라 보안 추적 페이지를 확인하십시오
php.net에 따르면 Linux 배포판과 LTS 제공업체는 패치를 미리 받았습니다. 많은 배포판이 이미 제공하는 PHP 버전에 수정을 백포트하므로, 수정된 서버도 8.2.35나 8.4.27보다 낮은 번호를 표시할 수 있습니다. 버전을 비교하지 말고 배포판의 보안 추적 페이지에서 CVE-2026-109618과 CVE-2026-109619를 확인하고, 패키지를 업데이트한 뒤 PHP-FPM이나 Apache를 재시작하십시오.
아직 업데이트할 수 없다면
php.net은 특정 공격 경로에 대한 노출을 줄이는 설정을 제시합니다. 다만 이것으로 설치가 안전해지지는 않는다고 분명히 밝히므로, 업데이트를 대신하는 것이 아니라 업데이트까지의 임시 조치로 다루십시오.
session.upload_progress.enabled = 0: php.ini나 PHP-FPM 풀에서 설정하십시오.ini_set()과.user.ini파일은 너무 늦게 적용되므로 의존하지 마십시오. 그런 다음 모든 워커를 재시작하십시오.- PHP 8.5에서는
fatal_error_backtraces = 0도 설정하고 마찬가지로 재시작하십시오. php.net에 따르면 이 설정은 확인된 백트레이스 경로만 막습니다. post_max_size를 작게 유지하십시오. 업로드를 받지 않는 사이트는 8M, 받는 사이트는 32M로 하고,upload_max_filesize는 그보다 작게 하십시오.- php.net은
memory_limit = -1(애플리케이션이 덮어쓸 수 없는 곳에서 설정)도 제시하지만, 메모리 할당 실패가 여전히 결함에 닿을 수 있다고 경고합니다. 메모리가 적은 Mac에서는 제한을 없애면 폭주한 요청 하나가 다른 모든 것의 메모리를 빼앗을 수도 있습니다.
오늘 할 일
- PHP를 제공하는 모든 기기를 목록으로 만들고, 각 PHP의 출처(Homebrew, MacPorts, MAMP, Apple, Linux 배포판, 방화벽 펌웨어)를 확인하십시오.
- Homebrew: PHP formula를 하나씩 업그레이드하고, PHP-FPM과 Apache를 재시작한 뒤 버전을 확인하십시오.
- MacPorts:
sudo port selfupdate를 실행하고 PHP 포트를 업그레이드한 뒤 PHP-FPM을 다시 불러오고 버전을 확인하십시오. - MAMP: 지금 임시 설정을 적용하고 재시작한 뒤, 수정된 PHP가 포함된 MAMP 업데이트가 나오면 바로 적용하십시오.
- Server.app의 Apple PHP: 이번 주 안에 PHP-FPM으로 옮길 계획을 세우고, 그때까지는 공개할 필요가 없는 사이트에 접속할 수 있는 대상을 제한하십시오.
- Linux: 배포판 업데이트를 설치하고, 보안 추적 페이지에서 두 CVE를 확인한 뒤 PHP를 재시작하십시오.
- 방화벽: OPNsense나 pfSense의 GUI는 신뢰할 수 있는 네트워크에만 두고, 수정이 나오면 펌웨어 업데이트로 업데이트하십시오.
- 실제로 실행 중인 것을 확인하십시오.
php -v가 보여 주는 것은 명령줄 PHP이며, 사이트를 제공하는 PHP와 같다는 보장은 없습니다. 웹 서버가 사용하는 버전도 확인하고, 이를 위해phpinfo()페이지를 썼다면 확인 직후 삭제하십시오.
FrontierStack이 돕는 방법
FrontierStack이 위의 단계를 대신하지는 않습니다. 다음 업데이트는 해야 할 일을 더 빨리 찾고 잊지 않게 해 줍니다.
- 플릿 실행 ▸ PHP 버전 및 보안 수정은 연결된 서버 전체를 읽기 전용으로 확인하는 작업입니다. 각 서버의 모든 PHP(Homebrew, MacPorts, MAMP, Apple 기본 PHP, 배포판 패키지, SSH를 통한 OPNsense 또는 pfSense 펌웨어)를 나열하고, 서버가 php-fpm, php-cgi, mod_php로 웹에 PHP를 제공하는지 표시하며, 각각을 php.net의 해당 브랜치 최신 릴리스와 비교합니다. 보안 릴리스보다 오래되었거나 더 이상 수정이 제공되지 않는 브랜치의 설치에는 표시가 붙습니다. FrontierStack은 PHP를 직접 업데이트하지 않습니다. AI 프롬프트 복사는 Claude Code, AI 관리자 또는 다른 에이전트용 프롬프트를 클립보드에 넣으며, 에이전트는 각 서버의 설치 출처에서 한 번에 한 대씩 PHP를 업데이트하고 변경할 때마다 확인을 요청하며, 배포판과 방화벽 패키지는 제공업체의 보안 추적 페이지를 확인합니다. 매뉴얼의 플릿 실행을 참조하십시오.
- 구형 Mac 서버 현대화는 이제 PHP 8.5를 설치하고 수정을 강제합니다. 설치, 전환, 이동은 이 수정이 포함된 첫 PHP 8.5인 8.5.12보다 오래된 버전을 받아들이지 않습니다. 이전에 PHP 8.4로 설정한 서버에는 PHP 8.5(으)로 이동이 표시되며, 전후로 모든 사이트를 확인하고 하나라도 깨지면 곧바로 되돌립니다. PHP가 이후 보안 릴리스를 내놓은 당일에도 MacPorts가 패키지로 만들기 전에 경고합니다. PHP 8.5 업데이트는 이제 PHP 포트를 실제로 업그레이드하고 PHP-FPM을 재시작합니다. 이전에는 설치를 다시 실행해도 이미 설치된 PHP가 업그레이드되지 않았습니다. curl, rsync, OpenSSL 업데이트도 이제 업그레이드하며, MacPorts 설치 프로그램은 macOS 26과 27을 포함해 MacPorts가 지원하는 모든 macOS에서 작동합니다. 보안 체크리스트는 아직 Apple PHP를 쓰는 웹사이트를 실패 항목으로 표시하고, 패널은 서버에서 오래된 MacPorts 도구를 나열합니다. 매뉴얼의 현대화 패널을 참조하십시오.
- PHP 패널에는 Mac의 모든 PHP(Homebrew, MAMP, MacPorts, Apple 기본)를 대상으로 한 보안 확인이 추가됩니다. 8.5.12보다 오래된 버전(이전 브랜치는 8.4.27, 8.3.36, 8.2.35보다 오래된 버전)을 표시하고, 8.1 이하는 수정이 제공되지 않는 것으로 표시하며, 각각의 해결 방법을 알려 줍니다.
- Router Health는 API로 연결된 OPNsense 방화벽의 펌웨어 패키지 목록에서 설치된 PHP 버전을 읽고, 해당 브랜치의 최신 보안 릴리스보다 오래되었으면 경고합니다. 수정 자체는 여전히 OPNsense 펌웨어로 적용합니다. 매뉴얼의 방화벽 주요 지표를 참조하십시오.
세 기능 모두 읽고 보고할 뿐입니다. 변경은 각 PHP의 출처를 통해, 사용자가 승인할 때만 이루어집니다.
출처: php.net의 10월 20일 사전 공지와 2026년 10월 21일 릴리스 공지, 위에 링크한 php-src 권고 두 건, 2026년 10월 22일에 확인한 Homebrew, MacPorts, FreeBSD 패키지 정보. 릴리스 직후 며칠 동안은 패키지 버전이 빠르게 바뀌므로, 의존하기 전에 다시 확인하십시오.
Mac에서 모두 운영하십시오.
FrontierStack은 이 Mac과 연결된 서버에서 서비스를 설치, 모니터링, 보호하며 — 암호와 키는 어떤 AI에게도 보이지 않게 지킵니다.
FrontierStack 다운로드Apple 공증 완료 · 안전 & 보안 · macOS 13 Ventura 이상
