{"id":"CVE-2023-39533","aliases":["AZL-27872","AZL-27875","AZL-37359","AZL-37422","AZL-52773","AZL-79074","AZL-98640","EUVD-2023-2242","GHSA-876p-8259-xjgg","GO-2023-2000"],"status":"published","title":"libp2p nodes vulnerable to attack using large RSA keys","description":"go-libp2p is the Go implementation of the libp2p Networking Stack. Prior to versions 0.27.8, 0.28.2, and 0.29.1 malicious peer can use large RSA keys to run a resource exhaustion attack \u0026 force a node to spend time doing signature verification of the large key. This vulnerability is present in the core/crypto module of go-libp2p and can occur during the Noise handshake and the libp2p x509 extension verification step. To prevent this attack, go-libp2p versions 0.27.8, 0.28.2, and 0.29.1 restrict RSA keys to \u003c= 8192 bits. To protect one's application, it is necessary to update to these patch releases and to use the updated Go compiler in 1.20.7 or 1.19.12. There are no known workarounds for this issue.","severity":{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-12","score":0.01513,"percentile":0.74854,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-770"],"published":"2023-08-08T18:50:05Z","modified":"2026-11-11T10:30:38Z","fixes":[{"ecosystem":"Go","package":"github.com/libp2p/go-libp2p","fixed_in":["0.27.8","0.28.2","0.29.1"],"sources":["ghsa","osv"]},{"ecosystem":"Azure Linux:2","package":"golang","fixed_in":["1.19.12-1","1.21.6-1"],"sources":["osv"]},{"ecosystem":"Azure Linux:2","package":"msft-golang","fixed_in":["1.19.12-1"],"sources":["osv"]},{"ecosystem":"Azure Linux:3","package":"golang","fixed_in":["1.19.12-1"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"Go","package":"github.com/libp2p/go-libp2p","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.27.8"}]}]},{"source":"ghsa","ecosystem":"Go","package":"github.com/libp2p/go-libp2p","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0.28.0"},{"fixed":"0.28.2"}]}]},{"source":"ghsa","ecosystem":"Go","package":"github.com/libp2p/go-libp2p","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0.29.0"},{"last_affected":"0.29.0"},{"fixed":"0.29.1"}]}],"versions":["0.29.0"]},{"source":"osv","ecosystem":"Azure Linux:2","package":"golang","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"1.19.0"},{"fixed":"1.19.12-1"}]}]},{"source":"osv","ecosystem":"Azure Linux:2","package":"msft-golang","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.19.12-1"}]}]},{"source":"osv","ecosystem":"Azure Linux:2","package":"golang","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.21.6-1"}]}]},{"source":"osv","ecosystem":"Azure Linux:2","package":"golang","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"1.18.0"},{"fixed":"1.21.6-1"}]}]},{"source":"osv","ecosystem":"Azure Linux:3","package":"golang","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.19.12-1"}]}]},{"source":"osv","ecosystem":"Azure Linux:3","package":"golang","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"last_affected":"1.25.7-1"}]}]},{"source":"osv","ecosystem":"Azure Linux:3","package":"golang","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"1.27.0"},{"last_affected":"1.27.1-1"}]}]},{"source":"osv","ecosystem":"Go","package":"github.com/libp2p/go-libp2p","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"0.27.8"}]}]},{"source":"osv","ecosystem":"Go","package":"github.com/libp2p/go-libp2p","ranges":[{"type":"SEMVER","events":[{"introduced":"0.28.0"},{"fixed":"0.28.2"}]}]},{"source":"osv","ecosystem":"Go","package":"github.com/libp2p/go-libp2p","ranges":[{"type":"SEMVER","events":[{"introduced":"0.29.0"},{"fixed":"0.29.1"}]}],"versions":["0.29.0"]},{"source":"osv","ecosystem":"Go","package":"github.com/libp2p/go-libp2p","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"0.27.8"},{"introduced":"0.28.0"},{"fixed":"0.28.2"},{"introduced":"0.29.0"},{"fixed":"0.29.1"}]}]}],"products":[{"vendor":"libp2p","product":"go-libp2p"}],"references":[{"url":"https://github.com/libp2p/go-libp2p/security/advisories/GHSA-876p-8259-xjgg","tags":["x_refsource_CONFIRM","x_transferred","Patch","Vendor Advisory","advisory","web"]},{"url":"https://github.com/golang/go/issues/61460","tags":["x_refsource_MISC","x_transferred","Issue Tracking","Not Applicable","Vendor Advisory","report","web"]},{"url":"https://github.com/libp2p/go-libp2p/pull/2454","tags":["x_refsource_MISC","x_transferred","Exploit","Patch","Vendor Advisory","fix","web"]},{"url":"https://github.com/quic-go/quic-go/pull/4012","tags":["x_refsource_MISC","x_transferred","Patch","Third Party Advisory","fix","web"]},{"url":"https://github.com/golang/go/commit/2350afd2e8ab054390e284c95d5b089c142db017","tags":["x_refsource_MISC","x_transferred","Not Applicable","Patch","fix","web"]},{"url":"https://github.com/libp2p/go-libp2p/commit/0cce607219f3710addc7e18672cffd1f1d912fbb","tags":["x_refsource_MISC","x_transferred","Patch","fix","web"]},{"url":"https://github.com/libp2p/go-libp2p/commit/445be526aea4ee0b1fa5388aa65d32b2816d3a00","tags":["x_refsource_MISC","x_transferred","Patch","fix","web"]},{"url":"https://github.com/libp2p/go-libp2p/commit/e30fcf7dfd4715ed89a5e68d7a4f774d3b9aa92d","tags":["x_refsource_MISC","x_transferred","Patch","fix","web"]},{"url":"https://nrdax.com/techniques/NRDAX-T0205-pre-handshake-crypto-cpu-burn","tags":["x_refsource_MISC","web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2023-39533","tags":["web","advisory"]},{"url":"https://go.dev/issue/61460","tags":["web","report"]},{"url":"https://github.com/advisories/GHSA-876p-8259-xjgg"},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2023/39xxx/CVE-2023-39533.json","tags":["advisory"]},{"url":"https://github.com/libp2p/go-libp2p","tags":["package"]}],"sources":{"cve":[{"id":"CVE-2023-39533","title":"libp2p nodes vulnerable to attack using large RSA keys","description":"go-libp2p is the Go implementation of the libp2p Networking Stack. Prior to versions 0.27.8, 0.28.2, and 0.29.1 malicious peer can use large RSA keys to run a resource exhaustion attack \u0026 force a node to spend time doing signature verification of the large key. This vulnerability is present in the core/crypto module of go-libp2p and can occur during the Noise handshake and the libp2p x509 extension verification step. To prevent this attack, go-libp2p versions 0.27.8, 0.28.2, and 0.29.1 restrict RSA keys to \u003c= 8192 bits. To protect one's application, it is necessary to update to these patch releases and to use the updated Go compiler in 1.20.7 or 1.19.12. There are no known workarounds for this issue.","status":"published","published":"2023-08-08T18:50:05.418Z","modified":"2026-09-01T21:35:16.877Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high","assessor":"cna"}],"cwes":["CWE-770"],"updated_at":"2026-11-02T14:35:33.462059Z"}],"euvd":[{"id":"EUVD-2023-2242","description":"go-libp2p is the Go implementation of the libp2p Networking Stack. Prior to versions 0.27.8, 0.28.2, and 0.29.1 malicious peer can use large RSA keys to run a resource exhaustion attack \u0026 force a node to spend time doing signature verification of the large key. This vulnerability is present in the core/crypto module of go-libp2p and can occur during the Noise handshake and the libp2p x509 extension verification step. To prevent this attack, go-libp2p versions 0.27.8, 0.28.2, and 0.29.1 restrict RSA keys to \u003c= 8192 bits. To protect one's application, it is necessary to update to these patch releases and to use the updated Go compiler in 1.20.7 or 1.19.12. There are no known workarounds for this issue.","status":"published","published":"2023-08-08T18:50:05Z","modified":"2026-09-01T21:35:16Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"updated_at":"2026-11-02T18:01:16.444637Z"}],"ghsa":[{"id":"GHSA-876p-8259-xjgg","title":"libp2p nodes vulnerable to attack using large RSA keys","description":"### Impact\nA malicious peer can use large RSA keys to run a resource exhaustion attack \u0026 force a node to spend time doing signature verification of the large key. This vulnerability is present in the core/crypto module of go-libp2p and can occur during the Noise handshake and the libp2p x509 extension verification step.\nTo prevent this attack, go-libp2p now restricts RSA keys to \u003c= 8192 bits.\n\n### Patches\nUsers should upgrade their go-libp2p versions to \u003e=v0.27.8, \u003e= v0.28.2, or \u003e=v0.29.1\nTo protect your application, it's necessary to update to these patch releases **AND** to use the updated Go compiler (1.20.7 or 1.19.12, respectively)\n\n### Workarounds\nThere are no known workarounds\n\n### References\nThe Golang crypto/tls package also had this vulnerability (\"verifying certificate chains containing large RSA keys is slow” https://github.com/golang/go/issues/61460)\nFix in golang/go crypto/tls: https://github.com/golang/go/commit/2350afd2e8ab054390e284c95d5b089c142db017\nFix in quic-go https://github.com/quic-go/quic-go/pull/4012","status":"published","published":"2023-08-09T13:18:18Z","modified":"2026-09-01T21:35:31Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"cwes":["CWE-770"],"updated_at":"2026-11-02T14:41:10.121131Z"}],"nvd":[{"id":"CVE-2023-39533","description":"go-libp2p is the Go implementation of the libp2p Networking Stack. Prior to versions 0.27.8, 0.28.2, and 0.29.1 malicious peer can use large RSA keys to run a resource exhaustion attack \u0026 force a node to spend time doing signature verification of the large key. This vulnerability is present in the core/crypto module of go-libp2p and can occur during the Noise handshake and the libp2p x509 extension verification step. To prevent this attack, go-libp2p versions 0.27.8, 0.28.2, and 0.29.1 restrict RSA keys to \u003c= 8192 bits. To protect one's application, it is necessary to update to these patch releases and to use the updated Go compiler in 1.20.7 or 1.19.12. There are no known workarounds for this issue.","status":"published","published":"2023-08-08T19:15:10.657Z","modified":"2026-09-01T22:17:08.92Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high","assessor":"secondary"},{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high","assessor":"primary"}],"cwes":["CWE-770"],"updated_at":"2026-11-02T14:08:22.812138Z"}],"osv":[{"id":"AZL-27872","title":"CVE-2023-39533 affecting package golang for versions less than 1.19.12-1","description":"go-libp2p is the Go implementation of the libp2p Networking Stack. Prior to versions 0.27.8, 0.28.2, and 0.29.1 malicious peer can use large RSA keys to run a resource exhaustion attack \u0026 force a node to spend time doing signature verification of the large key. This vulnerability is present in the core/crypto module of go-libp2p and can occur during the Noise handshake and the libp2p x509 extension verification step. To prevent this attack, go-libp2p versions 0.27.8, 0.28.2, and 0.29.1 restrict RSA keys to \u003c= 8192 bits. To protect one's application, it is necessary to update to these patch releases and to use the updated Go compiler in 1.20.7 or 1.19.12. There are no known workarounds for this issue.","status":"published","published":"2023-08-08T19:15:10Z","modified":"2026-04-21T04:25:41.698236Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"updated_at":"2026-11-02T15:28:03.46006Z"},{"id":"AZL-27875","title":"CVE-2023-39533 affecting package msft-golang for versions less than 1.19.12-1","description":"go-libp2p is the Go implementation of the libp2p Networking Stack. Prior to versions 0.27.8, 0.28.2, and 0.29.1 malicious peer can use large RSA keys to run a resource exhaustion attack \u0026 force a node to spend time doing signature verification of the large key. This vulnerability is present in the core/crypto module of go-libp2p and can occur during the Noise handshake and the libp2p x509 extension verification step. To prevent this attack, go-libp2p versions 0.27.8, 0.28.2, and 0.29.1 restrict RSA keys to \u003c= 8192 bits. To protect one's application, it is necessary to update to these patch releases and to use the updated Go compiler in 1.20.7 or 1.19.12. There are no known workarounds for this issue.","status":"published","published":"2023-08-08T19:15:10Z","modified":"2026-04-21T04:25:42.101656Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"updated_at":"2026-11-02T15:28:03.46006Z"},{"id":"AZL-37359","title":"CVE-2023-39533 affecting package golang for versions less than 1.21.6-1","description":"go-libp2p is the Go implementation of the libp2p Networking Stack. Prior to versions 0.27.8, 0.28.2, and 0.29.1 malicious peer can use large RSA keys to run a resource exhaustion attack \u0026 force a node to spend time doing signature verification of the large key. This vulnerability is present in the core/crypto module of go-libp2p and can occur during the Noise handshake and the libp2p x509 extension verification step. To prevent this attack, go-libp2p versions 0.27.8, 0.28.2, and 0.29.1 restrict RSA keys to \u003c= 8192 bits. To protect one's application, it is necessary to update to these patch releases and to use the updated Go compiler in 1.20.7 or 1.19.12. There are no known workarounds for this issue.","status":"published","published":"2023-08-08T19:15:10Z","modified":"2026-04-21T04:28:17.371945Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"updated_at":"2026-11-02T15:28:04.608733Z"},{"id":"AZL-37422","title":"CVE-2023-39533 affecting package golang for versions less than 1.21.6-1","description":"go-libp2p is the Go implementation of the libp2p Networking Stack. Prior to versions 0.27.8, 0.28.2, and 0.29.1 malicious peer can use large RSA keys to run a resource exhaustion attack \u0026 force a node to spend time doing signature verification of the large key. This vulnerability is present in the core/crypto module of go-libp2p and can occur during the Noise handshake and the libp2p x509 extension verification step. To prevent this attack, go-libp2p versions 0.27.8, 0.28.2, and 0.29.1 restrict RSA keys to \u003c= 8192 bits. To protect one's application, it is necessary to update to these patch releases and to use the updated Go compiler in 1.20.7 or 1.19.12. There are no known workarounds for this issue.","status":"published","published":"2023-08-08T19:15:10Z","modified":"2026-04-21T04:28:19.248319Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"updated_at":"2026-11-02T15:28:04.608733Z"},{"id":"AZL-52773","title":"CVE-2023-39533 affecting package golang for versions less than 1.19.12-1","description":"go-libp2p is the Go implementation of the libp2p Networking Stack. Prior to versions 0.27.8, 0.28.2, and 0.29.1 malicious peer can use large RSA keys to run a resource exhaustion attack \u0026 force a node to spend time doing signature verification of the large key. This vulnerability is present in the core/crypto module of go-libp2p and can occur during the Noise handshake and the libp2p x509 extension verification step. To prevent this attack, go-libp2p versions 0.27.8, 0.28.2, and 0.29.1 restrict RSA keys to \u003c= 8192 bits. To protect one's application, it is necessary to update to these patch releases and to use the updated Go compiler in 1.20.7 or 1.19.12. There are no known workarounds for this issue.","status":"published","published":"2023-08-08T19:15:10Z","modified":"2026-04-21T04:55:22.731948Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"updated_at":"2026-11-02T15:28:06.595149Z"},{"id":"AZL-79074","title":"CVE-2023-39533 affecting package golang 1.25.7-1","description":"go-libp2p is the Go implementation of the libp2p Networking Stack. Prior to versions 0.27.8, 0.28.2, and 0.29.1 malicious peer can use large RSA keys to run a resource exhaustion attack \u0026 force a node to spend time doing signature verification of the large key. This vulnerability is present in the core/crypto module of go-libp2p and can occur during the Noise handshake and the libp2p x509 extension verification step. To prevent this attack, go-libp2p versions 0.27.8, 0.28.2, and 0.29.1 restrict RSA keys to \u003c= 8192 bits. To protect one's application, it is necessary to update to these patch releases and to use the updated Go compiler in 1.20.7 or 1.19.12. There are no known workarounds for this issue.","status":"published","published":"2023-08-08T19:15:10Z","modified":"2026-04-21T04:34:37.088076Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"updated_at":"2026-11-02T15:28:10.017343Z"},{"id":"AZL-98640","title":"CVE-2023-39533 affecting package golang 1.27.1-1","description":"go-libp2p is the Go implementation of the libp2p Networking Stack. Prior to versions 0.27.8, 0.28.2, and 0.29.1 malicious peer can use large RSA keys to run a resource exhaustion attack \u0026 force a node to spend time doing signature verification of the large key. This vulnerability is present in the core/crypto module of go-libp2p and can occur during the Noise handshake and the libp2p x509 extension verification step. To prevent this attack, go-libp2p versions 0.27.8, 0.28.2, and 0.29.1 restrict RSA keys to \u003c= 8192 bits. To protect one's application, it is necessary to update to these patch releases and to use the updated Go compiler in 1.20.7 or 1.19.12. There are no known workarounds for this issue.","status":"published","published":"2023-08-08T19:15:10Z","modified":"2026-09-16T06:39:01Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"updated_at":"2026-11-02T15:28:12.596039Z"},{"id":"CVE-2023-39533","title":"libp2p nodes vulnerable to attack using large RSA keys","description":"go-libp2p is the Go implementation of the libp2p Networking Stack. Prior to versions 0.27.8, 0.28.2, and 0.29.1 malicious peer can use large RSA keys to run a resource exhaustion attack \u0026 force a node to spend time doing signature verification of the large key. This vulnerability is present in the core/crypto module of go-libp2p and can occur during the Noise handshake and the libp2p x509 extension verification step. To prevent this attack, go-libp2p versions 0.27.8, 0.28.2, and 0.29.1 restrict RSA keys to \u003c= 8192 bits. To protect one's application, it is necessary to update to these patch releases and to use the updated Go compiler in 1.20.7 or 1.19.12. There are no known workarounds for this issue.","status":"published","published":"2023-08-08T18:50:05.418Z","modified":"2026-11-11T10:30:38.478247043Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"cwes":["CWE-770"],"updated_at":"2026-11-11T11:06:25.426253Z"},{"id":"GHSA-876p-8259-xjgg","title":"libp2p nodes vulnerable to attack using large RSA keys","description":"### Impact\nA malicious peer can use large RSA keys to run a resource exhaustion attack \u0026 force a node to spend time doing signature verification of the large key. This vulnerability is present in the core/crypto module of go-libp2p and can occur during the Noise handshake and the libp2p x509 extension verification step.\nTo prevent this attack, go-libp2p now restricts RSA keys to \u003c= 8192 bits.\n\n### Patches\nUsers should upgrade their go-libp2p versions to \u003e=v0.27.8, \u003e= v0.28.2, or \u003e=v0.29.1\nTo protect your application, it's necessary to update to these patch releases **AND** to use the updated Go compiler (1.20.7 or 1.19.12, respectively)\n\n### Workarounds\nThere are no known workarounds\n\n### References\nThe Golang crypto/tls package also had this vulnerability (\"verifying certificate chains containing large RSA keys is slow” https://github.com/golang/go/issues/61460)\nFix in golang/go crypto/tls: https://github.com/golang/go/commit/2350afd2e8ab054390e284c95d5b089c142db017\nFix in quic-go https://github.com/quic-go/quic-go/pull/4012","status":"published","published":"2023-08-09T13:18:18Z","modified":"2026-09-01T21:45:14.078848597Z","cvss":[{"version":"3.1","score":7.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","level":"high"}],"cwes":["CWE-770"],"updated_at":"2026-11-02T15:46:42.077781Z"},{"id":"GO-2023-2000","title":"Large RSA keys can cause high resource usage in github.com/libp2p/go-libp2p","description":"Large RSA keys can lead to resource exhaustion attacks.\n\nWith fix, the size of RSA keys transmitted during handshakes is restricted to \u003c= 8192 bits.","status":"published","published":"2023-08-08T23:49:18Z","modified":"2024-05-20T16:03:47Z","updated_at":"2026-11-02T15:47:01.185262Z"}]}}
