mTLS client verification is skipped in fs2 on Node.js
Key facts
- Attack vector
- Network
- Privileges required
- None
- User interaction
- None
- Attack complexity
- Low
- Impact type
- Spoofing
- Confidentiality · integrity · availability
- High · High · High
- Fix status
- Fixed
Attack profile from CVSS 3.1 · NVD. Fix status from CNA and GitHub. Impact type from CWE-295.
Summary
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.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- Poc
- Automatable
- Yes
- Technical impact
- Total
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| http4s | fs2 | 3.1.0 to before 3.2.11 | 3.2.11 | Patch available | CNA |
| — | co.fs2:fs2-io (Maven) | 3.1.0 to before 3.2.11 | 3.2.11 | Patch available | GHSA-2cpx-6pqp-wf35 |
| — | co.fs2:fs2-io_2.12 (Maven) | 3.1.0 to before 3.2.11 | 3.2.11 | Patch available | GHSA-2cpx-6pqp-wf35 |
| — | co.fs2:fs2-io_3 (Maven) | 3.1.0 to before 3.2.11 | 3.2.11 | Patch available | GHSA-2cpx-6pqp-wf35 |
| — | co.fs2:fs2-io_2.13 (Maven) | 3.1.0 to before 3.2.11 | 3.2.11 | Patch available | GHSA-2cpx-6pqp-wf35 |
| — | co.fs2:fs2-io_sjs1_2.13 (Maven) | 3.1.0 to before 3.2.11 | 3.2.11 | Patch available | GHSA-2cpx-6pqp-wf35 |
| — | co.fs2:fs2-io_sjs1_3 (Maven) | 3.1.0 to before 3.2.11 | 3.2.11 | Patch available | GHSA-2cpx-6pqp-wf35 |
- fs2 Vendorhttp4s Affected 3.1.0 to before 3.2.11 Fixed in 3.2.11 Patch available CNA
- co.fs2:fs2-io (Maven) Vendor— Affected 3.1.0 to before 3.2.11 Fixed in 3.2.11 Patch available GHSA-2cpx-6pqp-wf35
- co.fs2:fs2-io_2.12 (Maven) Vendor— Affected 3.1.0 to before 3.2.11 Fixed in 3.2.11 Patch available GHSA-2cpx-6pqp-wf35
- co.fs2:fs2-io_3 (Maven) Vendor— Affected 3.1.0 to before 3.2.11 Fixed in 3.2.11 Patch available GHSA-2cpx-6pqp-wf35
- co.fs2:fs2-io_2.13 (Maven) Vendor— Affected 3.1.0 to before 3.2.11 Fixed in 3.2.11 Patch available GHSA-2cpx-6pqp-wf35
- co.fs2:fs2-io_sjs1_2.13 (Maven) Vendor— Affected 3.1.0 to before 3.2.11 Fixed in 3.2.11 Patch available GHSA-2cpx-6pqp-wf35
- co.fs2:fs2-io_sjs1_3 (Maven) Vendor— Affected 3.1.0 to before 3.2.11 Fixed in 3.2.11 Patch available GHSA-2cpx-6pqp-wf35
Remediation
- Fix · CNA fs2 (typelevel) Fixed in 3.2.11
- Fix · GHSA-2cpx-6pqp-wf35 co.fs2:fs2-io (Maven) Fixed in 3.2.11 Advisory →
- Fix · GHSA-2cpx-6pqp-wf35 co.fs2:fs2-io_2.12 (Maven) Fixed in 3.2.11 Advisory →
- Fix · GHSA-2cpx-6pqp-wf35 co.fs2:fs2-io_3 (Maven) Fixed in 3.2.11 Advisory →
- Fix · GHSA-2cpx-6pqp-wf35 co.fs2:fs2-io_2.13 (Maven) Fixed in 3.2.11 Advisory →
- Fix · GHSA-2cpx-6pqp-wf35 co.fs2:fs2-io_sjs1_2.13 (Maven) Fixed in 3.2.11 Advisory →
- Fix · GHSA-2cpx-6pqp-wf35 co.fs2:fs2-io_sjs1_3 (Maven) Fixed in 3.2.11 Advisory →
Timeline
- 2026-10-02 Threatist record created from CVE-2022-31183
- 2026-10-03 Alias added: GHSA-2cpx-6pqp-wf35
References
Advisory 2
Sources
- CVE-2022-31183 · CVE Program
- CVE-2022-31183 · NVD
- FIRST EPSS
- GHSA-2cpx-6pqp-wf35 · GitHub Advisory Database · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences