rubygems.org is the Ruby community's primary gem (library) hosting service. Insufficient input validation allowed malicious actors to replace any uploaded gem version that had a platform, version number, or gem name matching /-\d/, permanently replacing the legitimate upload in the canonical gem storage bucket, and triggering an immediate CDN purge so that the malicious gem would be served immediately. The maintainers have checked all gems matching the /-\d/ pattern and can confirm that no unexpected .gems were found. As a result, we believe this vulnerability was _not_ exploited. The easiest way to ensure that a user's applications were not exploited by this vulnerability is to check that all of your downloaded .gems have a checksum that matches the checksum recorded in the RubyGems.org database. RubyGems contributor Maciej Mensfeld wrote a tool to automatically check that all downloaded .gem files match the checksums recorded in the RubyGems.org database. You can use it by running: bundle add bundler-integrity followed by bundle exec bundler-integrity. Neither this tool nor anything else can prove you were not exploited, but the can assist your investigation by quickly comparing RubyGems API-provided checksums with the checksums of files on your disk. The issue has been patched with improved input validation and the changes are live. No action is required on the part of the user. Users are advised to validate their local gems.
CVE-2023-40165
This high-severity CVE scores 7.4 under NVD CVSS v3. EPSS exploit probability: 0.4%, top 68% of all CVEs by exploit prediction. GitHub Security Advisory data not yet ingested — confidence will rise once GHSA publishes (typical lag: hours to days for open-source ecosystem CVEs; never for infrastructure-only CVEs).
- High severity, but no confirmed exploitation yet
No vendor fix yet — apply a workaround or compensating control (WAF / firewall / segmentation) and watch for a patch.
- CVSS v3
- 7.4
- EG Score
- 7.4(medium)
- EG Risk
- 33(Track)EG Risk 33/100SSVC: Track
EG Risk is EchelonGraph's 0–100 priority score: it fuses intrinsic severity with real-world exploitation and automatability so you can rank equal-severity CVEs and fix the most dangerous first. Higher = act sooner. Distinct from the 0–10 EG Score (severity).
How it’s computedSeverity74% × 45%Exploitation0% × 40%Automatability0% × 15%Action: Routine — remediate on your standard cadence. - EPSS PROB
- 0%
- EPSS %ILE
- 32%
- KEV
- Not listed
Published
August 17, 2023
Last Modified
November 21, 2024
References (4)
- security-advisories@githubhttps://github.com/rubygems/rubygems.org/commit/7e19c19247ddf5885a915710afc60ec6663d8502
- security-advisories@githubhttps://github.com/rubygems/rubygems.org/security/advisories/GHSA-rxcq-2m4f-94wm
- af854a3a-2127-422b-91ae-364da2661108https://github.com/rubygems/rubygems.org/commit/7e19c19247ddf5885a915710afc60ec6663d8502
- af854a3a-2127-422b-91ae-364da2661108https://github.com/rubygems/rubygems.org/security/advisories/GHSA-rxcq-2m4f-94wm
Weakness Classification(1)
MITRE Common Weakness Enumeration — the root-cause categories this CVE belongs to.
Data Freshness Timeline
(refreshed 7× in last 7d / 43× in last 30d)
Each row is a source pipeline that fetched or updated this CVE on that date, with what changed. For example, "NVD update" means NVD published or revised its analysis for this CVE; "MITRE cvelistV5" means we ingested or refreshed it from the CNA feed. Most recent first.
Showing the most recent 100 of 131 total refreshes for this CVE.
- 2026-08-09 13:44 UTCEPSS rescore
- 2026-08-09 13:44 UTCEPSS rescore
- 2026-08-08 16:35 UTCEPSS rescore
- 2026-08-07 16:25 UTCEPSS rescore
- 2026-08-06 13:45 UTCEPSS rescore
- 2026-08-05 19:15 UTCEPSS rescore
- 2026-08-04 15:07 UTCEPSS rescore
- 2026-08-02 04:23 UTCOSV refresh
- 2026-08-02 02:25 UTCEPSS rescore
- 2026-08-02 02:25 UTCEPSS rescore
- 2026-08-01 04:14 UTCEPSS rescore
- 2026-08-01 04:13 UTCEPSS rescore
- 2026-07-30 16:26 UTCEPSS rescore
- 2026-07-30 16:26 UTCEPSS rescore
- 2026-07-30 01:28 UTCEPSS rescore
- 2026-07-30 01:28 UTCEPSS rescore
- 2026-07-28 15:34 UTCEPSS rescore
- 2026-07-28 15:34 UTCEPSS rescore
- 2026-07-26 14:52 UTCEPSS rescore
- 2026-07-26 14:52 UTCEPSS rescore
- 2026-07-25 14:16 UTCEPSS rescore
- 2026-07-24 14:16 UTCEPSS rescore
- 2026-07-23 14:16 UTCEPSS rescore
- 2026-07-23 14:16 UTCEPSS rescore
- 2026-07-23 02:25 UTCEG score recompute
Show 75 moreShow fewer
- 2026-07-22 23:12 UTCEG score recompute
- 2026-07-22 14:06 UTCEPSS rescore
- 2026-07-21 15:23 UTCEPSS rescore
- 2026-07-21 15:23 UTCEPSS rescore
- 2026-07-20 17:06 UTCEPSS rescore
- 2026-07-19 02:27 UTCEPSS rescore
- 2026-07-18 10:03 UTCEPSS rescore
- 2026-07-18 10:03 UTCEPSS rescore
- 2026-07-16 17:01 UTCEPSS rescore
- 2026-07-16 17:01 UTCEPSS rescore
- 2026-07-15 16:56 UTCEPSS rescore
- 2026-07-15 16:56 UTCEPSS rescore
- 2026-07-15 12:19 UTCOSV refresh
- 2026-07-15 01:58 UTCEPSS rescore
- 2026-07-13 22:28 UTCEPSS rescore
- 2026-07-13 22:28 UTCEPSS rescore
- 2026-07-13 06:11 UTCEPSS rescore
- 2026-07-13 06:11 UTCEPSS rescore
- 2026-07-12 05:45 UTCEPSS rescore
- 2026-07-12 05:45 UTCEPSS rescore
- 2026-07-11 08:26 UTCEPSS rescore
- 2026-07-11 08:26 UTCEPSS rescore
- 2026-07-09 19:08 UTCEPSS rescore
- 2026-07-08 15:13 UTCEPSS rescore
- 2026-07-07 13:44 UTCEPSS rescore
- 2026-07-06 16:26 UTCEPSS rescore
- 2026-07-06 16:26 UTCEPSS rescore
- 2026-07-06 02:22 UTCEPSS rescore
- 2026-07-05 02:29 UTCEPSS rescore
- 2026-07-04 06:29 UTCEPSS rescore
- 2026-07-01 15:05 UTCEPSS rescore
- 2026-06-30 23:21 UTCEPSS rescore
- 2026-06-30 23:21 UTCEPSS rescore
- 2026-06-29 14:05 UTCEPSS rescore
- 2026-06-28 14:06 UTCEPSS rescore
- 2026-06-28 14:06 UTCEPSS rescore
- 2026-06-28 04:55 UTCEPSS rescore
- 2026-06-28 04:55 UTCEPSS rescore
- 2026-06-27 12:34 UTCOSV refresh
- 2026-06-27 03:07 UTCEPSS rescore
- 2026-06-27 03:07 UTCEPSS rescore
- 2026-06-25 13:48 UTCEPSS rescore
- 2026-06-25 13:48 UTCEPSS rescore
- 2026-06-24 14:04 UTCEPSS rescore
- 2026-06-24 14:04 UTCEPSS rescore
- 2026-06-23 21:31 UTCEPSS rescore
- 2026-06-23 21:31 UTCEPSS rescore
- 2026-06-22 14:24 UTCEPSS rescore
- 2026-06-22 14:24 UTCEPSS rescore
- 2026-06-21 14:55 UTCEPSS rescore
- 2026-06-21 14:55 UTCEPSS rescore
- 2026-06-21 01:58 UTCEPSS rescore
- 2026-06-21 01:58 UTCEPSS rescore
- 2026-06-19 19:24 UTCEPSS rescore
- 2026-06-19 19:24 UTCEPSS rescore
- 2026-06-18 17:51 UTCEPSS rescore
- 2026-06-17 17:51 UTCEPSS rescore
- 2026-06-17 17:51 UTCEPSS rescore
- 2026-06-16 17:51 UTCEPSS rescore
- 2026-06-16 17:51 UTCEPSS rescore
- 2026-06-15 17:47 UTCEPSS rescore
- 2026-06-15 17:47 UTCEPSS rescore
- 2026-06-14 23:16 UTCEPSS rescore
- 2026-06-13 22:59 UTCEPSS rescore
- 2026-06-13 22:59 UTCEPSS rescore
- 2026-06-12 23:10 UTCEPSS rescore
- 2026-06-12 23:10 UTCEPSS rescore
- 2026-06-11 13:59 UTCEPSS rescore
- 2026-06-11 13:59 UTCEPSS rescore
- 2026-06-10 22:17 UTCEPSS rescore
- 2026-06-10 13:21 UTCEPSS rescore
- 2026-06-10 13:21 UTCEPSS rescore
- 2026-06-09 23:17 UTCOSV refresh
- 2026-06-08 14:16 UTCEPSS rescore
- 2026-06-08 14:16 UTCEPSS rescore
Related CVEs(same CWE)
Same CWE
10 shownCWE-20
- CVE-2005-0050EG 10.0EPSS p99HIGH
- CVE-2004-1019EG 10.0EPSS p94HIGH
- CVE-2004-0840EG 10.0EPSS p98HIGH
- CVE-2003-1425EG 10.0EPSS p96HIGH
- CVE-2003-1487EG 10.0EPSS p94HIGH
- CVE-2002-1874EG 10.0HIGH
- CVE-2002-2236EG 10.0EPSS p91HIGH
- CVE-2002-2365EG 10.0HIGH
- CVE-2002-1358EG 10.0EPSS p92HIGH
- CVE-2002-1359EG 10.0EPSS p100HIGH
Frequently asked(5)
What is CVE-2023-40165?
When was CVE-2023-40165 disclosed?
Is CVE-2023-40165 actively exploited?
What is the CVSS score of CVE-2023-40165?
How do I remediate CVE-2023-40165?
Dependency Blast Radius
Explore the affected products and dependency analysis for CVE-2023-40165
Is Your Infrastructure Affected by CVE-2023-40165?
EchelonGraph automatically scans your cloud infrastructure and maps CVE exposure using blast radius analysis.