CVE-2022-31183
mTLS client verification is skipped in fs2 on Node.js
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. TLSSockets in server-mode. Client-mode TLSSockets are implemented via a different API. 3. mTLS as enabled via requestCert = true in TLSParameters. The default setting is false for server-mode TLSSockets. 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.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- High
- Integrity
- High
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
9.1
mTLS client verification is skipped in fs2 on Node.js
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. TLSSockets in server-mode. Client-mode TLSSockets are implemented via a different API. 3. mTLS as enabled via requestCert = true in TLSParameters. The default setting is false for server-mode TLSSockets. 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.
- Record
CVE-2022-31183- CVSS 3.1
- 9.1 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N - Weakness
- CWE-295
- Updated
- 2026-11-02
EUVDEUVD-2022-6207
9.1
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. TLSSockets in server-mode. Client-mode TLSSockets are implemented via a different API. 3. mTLS as enabled via requestCert = true in TLSParameters. The default setting is false for server-mode TLSSockets. 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.
- Record
EUVD-2022-6207- CVSS 3.1
- 9.1 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-2cpx-6pqp-wf35
9.8
fs2-io skips mTLS client verification
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:
fs2-iorunning on Node.js. The JVM TLS implementation is completely independent.TLSSockets in server-mode. Client-modeTLSSockets are implemented via a different API.- mTLS as enabled via
requestCert = trueinTLSParameters. The default setting isfalsefor server-modeTLSSockets.
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.
- Record
GHSA-2cpx-6pqp-wf35- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-295
- Updated
- 2026-11-02
NVD
9.1
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. TLSSockets in server-mode. Client-mode TLSSockets are implemented via a different API. 3. mTLS as enabled via requestCert = true in TLSParameters. The default setting is false for server-mode TLSSockets. 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.
- Record
CVE-2022-31183- CVSS 3.1
- 9.1 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N - CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-295
- Updated
- 2026-11-02
OSV
9.1
mTLS client verification is skipped in fs2 on Node.js
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. TLSSockets in server-mode. Client-mode TLSSockets are implemented via a different API. 3. mTLS as enabled via requestCert = true in TLSParameters. The default setting is false for server-mode TLSSockets. 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.
- Record
CVE-2022-31183- CVSS 3.1
- 9.1 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N - Weakness
- CWE-295
- Updated
- 2026-11-02
OSVGHSA-2cpx-6pqp-wf35
9.8
fs2-io skips mTLS client verification
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:
fs2-iorunning on Node.js. The JVM TLS implementation is completely independent.TLSSockets in server-mode. Client-modeTLSSockets are implemented via a different API.- mTLS as enabled via
requestCert = trueinTLSParameters. The default setting isfalsefor server-modeTLSSockets.
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.
- Record
GHSA-2cpx-6pqp-wf35- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-295
- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
co.fs2:fs2-ioMaven |
3.1.0 up to 3.2.11 | 3.2.11 |
co.fs2:fs2-io_2.12Maven |
3.1.0 up to 3.2.11 | 3.2.11 |
co.fs2:fs2-io_3Maven |
3.1.0 up to 3.2.11 | 3.2.11 |
co.fs2:fs2-io_2.13Maven |
3.1.0 up to 3.2.11 | 3.2.11 |
co.fs2:fs2-io_sjs1_2.13Maven |
3.1.0 up to 3.2.11 | 3.2.11 |
co.fs2:fs2-io_sjs1_3Maven |
3.1.0 up to 3.2.11 | 3.2.11 |
co.fs2:fs2-io_2.12Maven |
3.1.0 up to 3.2.11, plus listed versions 3.1-10-500b3663.1-10-abf6bb03.1-10-f3d23ce3.1-11-28617f63.1-11-d8073c7 Show 45 moreShow less3.1-12-4362ce33.1-12-ae5aa013.1-13-e59977f3.1-14-125a0193.1-14-20a3d6b3.1-16-d98156e3.1-17-eb39fe43.1-18-a2a47403.1-19-c0178583.1-19-c9457433.1-2-0716b7f3.1-2-0c2a32b3.1-2-47f04f63.1-2-73a4eb73.1-2-8dabe123.1-20-eaba3663.1-22-d0b358c3.1-23-8ba9dc53.1-24-92c750d3.1-26-1d4f2503.1-26-5d4436a3.1-26-b6790a03.1-27-dafd5773.1-29-da7a21c3.1-30-d9bcdf63.1-31-67ff9013.1-32-4f6e5c33.1-33-506d2733.1-36-a2c51353.1-37-271f8b83.1-37-6fe2fd63.1-4-47854083.1-4-6163cc43.1-4-7cff3833.1-4-cad30d23.1-42-91938ac3.1-46-1de1e8b3.1-46-f537af03.1-48-18e0eb93.1-48-7f7e1653.1-50-a7749f13.1-52-0f20c993.1-52-2ac85a23.1-52-5c8346c3.1-52-780511a |
3.2.11 |
co.fs2:fs2-io_3Maven |
3.1.0 up to 3.2.11, plus listed versions 3.1-10-500b3663.1-10-abf6bb03.1-10-f3d23ce3.1-11-28617f63.1-11-d8073c7 Show 45 moreShow less3.1-12-4362ce33.1-12-ae5aa013.1-13-e59977f3.1-14-125a0193.1-14-20a3d6b3.1-16-d98156e3.1-17-eb39fe43.1-18-a2a47403.1-19-c0178583.1-19-c9457433.1-2-0716b7f3.1-2-0c2a32b3.1-2-47f04f63.1-2-73a4eb73.1-2-8dabe123.1-20-eaba3663.1-22-d0b358c3.1-23-8ba9dc53.1-24-92c750d3.1-26-1d4f2503.1-26-5d4436a3.1-26-b6790a03.1-27-dafd5773.1-29-da7a21c3.1-30-d9bcdf63.1-31-67ff9013.1-32-4f6e5c33.1-33-506d2733.1-36-a2c51353.1-37-271f8b83.1-37-6fe2fd63.1-4-47854083.1-4-6163cc43.1-4-7cff3833.1-4-cad30d23.1-42-91938ac3.1-46-1de1e8b3.1-46-f537af03.1-48-18e0eb93.1-48-7f7e1653.1-50-a7749f13.1-52-0f20c993.1-52-2ac85a23.1-52-5c8346c3.1-52-780511a |
3.2.11 |
co.fs2:fs2-io_2.13Maven |
3.1.0 up to 3.2.11, plus listed versions 3.1-10-500b3663.1-10-abf6bb03.1-10-f3d23ce3.1-11-28617f63.1-11-d8073c7 Show 45 moreShow less3.1-12-4362ce33.1-12-ae5aa013.1-13-e59977f3.1-14-125a0193.1-14-20a3d6b3.1-16-d98156e3.1-17-eb39fe43.1-18-a2a47403.1-19-c0178583.1-19-c9457433.1-2-0716b7f3.1-2-0c2a32b3.1-2-47f04f63.1-2-73a4eb73.1-2-8dabe123.1-20-eaba3663.1-22-d0b358c3.1-23-8ba9dc53.1-24-92c750d3.1-26-1d4f2503.1-26-5d4436a3.1-26-b6790a03.1-27-dafd5773.1-29-da7a21c3.1-30-d9bcdf63.1-31-67ff9013.1-32-4f6e5c33.1-33-506d2733.1-36-a2c51353.1-37-271f8b83.1-37-6fe2fd63.1-4-47854083.1-4-6163cc43.1-4-7cff3833.1-4-cad30d23.1-42-91938ac3.1-46-1de1e8b3.1-46-f537af03.1-48-18e0eb93.1-48-7f7e1653.1-50-a7749f13.1-52-0f20c993.1-52-2ac85a23.1-52-5c8346c3.1-52-780511a |
3.2.11 |
co.fs2:fs2-io_sjs1_2.13Maven |
3.1.0 up to 3.2.11, plus listed versions 3.1-10-500b3663.1-10-abf6bb03.1-10-f3d23ce3.1-11-28617f63.1-11-d8073c7 Show 45 moreShow less3.1-12-4362ce33.1-12-ae5aa013.1-13-e59977f3.1-14-125a0193.1-14-20a3d6b3.1-16-d98156e3.1-17-eb39fe43.1-18-a2a47403.1-19-c0178583.1-19-c9457433.1-2-0716b7f3.1-2-0c2a32b3.1-2-47f04f63.1-2-73a4eb73.1-2-8dabe123.1-20-eaba3663.1-22-d0b358c3.1-23-8ba9dc53.1-24-92c750d3.1-26-1d4f2503.1-26-5d4436a3.1-26-b6790a03.1-27-dafd5773.1-29-da7a21c3.1-30-d9bcdf63.1-31-67ff9013.1-32-4f6e5c33.1-33-506d2733.1-36-a2c51353.1-37-271f8b83.1-37-6fe2fd63.1-4-47854083.1-4-6163cc43.1-4-7cff3833.1-4-cad30d23.1-42-91938ac3.1-46-1de1e8b3.1-46-f537af03.1-48-18e0eb93.1-48-7f7e1653.1-50-a7749f13.1-52-0f20c993.1-52-2ac85a23.1-52-5c8346c3.1-52-780511a |
3.2.11 |
co.fs2:fs2-io_sjs1_3Maven |
3.1.0 up to 3.2.11, plus listed versions 3.1-10-500b3663.1-10-abf6bb03.1-10-f3d23ce3.1-11-28617f63.1-11-d8073c7 Show 45 moreShow less3.1-12-4362ce33.1-12-ae5aa013.1-13-e59977f3.1-14-125a0193.1-14-20a3d6b3.1-16-d98156e3.1-17-eb39fe43.1-18-a2a47403.1-19-c0178583.1-19-c9457433.1-2-0716b7f3.1-2-0c2a32b3.1-2-47f04f63.1-2-73a4eb73.1-2-8dabe123.1-20-eaba3663.1-22-d0b358c3.1-23-8ba9dc53.1-24-92c750d3.1-26-1d4f2503.1-26-5d4436a3.1-26-b6790a03.1-27-dafd5773.1-29-da7a21c3.1-30-d9bcdf63.1-31-67ff9013.1-32-4f6e5c33.1-33-506d2733.1-36-a2c51353.1-37-271f8b83.1-37-6fe2fd63.1-4-47854083.1-4-6163cc43.1-4-7cff3833.1-4-cad30d23.1-42-91938ac3.1-46-1de1e8b3.1-46-f537af03.1-48-18e0eb93.1-48-7f7e1653.1-50-a7749f13.1-52-0f20c993.1-52-2ac85a23.1-52-5c8346c3.1-52-780511a |
3.2.11 |
History
| Recorded | Changed | Sources |
|---|---|---|
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2022-31183 is a critical vulnerability (CVSS 9.1) in Typelevel Fs2, published July 29, 2022. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.83%, the 57th percentile. Fixed in co.fs2:fs2-io 3.2.11.
References
github.com/typelevel/fs2/security/advisories/GHSA-2cpx-6pqp-wf35
github.com/nodejs/node/issues/43994
github.com/typelevel/fs2/commit/659824395826a314e0a4331535dbf1ef8bef8207
github.com/typelevel/fs2/commit/19ce392e8093d9571387dbd78e159e655a85aeea
github.com/typelevel/fs2/releases/tag/v3.2.11
nvd.nist.gov/vuln/detail/CVE-2022-31183
github.com/advisories/GHSA-2cpx-6pqp-wf35
github.com/CVEProject/cvelistV5/tree/main/cves/2022/31xxx/CVE-2022-31183.json
github.com/typelevel/fs2
Left out here: 480 versions. The JSON record has them.