🇰🇷 한글 설명
Scala용 I/O 라이브러리인 fs2-io의 Node.js 구현체에서 서버 모드 TLSSocket 설정 시 requestCert=true 옵션이 무시되는 취약점입니다. 이로 인해 상호 TLS(mTLS) 인증 시 피어 인증서 검증이 건너뛰어지는 보안 결함이 발생합니다. 해당 문제는 v3.1.0에서 처음 발견되었으며 v3.2.11 버전에서 패치되었습니다.
💡 쉬운 설명
서버가 상대방의 신분증(인증서)을 확인하도록 설정해도, 실제로는 확인 과정을 건너뛰고 연결을 허용하는 보안 구멍이 발견되었습니다. 이로 인해 신원이 확인되지 않은 사용자가 서버에 접속할 위험이 있습니다.
🇺🇸 원문 (English)
fs2 is a compositional, streaming I/O library for Scala. When establishing a server-mode `TLSSocket` using `fs2-io` on Node.js, the parameter `requestCert = true` is ignored, peer certificate verification is skipped, and the connection proceeds. The vulnerability is limited to: 1. `fs2-io` running on Node.js. The JVM TLS implementation is completely independent. 2. `TLSSocket`s in server-mode. Client-mode `TLSSocket`s are implemented via a different API. 3. mTLS as enabled via `requestCert = true` in `TLSParameters`. The default setting is `false` for server-mode `TLSSocket`s. It was introduced with the initial Node.js implementation of fs2-io in 3.1.0. A patch is released in v3.2.11. The requestCert = true parameter is respected and the peer certificate is verified. If verification fails, a SSLException is raised. If using an unpatched version on Node.js, do not use a server-mode TLSSocket with requestCert = true to establish a mTLS connection.
📍 영향받는 시스템
fs2-io v3.1.0 ~ v3.2.10 (Node.js 환경에서 서버 모드 TLSSocket 사용 시)
⚔️ 공격 벡터
인증서 검증이 생략되는 점을 악용하여, 유효하지 않거나 위조된 인증서를 가진 공격자가 mTLS 연결을 강제로 수립함
🛡️ 대응 방법
fs2-io 라이브러리를 v3.2.11 이상의 최신 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 버전이 v3.2.11 미만인 경우 해당 취약점에 노출된 상태입니다.
npm list fs2-io | grep fs2-io