# [자신만을 위한 총결] 2026 년 10 월 '광기의 72 시간'과 Node.js 긴급 릴리스―웹의 신뢰 기반을 흔든 연속 사고의 전모

> https://bookfactory.kr/board/news/23352
> 게시판: 뉴스
> 작성자: admin
> 작성일: 2026-10-23T06:44:36.372Z

---

이번 일들을 일단 정리해 보았습니다. 이는 저의 주변 환경을 보호하기 위해 최선의 수단을 취해야 한다는 관점에서 메모로 작성한 것입니다.

절대적으로 가장 우선시해야 할 것은 전문가의 의견을 따르는 것입니다.

저의 관여하고 있는 사이트는 PHP 를 업데이트했으나, "상황이 안정될 때까지 일시 정지"로 설정하여 유지보수 페이지를 통해 임시로 운영을 중단했습니다.

## PR 코멘트

채용 사이트 '그린'의 게재에 협조하고 있습니다.

IT/웹 업계의 채용 및 중간 채용 정보를 강점으로 하는 이직 사이트 '그린 (Green)'은 IT 업계 최대 규모의 이직 서비스입니다. 엔지니어, 디자이너 등 IT 직종부터 영업, 관리 부서까지 다양한 직종이 게재됩니다.

IT 및 웹 분야를 중심으로, 전 직원이 원격 근무가 가능한 채용 정보도 게재되어 있습니다. 방문해 보시기를 바랍니다.

회사를 찾아 상담을 구하면 이중 인증조차 모르는 사람이 많아서 놀랐습니다. 절대 하지 않으면 안 되는 시대입니다.

시간이 없는 사람용도 일단은

## 목차

- PR 코멘트
- 3 분 만에 파악할 수 있는 전체 그림
- 신뢰를 무너뜨린 '3 대 사고'의 진실
- eMudhra: 인증 기관의 비밀 키가 '3~8비트'였다는 충격
- 2. PingCAP/TiDB 클라우드: 28 일간 침묵한 침투와 제어 평면 유출
- 3. PHP2Shell: 웹의 70% 를 흔든 인증되지 않은 원격 코드 실행과 '정보 공개 붕괴'
- 동일하게 공개된「Node.js 10 월 보안 릴리스」의 진실
- ① eMudhra 침해에 대한 긴급 대응 (SPKI 블록 목록의 하드코딩)
- 따라서 Node.js 는 이번 릴리스에서 다음을 구현합니다.
- TLS 호스트명 검증이 3 단계로 무너진 문제 (CVE-2026-105483 / 106069 / 106072)

2026 년 10 월 17 일부터 21 일까지의 단 5 일간, 특히 10 월 19 일부터 21 일까지의'72 시간' 동안 현대 인터넷과 웹 시스템이 무의식적으로 믿어왔던'신뢰의 전제'를 근본적으로 흔드는 중대한 사고가 연쇄적으로 발생했습니다.

