PHP·Node.js 긴급 보안 업데이트: WireBoard 조치 현황과 사이트 점검 방법

Patrick Wunderlin
Patrick Wunderlin
PHP·Node.js 긴급 보안 업데이트: WireBoard 조치 현황과 사이트 점검 방법

오늘(2026년 10월 21일) PHP와 Node.js가 보안 업데이트를 공개했습니다. 특히 PHP는 위험도가 매우 높은 취약점 두 건을 수정했습니다. 공격자가 로그인 없이 웹 서버에서 코드를 실행할 수 있는 취약점으로, 패치가 공개되기도 전에 실제 공격이 보고됐습니다.

WireBoard는 이미 업데이트를 마쳤습니다. 서비스 중단은 없었으며, WireBoard 계정이나 추적 스크립트에 따로 조치하실 필요도 없습니다.

다만 직접 운영하는 웹사이트나 앱이 PHP 또는 Node.js를 사용한다면, 아래 내용을 확인하고 오늘 안에 업데이트해 주세요.

핵심 요약

업데이트할 버전

심각도

PHP

8.5.12, 8.4.27, 8.3.36 또는 8.2.35 (또는 공급업체가 패치한 패키지)

치명적(CVSS 9.2), 인증 없이 원격 코드 실행 가능

Node.js

26.12.1, 24.22.1 또는 22.23.4

높음

  • WordPress, Magento, Drupal, Laravel 등 PHP 기반 앱을 쓰고 있다면 PHP를 사용 중인 것입니다. 지금 업데이트하세요.

  • 공유 호스팅이나 관리형 호스팅을 사용하시나요? PHP 패치는 호스팅 업체가 적용합니다. 적용 여부를 확인하세요.

  • PHP를 업데이트한 뒤에는 PHP-FPM 또는 Apache를 재시작하세요. 재시작하지 않으면 이전 버전이 계속 실행됩니다.

  • 지원이 종료된 버전(PHP 8.1 이하, Node.js 25, 23, 20 이하)을 사용 중이라면 공식 패치가 제공되지 않습니다. 지원 중인 버전으로 전환할 계획을 세우세요.


어떤 문제가 있었나요?

PHP: "PHP2Shell" (CVE-2026-109618 및 CVE-2026-109619)

PHP 개발팀이 치명적인 취약점 두 건의 패치를 공개했습니다. 두 취약점 모두 CVSS v4.0 기준 9.2점입니다.

  • CVE-2026-109618: PHP가 요청을 처리하는 도중 메모리가 부족해지면 메모리 손상이 발생해 원격 코드 실행으로 이어질 수 있습니다.

  • CVE-2026-109619: 이전에 남은 전역 상태를 악용해 원격으로 코드를 실행할 수 있습니다.

두 취약점 모두 기본 설정에서 인증 없이 원격으로 악용할 수 있습니다. 예정된 패치 공개일 하루 전에 세부 정보가 온라인에 유출됐습니다. 보안 업체들은 패치가 나오기도 전에 PHP 사이트를 겨냥한 공격과 탐색 시도를 포착했습니다. 일부 기업은 업데이트를 마칠 때까지 예방 차원에서 서비스를 중단하기도 했습니다.

현재 지원 중인 모든 PHP 계열이 영향을 받습니다. 각 계열에서 8.2.35, 8.3.36, 8.4.27, 8.5.12보다 이전 버전이 해당합니다.

Node.js: 2026년 10월 보안 업데이트

Node.js는 26.x, 24.x, 22.x 계열에서 취약점 10건을 수정했습니다. 이 중 4건은 심각도가 '높음'입니다. 주요 내용은 다음과 같습니다.

  • CVE-2026-111497: Brotli 압축 해제기의 범위 밖 쓰기 취약점으로, 원격 코드 실행으로 이어질 수 있습니다. 앱에서 Brotli로 압축된 데이터를 반환하는 서버에 fetch()를 호출하는 것만으로도 영향을 받을 수 있습니다.

  • CVE-2026-105483 / CVE-2026-106069: IP 주소를 비표준 방식으로 표기해 TLS 호스트 이름 검증을 우회할 수 있습니다.

  • CVE-2026-105482: dns.resolve가 코드에서 검증한 이름과 다른 이름을 조회할 수 있습니다.

