피드로 돌아가기
Node.js BlogSecurity
원문 읽기
Node.js가 20.x, 22.x, 24.x, 25.x 버전에서 3개의 고위험 취약점을 포함한 보안 업데이트 릴리스
Tuesday, January 13, 2026 Security Releases
AI 요약
Context
Node.js의 버퍼 할당 로직, 권한 모델, HTTP/2 프레임 처리, TLS 에러 핸들링 등 여러 핵심 컴포넌트에서 보안 결함이 발견되었다. 이러한 취약점들은 메모리 누출, 권한 우회, 원격 서비스 거부(DoS), 권한 상승으로 이어질 수 있다.
Technical Solution
- 버퍼 할당 로직 수정: vm 모듈의 timeout 옵션 사용 시 Buffer.alloc() 및 Uint8Array 할당 중단으로 인한 미초기화 메모리 노출 방지
- 권한 모델 강화: --allow-fs-read, --allow-fs-write 제한을 우회하는 상대 심볼릭 링크 경로 조작 차단
- HTTP/2 프레임 처리 개선: 오버사이즈 HPACK 데이터를 포함한 HEADERS 프레임으로 인한 처리되지 않은 TLSSocket 에러(ECONNRESET) 안전 처리
- async_hooks 에러 핸들링 수정: async_hooks.createHook() 또는 AsyncLocalStorage 활성화 시 '최대 호출 스택 크기 초과' 에러를 process.on('uncaughtException')으로 전달 가능하도록 개선
- OpenSSL X.509 인증서 메모리 누출 해결: socket.getPeerCertificate(true) 호출 시 UTF-8 변환 버퍼를 적절히 해제 (24.x에서만 적용)
- Unix Domain Socket 권한 제약 추가: --permission 활성화 상태에서 net, tls, undici/fetch를 통한 임의의 로컬 소켓 연결 차단
- 시간 메타데이터 권한 검증 강화: futimes()에 utimes()와 동일한 쓰기 권한 확인 로직 적용
- 의존성 업데이트: c-ares 1.34.6, undici 6.23.0 및 7.18.0으로 업데이트
Key Takeaway
Node.js 권한 모델 및 에러 핸들링의 여러 경계 우회 지점이 동시에 발견되었으므로, 심볼릭 링크 검증, 명시적 소켓 에러 핸들러 추가, 입력 기반 재귀 깊이 제한 등 다층 방어 전략을 적용해야 한다.
실천 포인트
Node.js
2
0.x 이상을 사용하는 프로덕션 서비스는 2025년 12월 15일 이후 릴리스된 패치 버전으로 즉시 업그레이드해야 하며, 특히 vm 모듈의 timeout 옵션, 권한 모델(--permission, --allow-fs-read, --allow-fs-write), 또는 async_hooks를 사용하는 경우 우선 업데이트 대상이다. TLS 소켓을 다루는 서버는 secureConnection 이벤트에 명시적 에러 핸들러를 항상 등록하고, 재귀 깊이가 외부 입력에 영향받을 수 있는 코드는 입력 검증으로 재귀 경로 제약을 설계하는 것이 권장된다.