![画像](https://assets.st-note.com/img/1792624664-uvEP7pqtwWyNR4rdZnA1JBXa.jpg?width=1200)

- 인증 기관의 비밀 키가 초등학교 학생이 쉽게 해독할 정도로 약함 (eMudhra 사건)
- SaaS 기반 분산 데이터베이스의 제어 평면이 28 일간 유출됨 (PingCAP TiDB Cloud 사건)
- 70%의 웹사이트를 지탱하는 PHP 코어에서 인증되지 않은 원격 코드 실행 (RCE) 취약점이 발견되어 정보 공개가 붕괴되었습니다 (PHP2Shell).
- 이러한 긴급 대응 조치와 함께 Node.js 가 10 개의 CVE 를 한 번에 수정했습니다 (10 월 보안 릴리스).

왜 오랫동안 방치되어 온 심각한 보안 취약점이 최근 몇 일 사이에 집중적으로 드러났을까요?

이번 글은 정말로 저의 이해를 돕기 위해 쓴 글입니다.

전문가의 의견을 최우선으로 고려해 주시기 바랍니다.

이 글에서는 각국 CERT, 감독 기관 (CISA, ENISA, CERT-In), 브라우저 벤더 (Google, Mozilla), 그리고 각 오픈소스 프로젝트의 공식 1 차 정보를 바탕으로 '사실과 검증되지 않은 주장'을 엄격히 구분하여, 이 역사적 사고의 전貌와 현장이 취해야 할 실무 대응을 정리했습니다.

이 문서는 현장 전문가가 원활하게 활동할 수 있도록 하기 위해, 사무직을 배제할 수 있는 최선의 방법을 파악하기 위해 참고 자료로 활용하고자 합니다.

![画像](https://assets.st-note.com/img/1792624709-kHgYUKpcfqyiDrBjSXOAv4TP.jpg?width=1200)

## 3 분 만에 파악할 수 있는 전체 그림

## 신뢰를 무너뜨린 '3 대 사고'의 진실

![画像](https://assets.st-note.com/img/1792624720-LYN5BJDcIgAohFriCZ8UPKuy.jpg?width=1200)

### eMudhra: 인증 기관의 비밀 키가 '3~8bit'이었다는 충격

- 발생한 일: 인도 주요 인증 기관 (CA) eMudhra 가 2025 년 4 월 생성된 키 생성 센터 (KGC) 에서 발급된 중간 CA 8 개 (TLS 용 6 개, 코드 서명용 2 개) 에 대해, 본래 384 비트 (십진수로 약 116 자리) 이어야 할 비밀 키가 실제로는 '3~8 비트 (최대 256 가지)'라는 매우 작은 수치로 생성 및 공개된 사실이 드러났습니다.
- 발생 원인 (근본 원인): 하드웨어 자체는 FIPS 140-2 레벨 3 인증을 받은 정품 HSM 을 사용했으나, 키의 감싸기/풀기 절차 (내보내기/내입하기 스크립트 결함) 로 인해 "HSM 내부의 강력한 키"와 "외부에 노출된 취약한 부생성 키"라는 두 세트가 생성되었고, 공개된 것은 취약한 쪽이었습니다.
- 왜 18 개월 동안 간과되었는지: 이 키는 18 개월 동안 WebTrust 등 독립 감사 기관의 감사를 2 회 통과했습니다. 감사는 '규정에 따른 절차로 보관되었는지'만 확인했을 뿐, '공개 키의 수학적 엔트로피'까지 검증하지 않았기 때문입니다. 또한 이 중간 CA 에서 일반 사이트용 인증서가 1 장도 발행되지 않았으므로 (0 건), CT(인증서 투명성) 로그 감시망에도 감지되지 않았습니다.
- 대응과 결과: 외부 연구자가 AI 지원 도구를 활용해 역해석 및 보고서를 작성했습니다. 구글 (크롬) 은 보고서를 받은 후 1 시간 40 분, 모질라 (파이어폭스) 는 약 3 시간 만에 차단 명령을 배포했습니다. 악용 흔적은 확인되지 않았으나, 구글은 친 루트 (`emSign ECC Root CA – G3`) 를 자체 크롬 루트 스토어에서 완전히 제외하기로 결정했습니다.

먼저 크롬이나 운영체제를 최신 버전으로 업데이트하는 것이 최우선일 수 있습니다. 2 단계 인증이나 패스키와 같이 이제 상식이라 할 수 있는 부분들도 다시 한번 확인해 보시기 바랍니다.

![画像](https://assets.st-note.com/img/1792624730-mvlpc0bJXhqiZs9x1f2yQMNI.jpg?width=1200)

### 2. PingCAP/TiDB 클라우드: 28 일간 침묵한 침투와 제어 평면 유출

- 발생한 일: 분산 SQL 데이터베이스인 'TiDB'를 제공하는 클라우드 관리 시스템인 PingCAP 가 2026 년 9 월 9 일부터 10 월 7 일까지 28 일 동안 불법 접근을 당해 내부 데이터가 유출되었습니다.
- 'DB 본체'와 '관리 플레인'의 경계: 가장 중요한 것은 피해 레이어를 구분하는 것입니다. 무사한 영역: TiDB 엔진 본체 (OSS) 과 고객 TiDB 클라우드 프로덕션 클러스터입니다. 외부 포렌식 기관은 '명령 실행이나 영속화 흔적이 없음', 'TiDB 내 고객 저장 데이터에 영향 없음'을 확인했습니다. 침해된 영역: 주변 클라우드 관리 및 제어 플레인입니다. 계정 정보, 계약 및 청구 정보, 문의 이력, SQL 에디터 실행 이력, 암호화된 API 키 값, 내부 소스 코드가 유출되었습니다.
- 공식 발표와 공격자 주장 (검증되지 않음) 사이의 괴리: 공격자 (FulcrumSec) 는 "10.6TB 를 탈취했다", "4 년 전 내부 티켓 (`SECURITY-22`: 역할 권한 분리 결함) 을 공격했다"고 주장하고 있으나, 이는 공격자 측의 일방적 주장에 불과하다. 반면 PingCAP 는 사실에 기반하여 10 월 14 일까지 취약점 4 개를 수정했으며, 일본 국내에서도 지원 티켓을 통해 최대 약 5 만 건의 개인 정보가 유출되었을 가능성을 공표하고, 고객에게 API 키의 전량 재발급을 강력히 요청하고 있다.
- 왜 28 일 동안 감지하지 못했는지: 공격자가 수행한 '6 시간 간격의 정기적 일괄 내보내기'가 정상 백업 작업과 구별되지 못해, 클라우드 가시성 및 감사 로그의 취약점이 드러났습니다.

API 키를 매번 새로 생성하는 것을 전제로 고려하는 것이 좋을 것 같습니다.

![画像](https://assets.st-note.com/img/1792624749-OwPazGS02Xo4Nrucgik5vVdZ.jpg?width=1200)

### 3. PHP2Shell: 웹의 70%를 흔든 인증되지 않은 원격 코드 실행과 '정보 공개 붕괴'

- 발생한 일: 약 70% 의 웹사이트를 구동하는 PHP 코어에 인증 없이 원격으로 코드를 실행할 수 있는 두 가지 취약점 (CVE-2026-109618/109619, CVSS 9.2) 이 발견되었습니다. PHP 5.4 이후의 모든 버전이 영향을 받습니다.
- 취약성의 메커니즘 (리퀘스트 경계의 유령): 리퀘스트 처리 중 `memory_limit` 를 초과하여 (OOM) 발생하면 PHP 가 `longjmp()` 를 통해 처리를 강제로 중단합니다. 이 경우 후속 작업이半途而廢가 되어 세션 정보나 에러 백트레이스 등 오래된 글로벌 상태가 해제된 메모리를 가리키며 워커 내부에 잔류합니다. 동일한 워커가 다음 리퀘스트를 처리할 때 이 오래된 메모리를 참조하여 Use-After-Free(UAF) 가 발생하고, RCE 또는 메모리 정보 유출 (하트블리드 유사) 으로 이어집니다. WordPress 와 Drupal 은 기본 설정 그대로 RCE 가 증명되었습니다.
- AI 가 변화시킨 '익플로이트화'의 경제성: 이 OOM 문제는 2020 년과 2024 년 감사에서도 파악되었으나, '공격 코드 구축이 매우 어렵다'는 이유로 방치되었습니다. 이번에는 연구팀 (Wiz, Calif, OpenAI 등) 이 최신 LLM 을 활용하여 인간이 수 개월 걸리던 메모리 조정 작업을 수 일로 단축했습니다. 이론상의 버그가 한 순간 만에 실용적인 공격 코드로 무장화되었습니다.
- 협조 공개 (임바고) 붕괴: 10 월 22 일 협조 공개를 앞두고 준비가 진행 중이던 10 월 20 일 SNS 에 CVE 정보가 유출되었고, 추가적으로 보고자로부터 PoC 동영상이 잘못 공개되는 사태가 발생했습니다. 10 월 21 일 아침에는 패치가 사전 제공되었던 Chainguard 가 예정보다 6 시간 일찍 일반 공개하는 사고가 발생하여, 공격자가 리버스 엔지니어링을 수행할 수 있게 되었습니다. 이에 따라 PHP 팀은同日 14:00 에 패치를 긴급히 조기 릴리스하게 되었습니다.

정부에서는 가능한 한 빨리 PHP 를 업데이트하고, 자신감이 없다면 사이트를 일시 정지하는 것이 바람직하다고 발표했습니다.

해커들이 이 사이트를 공격의 거점으로 삼을 경우 관리 책임을 물어야 하는 끔찍한 상황이 발생할 수 있습니다. 반드시 대응해야 합니다.

![画像](https://assets.st-note.com/img/1792624779-Og0dA9K74Zacn2ED3fobpyj6.jpg?width=1200)

## 동일하게 공개된「Node.js 10 월 보안 릴리스」의 진실

10 월 21 일, Node.js 프로젝트에서도 26.x / 24.x / 22.x 버전을 대상으로 한 총 10 건의 보안 릴리스 (고중요 4 건, 중중요 3 건, 저중요 3 건) 가 공개되었습니다.

정기 패치에 그치지 않고, 'eMudhra 사건에 대한 자율적 방어'와 'TLS 호스트명 검증 규범 파괴'라는 매우 중요한 변경 사항이 포함되어 있습니다.

### ① eMudhra 침해에 대한 긴급 대응 (SPKI 블록리스트의 하드코딩)

브라우저 (Chrome/Firefox) 는 CRLSet이나 OneCRL과 같은 푸시 배포 방식을 통해 즉시 무효화되지만, Node.js 는 규격상 기본 설정에서 인증서 무효화 검증 (CRL/OCSP) 을 수행하지 않습니다.

따라서 eMudhra 의 중간 CA 만료를 그대로 방치하면 Node.js 애플리케이션만이 위조 인증서를 계속 신뢰하게 됩니다.

### 따라서 Node.js 는 이번 릴리스에서 다음을 구현합니다.

- NSS 3.131.1 버전의 루트 스토어에서 문제의 루트를 삭제합니다.
- 8 개 침해된 중간 CA 의 공개 키 해시 (SPKI SHA-256) 를 바이너리 내부에 직접 하드코딩하고, 검증 체인에 포함되는 경우 강제로 차단합니다.

Node.js 를 통해 안전한 통신을 보장하려면 런타임 자체의 업데이트가 필수적입니다.

![画像](https://assets.st-note.com/img/1792624797-SNOgqGslhZrXQRAaICzcewoB.jpg?width=1200)

### ② TLS 호스트명 검증이 3 단계로 무너진 문제 (CVE-2026-105483 / 106069 / 106072)

Node.js 내부의 `domainToASCII()` 정규화와 OS 리졸버(`getaddrinfo`) 사이에서, 8 진수 표기 (`0127.0.0.1`), `127.1`, 전역자 숫자 등 비표준 IP 주소 표기 방식에 대한 해석에 불일치가 존재했습니다.

과거의 Node.js 는 이를 'IP 가 아님'으로 오인하여 DNS SAN 또는 CN 와의 일치 확인 루트를 패스하여, 위조 인증서를 포함하더라도 검증 과정을 우회할 수 있는 결함이 있었습니다.

【파괴적 변경】Node.js 는 이제 '규범화' 대신 '규범화되면 IP 로 변환되는 비정규 호스트 문자열에 대해 모두 연결을 거부한다'는 방침으로 전환되었습니다. 단축 IP 등을 사용하여 연결하는 코드는 오류가 발생할 수 있으므로 주의가 필요합니다.

### ③ 기타 주요 수정 사항

- Brotli 디코더의 경계 밖으로의 쓰기 조작을 통한 원격 코드 실행 (CVE-2026-111497 / 고위험) 을 수정했습니다. 잘못된 압축 스트림을 '입력 부족'으로 오인하여 읽기를 계속하는 힙 파괴 버그를 고쳤습니다. Brotli 압축을 외부 입력으로解压하는 서버에서는 원격 코드 실행의 위험이 있습니다.
- 스냅샷 (SEA) 에 랜덤 캐시가 저장됩니다 (CVE-2026-106074 / 중등): `node --build-snapshot` 등으로 빌드된 바이너리에서 랜덤 캐시가 고정되어, 동일한 바이너리에서 시작되는 모든 프로세스가 동일한 UUID(`randomUUID`) 를 생성하는 취약점을 수정했습니다.

## 단면 분석――왜 '과거의 부채'가 한꺼번에 붕괴되었는가?

이 네 가지 현상을 나란히 배치하면 현대 IT 인프라가 직면한 '구조적 전환점'이 명확히 드러납니다.

![画像](https://assets.st-note.com/img/1792624812-KCXAvfn5DbgY7L3a26qE9izQ.jpg?width=1200)

### 비교 기준 | eMudhra | PingCAP | PHP2Shell | Node.js

문제 발생 잠복기 | 18 개월 | 4 년 | 10 년 이상 | 붕괴 유발 요인 | AI 가 인간이 간과한 취약점을 역해석 | 도난된 인증정보를 통한 은밀한 확산 | 인간이 포기한 버그를 AI 가 악용 | 과거 불완전한 수정의 연쇄와 표면적 방어 체계의 맹점 | 프로세스 준수만으로는 내부 검증 불가 | 정상 백업에 섞여 대량 유출 감지 불가 | 악용 불가로 간주되어 수년 간 우선순위 하락 | OS 와 런타임 간의 규격 해석 불일치

### 1. 「오래된 버그」と「AI 의 탐사 능력」의 충돌

모든 취약점은 수 개월에서 수십 년 전부터 존재해 왔으며, 이는 '알려진' 또는 '원리적으로 알려진' 것이었습니다.

갑작스럽게 치열해진 가장 큰 요인은 AI 가 '탐색·역해석·공격 코드화 비용'을 극적으로 낮췄기 때문입니다. '악용은 매우 어렵다'는 인간의 어리석은 예측은 이제 더 이상 방어 장벽으로 기능하지 못합니다.

### 2. 「체크리스트형 거버넌스」의 형식주의

"FIPS 인증 HSM 을 사용 중이었다", "WebTrust 감사 2 회 통과", "보안 티켓이 발기되어 있었다".

모두 형식적 규칙을 충족했으나, 실제로 생성된 키의 엔트로피를 측정했는지, 비정상적 대량 수출을 감지할 수 있었는지와 같은 물리적 실재 검증이 결여되어 있었습니다.

## 현장 대응 체크리스트

이 '광기의 72 시간'의 교훈을 바탕으로, 본사 인프라 보호를 위해 즉시 시작해야 할 체크리스트입니다.

현재 사이트는 일시 정지 상태이며 PHP 를 업데이트했습니다. 다만, "상황이 안정될 때까지"라는 판단을 하고 있습니다.

![画像](https://assets.st-note.com/img/1792624834-Y2uyhj3vpqnQrINHKVteSmJa.jpg?width=1200)

### 🚨 최우선 (0~12 시간 이내)

- 1. 즉시 다음 버전 중 하나에 업데이트하세요: PHP `8.5.12`, `8.4.27`, `8.3.36`, 또는 `8.2.35`. 즉시 패치가 어려운 경우의 임시 완화 방안은 `session.upload_progress.enabled = 0`을 설정하고 모든 워커 프로세스 (php-fpm 등) 를 반드시 재시작하는 것입니다. (재시작하지 않으면 메모리 내 잔류 상태가 유지됩니다).
- 2. Node.js 를 `v26.12.1` / `v24.22.1` / `v22.23.4` 중 하나에 업데이트합니다 (eMudhra 의 SPKI 블록, Brotli RCE, TLS 우회 대응). 스냅샷 (`--build-snapshot`) 또는 SEA 바이너리를 사용하는 경우, 런타임 업데이트 후 반드시 재빌드해야 합니다.
- TiDB Cloud API 키를 회전 중인 조직은 관리 콘솔에서 API 키를 '신규 생성 → 앱 반영 → 기존 키 삭제' 순서로 즉시 업데이트해야 합니다.
- 4. eMudhra 루트 인증서 의존성 확인: 내부 통신 또는 클라이언트 환경에 `emSign ECC Root CA - G3` 인증서가 연결되어 있는지 확인한 후, 다른 인증 기관에서 재발급하여 교체하세요 (10 월 27 일 이후 크롬 브라우저에서는 무효 처리됩니다).

![画像](https://assets.st-note.com/img/1792624845-bHXRmSZIBWwMTJyUoYDqaG05.jpg?width=1200)

### ⚠️ 준급 (12~72 시간 이내)

- 5. 애플리케이션 계층 로그 감사: 예상치 못한 외부 통신 (`curl`, `wget`, `sh` 등 프로세스 실행) 이 발생하지 않았는지, PHP 워커의 비정상 종료 (연속적인 세그멘트 폴로 인한 급격한 churn) 이 발생하지 않았는지 확인합니다.
- 6. 클라우드 IAM 과 서비스 계정 리포지토리에 GCP/AWS/Azure 의 서비스 계정 키가 생으로 커밋되지 않았는지 확인합니다. 대량 내보내기를 '정기 처리'로 위장하는지 감시하고 경고 시스템을 구축합니다.
- 7. 브라우저 환경이 아닌 환경의 CAバンドル 업데이트: Go(1.27.3/1.26.10), Python(`certifi`), 컨테이너 OS 의 `ca-certificates` 를 업데이트하여 만료된 중간 인증서를 확실하게 차단할 수 있도록 합니다.

## 결론

2026 년 10 월의『광기의 72 시간』은 단순한 우연히 발생한 보안 사고들의 모음이 아닙니다.

长年 쌓아온 웹의 구조적 부채가 AI 를 통한 공격 및 분석 능력의 폭발적 진화와 충돌할 때, 어떤 일이 일어날까.

그 현실을 생생하게 드러낸 역사적 전환점.

"우리 회사는 공격받지 않았으니 괜찮다"고 과신하지 말고, 우리 인프라에 의존하는 전제 (인증 기관, 클라우드 제어 평면, 언어 런타임) 를 다시 한번 의심해 보시고, 실제 상황에 기반한 방어 체계를 재구축해 보시기 바랍니다.

출처 등 자세한 내용은 보고서에 확인하시기 바랍니다.

**출처:** [note 원문](https://note.com/humble_bobcat51/n/ndddf54a43430)

*번역: Qwen 3.5(.48) 초벌 + 교정 54청크*

[원문 보기](https://note.com/humble_bobcat51/n/ndddf54a43430) | 출처: note.com