WireBoard는 이렇게 조치했습니다

오늘 WireBoard 인프라 전체에 두 업데이트를 모두 적용했습니다. 서비스 중단이나 데이터에 미친 영향은 없었습니다. WireBoard는 이전과 똑같이 사용하시면 됩니다.

내 사이트도 영향을 받나요?

직접 운영하는 웹사이트, 앱, 서버가 다음 중 하나를 사용한다면 조치가 필요합니다.

  • PHP를 직접 사용하거나 WordPress, WooCommerce, Magento, Drupal, Joomla, Laravel, Symfony 같은 CMS 또는 프레임워크를 통해 사용하는 경우

  • Node.js를 사용하는 경우. Next.js, Nuxt, Express, NestJS 앱이나 Node로 구동하는 백엔드 서비스, 빌드 서버 등이 해당합니다.

잘 모르겠다면 개발자나 호스팅 업체에 이렇게 물어보세요. "우리 사이트가 PHP나 Node.js를 사용하나요? 오늘 나온 보안 업데이트가 적용됐나요?"

현재 버전 확인하기

PHP

확인해야 할 것은 웹 서버가 사용하는 PHP 버전입니다. 터미널에서 php -v를 실행하면 명령줄용 PHP 버전이 표시되므로, 웹 서버의 버전과 다를 수 있습니다.

  1. 사이트의 웹 루트에 info.php 파일을 만들고 <?php phpinfo();를 입력합니다.

  2. 브라우저에서 이 파일을 열고 맨 위의 PHP Version을 확인합니다.

  3. 확인이 끝나면 파일을 즉시 삭제하세요. 서버 설정 전체가 외부에 노출됩니다.

cPanel, Plesk 등 호스팅 관리 패널에서도 PHP 버전을 확인할 수 있는 경우가 많습니다.

Linux 배포판 패키지 사용 시 주의: Ubuntu, Debian, RHEL 등은 버전 번호를 바꾸지 않고 보안 수정 사항을 기존 버전에 적용하는 경우가 많습니다. 이때는 패키지 변경 이력에서 해당 CVE ID를 확인하세요. 방법은 아래에 안내합니다.

Node.js

node -v

v26.12.1, v24.22.1, v22.23.4 또는 같은 계열의 더 최신 버전이 표시되면 패치가 적용된 상태입니다.

PHP 업데이트하기

서버의 PHP 설치 방식에 맞는 항목을 확인하세요.

공유 호스팅 또는 관리형 호스팅

PHP 관리와 패치 적용은 호스팅 업체가 담당합니다. 업체의 서비스 상태 페이지나 공지사항을 확인한 다음, 앞서 안내한 phpinfo()로 버전을 확인하세요. 관리 패널에서 PHP 버전을 선택할 수 있고 현재 8.1 이하를 사용 중이라면, CMS와 플러그인이 지원하는지 확인한 뒤 8.2 이상으로 전환하세요.

Ubuntu / Debian

sudo apt update
# replace 8.3 with the PHP branch you use
sudo apt install --only-upgrade 'php8.3-*'

# confirm the fix is included
apt changelog php8.3-fpm | grep -E 'CVE-2026-10961(8|9)'

마지막 명령어의 출력이 없다면 아직 해당 배포판 저장소에 패치가 반영되지 않은 것입니다. Ubuntu 보안 공지 또는 Debian 보안 추적 페이지를 확인하고 나중에 다시 시도하세요. Ondřej Surý의 PHP 패키지를 사용한다면 해당 저장소에서 같은 방식으로 업데이트하세요.

RHEL / AlmaLinux / Rocky Linux

dnf module list php          # see which PHP stream you're on
sudo dnf upgrade 'php*'

# confirm the fix is included
rpm -q --changelog php-fpm | grep -E 'CVE-2026-10961(8|9)'

Remi 저장소를 사용한다면 해당 저장소에서 업데이트하세요.

Docker

새 이미지를 내려받는 것만으로는 실행 중인 컨테이너가 업데이트되지 않습니다. 이미지를 내려받고, 다시 빌드한 뒤 컨테이너를 재생성하세요.

docker pull php:8.3-fpm        # use your tag
docker compose build --pull
docker compose up -d

더 확실하게 관리하려면 Dockerfile에 패치 버전을 고정하세요. 예를 들면 FROM php:8.3.36-fpm으로 지정할 수 있습니다.

소스에서 직접 빌드하거나 Windows를 사용하는 경우

php.net/downloads에서 패치가 적용된 버전을 내려받으세요.

업데이트 후 PHP 재시작

빠뜨리기 쉬운 단계입니다. 실행 중인 프로세스는 재시작하기 전까지 이전 PHP 버전을 계속 사용합니다.

# PHP-FPM (Debian/Ubuntu; replace 8.3 with your branch)
sudo systemctl restart php8.3-fpm

# PHP-FPM (RHEL family)
sudo systemctl restart php-fpm

# Apache with mod_php
sudo systemctl restart apache2   # or httpd on RHEL

재시작 후 phpinfo()를 다시 확인해 새 버전이 실제로 실행 중인지 확인하세요.

"설정만 바꾸면 안 되나요?"

안 됩니다. 초기에 session.upload_progress.enabled를 끄는 등의 임시 대응책이 공유됐지만, 위험을 줄이는 수준에 그칩니다. PHP 핵심 개발자도 PHP 업데이트만이 실질적인 대응 방법이라고 공개적으로 밝혔습니다. 임시 대응책을 적용했다면 업데이트가 끝날 때까지 유지하되, 반드시 업데이트하세요.

Node.js 업데이트하기

설치 방식

업데이트 방법

nvm

nvm install 24(또는 22 / 26)를 실행한 뒤 nvm alias default 24 실행

공식 설치 프로그램

nodejs.org/en/download에서 현재 사용 중인 계열의 최신 버전 다운로드

Docker

FROM node:24.22.1처럼 패치가 적용된 태그로 고정한 뒤 docker pull을 실행하고 다시 빌드하세요. node:24처럼 버전이 고정되지 않은 태그는 캐시된 이미지로 빌드할 경우 이전 버전이 그대로 남을 수 있습니다.

Homebrew

brew update && brew upgrade node(또는 node@24 / node@22)를 실행하세요. Homebrew에는 반영이 몇 시간 늦어질 수 있습니다. 급하다면 nvm이나 설치 프로그램을 사용하세요.

Linux 패키지 관리자

평소처럼 배포판 또는 NodeSource 저장소를 통해 업데이트하세요.

호스팅 플랫폼 (Vercel, Netlify, Heroku, Render 등)

플랫폼의 런타임 설정과 공지사항을 확인하세요. 대부분 패치된 런타임을 자동으로 배포하지만, 앱을 다시 배포해야 할 수도 있습니다.

업데이트가 끝나면 앱을 재시작하거나 다시 배포한 뒤, node -v로 버전을 확인하세요.

지원이 종료된 버전을 사용 중이라면

공식 패치는 지원 중인 버전에만 제공됩니다.

  • PHP: 8.2, 8.3, 8.4, 8.5가 지원 대상입니다. PHP 8.1 이하에는 공식 패치 버전이 나오지 않습니다. 일부 Linux 배포판과 유료 장기 지원 업체는 기존 버전에 보안 패치를 적용하므로, 해당 업체에 확인하세요. 그렇지 않다면 지원 중인 계열로 업그레이드하는 것이 안전합니다. PHP 8.2의 보안 패치 지원도 2026년 12월 31일에 종료됩니다.

  • Node.js: 22.x, 24.x, 26.x가 지원 대상입니다. 25, 23, 20 등은 지원이 종료돼 패치가 제공되지 않습니다.

당장 업그레이드하기 어렵다면, 업그레이드할 때까지 웹 애플리케이션 방화벽으로 사이트를 보호하거나 접근을 제한하는 방안을 검토하세요.

더 알아보기

공식 보안 공지

참고 가이드

이 글 공유하기
복사됨!
Patrick Wunderlin

작성자

Patrick Wunderlin

WireBoard.io 창립자. EPFL 출신 컴퓨터 엔지니어로, 웹 분석과 실시간 데이터 처리, 그리고 비즈니스 성장을 돕는 도구를 만드는 데 열정을 쏟고 있습니다.

WireBoard

내 사이트를 실시간으로 추적해 보세요

직접 만드는 실시간 대시보드. 무료로 시작하세요. 카드 등록도, 번거로움도 없습니다.