GitHub Advisoryadvisory · Maven
GHSA-2cpx-6pqp-wf35 fs2-io skips mTLS client verification
CRITICAL
Official page ↗
- Aliases
- CVE-2022-31183
- Ecosystem
- Maven
- Packages
- co.fs2:fs2-io, co.fs2:fs2-io_2.12, co.fs2:fs2-io_3, co.fs2:fs2-io_2.13, co.fs2:fs2-io_sjs1_2.13, co.fs2:fs2-io_sjs1_3
- Severity
- Critical
- CVSS vector
- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
- Weaknesses
- CWE-295
- Reviewed
- 2022-07-29
Affected packages
• Maven co.fs2:fs2-io: >= 3.1.0, < 3.2.11 → fixed in 3.2.11
• Maven co.fs2:fs2-io_2.12: >= 3.1.0, < 3.2.11 → fixed in 3.2.11
• Maven co.fs2:fs2-io_3: >= 3.1.0, < 3.2.11 → fixed in 3.2.11
• Maven co.fs2:fs2-io_2.13: >= 3.1.0, < 3.2.11 → fixed in 3.2.11
• Maven co.fs2:fs2-io_sjs1_2.13: >= 3.1.0, < 3.2.11 → fixed in 3.2.11
• Maven co.fs2:fs2-io_sjs1_3: >= 3.1.0, < 3.2.11 → fixed in 3.2.11
Description
Impact
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 v3.1.0.
Patches
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.
Workarounds
If using an unpatched version on Node.js, do not use a server-mode `TLSSocket` with `requestCert = true` to establish a mTLS connection.
References
• https://github.com/nodejs/node/issues/43994
• https://www.cloudflare.com/learning/access-management/what-is-mutual-tls/
For more information
If you have any questions or comments about this advisory:
• Open an issue.
• Contact the Typelevel Security Team.
Related
Alias · CVE (1)
- CVE-2022-31183 fs2 is a compositional, streaming I/O library for Scala. vulnerability
Weakness · CWE (1)
- CWE-295 Improper Certificate Validation weakness
References
- https://github.com/typelevel/fs2/security/advisories/GHSA-2cpx-6pqp-wf35 web
- https://nvd.nist.gov/vuln/detail/CVE-2022-31183 advisory
- https://github.com/nodejs/node/issues/43994 web
- https://github.com/typelevel/fs2/commit/19ce392e8093d9571387dbd78e159e655a85aeea web
- https://github.com/typelevel/fs2/commit/659824395826a314e0a4331535dbf1ef8bef8207 web
- https://github.com/typelevel/fs2 package
- https://github.com/typelevel/fs2/releases/tag/v3.2.11 web