python-dotenv reads key-value pairs from a .env file and can set them as environment variables. Prior to version 1.2.2, set_key() and unset_key() in python-dotenv follow symbolic links when rewriting .env files, allowing a local attacker to overwrite arbitrary files via a crafted symlink when a cross-device rename fallback is triggered. Users should upgrade to v.1.2.2 or, as a workaround, apply the patch manually.
CVE-2026-28684
This medium-severity CVE scores 6.6 under NVD CVSS v3. EPSS exploit probability: 0.0%, top 100% 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).
- Lower severity and no public exploit yet
A fix is available — apply it.
- CVSS v3
- 6.6
- EG Score
- 6.6(medium)
- EPSS
- 14.5%
- KEV
- Not listed
Published
April 20, 2026
Last Modified
April 27, 2026
Advisory Details (3)
Auto-updated Jun 14, 2026Symlink following in set_key allows arbitrary file overwrite via cross-device rename fallback · Advisory · theskumar/python-dotenv · GitHub
https://github.com/theskumar/python-dotenv/security/advisories/GHSA-mf9w-mj56-hr94v1.2.2
Patch available: theskumar/python-dotenv v1.2.2
https://github.com/theskumar/python-dotenv/releases/tag/v1.2.2commit 790c5c029911 (theskumar/python-dotenv)
Patch available: theskumar/python-dotenv v1.2.2 (contains commit 790c5c029911)
https://github.com/theskumar/python-dotenv/commit/790c5c02991100aa1bf41ee5330aca75edc51311Vendor Advisories for CVE-2026-28684(5)
These vendors published their own advisory mentioning this CVE — often with vendor-specific remediation steps + affected product lists not in NVD.
- RHSA-2026:37275Red Hat Product SecurityCritical
Red Hat Security Advisory: RHOAI 3.3.5 - Red Hat OpenShift AI
- RHSA-2026:26226Red Hat Product SecurityHigh
Red Hat Security Advisory: General availability of the satellite/iop-host-inventory-rhel9 container image
- RHSA-2026:24977Red Hat Product SecurityHigh
Red Hat Security Advisory: RHOAI 2.25.7 - Red Hat OpenShift AI
- RHSA-2026:24866Red Hat Product SecurityCritical
Red Hat Security Advisory: Red Hat Ansible Automation Platform 2.6 Container Release Update
- RHSA-2026:19712Red Hat Product SecurityCritical
Red Hat Security Advisory: RHOAI 3.3.3 - Red Hat OpenShift AI
Patch Availability(3)
| Vendor / Ecosystem | Fixed in / Patch | Released | Source |
|---|---|---|---|
| redhat | rhoai/odh-vllm-gaudi-rhel9:1780069069 | 2026-06-10 | redhat |
| redhat | ansible-automation-platform-26/mcp-tools-rhel9:1779772877 | 2026-06-09 | redhat |
| redhat | rhoai/odh-vllm-gaudi-rhel9:1778600187 | 2026-05-20 | redhat |
Patches are aggregated from vendor advisories (Red Hat, Microsoft, Cisco, GitHub) and package ecosystems (OSV, GHSA). Multiple rows for the same upstream release have been deduplicated.
Affected Packages
(1 across 1 ecosystem)
PyPI(1)
| Package | Vulnerable range | Fixed in | Dependents |
|---|---|---|---|
| python-dotenv | 0.1.0 ... 1.2.1 (49 versions) | 1.2.2 | — |
Weakness Classification(2)
MITRE Common Weakness Enumeration — the root-cause categories this CVE belongs to.
Data Freshness Timeline
(refreshed 11× in last 7d / 46× 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.
- 2026-07-16 17:03 UTCEPSS rescore
- 2026-07-16 17:03 UTCEPSS rescore
- 2026-07-15 16:57 UTCEPSS rescore
- 2026-07-15 16:57 UTCEPSS rescore
- 2026-07-15 02:00 UTCEPSS rescore
- 2026-07-15 02:00 UTCEPSS rescore
- 2026-07-13 22:30 UTCEPSS rescore
- 2026-07-13 06:13 UTCEPSS rescore
- 2026-07-13 06:13 UTCEPSS rescore
- 2026-07-12 05:46 UTCEPSS rescore
- 2026-07-11 08:27 UTCEPSS rescore
- 2026-07-09 19:10 UTCEPSS rescore
- 2026-07-08 15:15 UTCEPSS rescore
- 2026-07-07 13:46 UTCEPSS rescore
- 2026-07-06 16:27 UTCEPSS rescore
- 2026-07-06 16:27 UTCEPSS rescore
- 2026-07-06 02:23 UTCEPSS rescore
- 2026-07-06 02:23 UTCEPSS rescore
- 2026-07-05 02:30 UTCEPSS rescore
- 2026-07-04 06:31 UTCEPSS rescore
- 2026-07-01 15:06 UTCEPSS rescore
- 2026-06-30 23:22 UTCEPSS rescore
- 2026-06-30 23:22 UTCEPSS rescore
- 2026-06-29 14:06 UTCEPSS rescore
- 2026-06-28 14:07 UTCEPSS rescore
Show 73 moreShow fewer
- 2026-06-28 14:07 UTCEPSS rescore
- 2026-06-28 04:56 UTCEPSS rescore
- 2026-06-28 04:56 UTCEPSS rescore
- 2026-06-27 03:08 UTCEPSS rescore
- 2026-06-25 13:49 UTCEPSS rescore
- 2026-06-25 13:49 UTCEPSS rescore
- 2026-06-24 14:05 UTCEPSS rescore
- 2026-06-24 14:05 UTCEPSS rescore
- 2026-06-23 21:33 UTCEPSS rescore
- 2026-06-23 21:32 UTCEPSS rescore
- 2026-06-22 14:25 UTCEPSS rescore
- 2026-06-22 14:25 UTCEPSS rescore
- 2026-06-21 14:56 UTCEPSS rescore
- 2026-06-21 14:56 UTCEPSS rescore
- 2026-06-21 01:59 UTCEPSS rescore
- 2026-06-21 01:59 UTCEPSS rescore
- 2026-06-19 19:25 UTCEPSS rescore
- 2026-06-19 19:25 UTCEPSS rescore
- 2026-06-18 17:52 UTCEPSS rescore
- 2026-06-17 17:53 UTCEPSS rescore
- 2026-06-17 17:53 UTCEPSS rescore
- 2026-06-16 17:52 UTCEPSS rescore
- 2026-06-15 17:48 UTCEPSS rescore
- 2026-06-14 23:18 UTCEPSS rescore
- 2026-06-14 18:52 UTCVendor advisory
- 2026-06-12 23:12 UTCEPSS rescore
- 2026-06-12 23:12 UTCEPSS rescore
- 2026-06-11 18:34 UTCVendor advisory
- 2026-06-11 14:00 UTCEPSS rescore
- 2026-06-10 13:22 UTCEPSS rescore
- 2026-06-10 02:52 UTCVendor advisory
- 2026-06-09 04:44 UTCVendor advisory
- 2026-06-08 02:55 UTCVendor advisory
- 2026-06-07 04:46 UTCVendor advisory
- 2026-06-05 22:47 UTCEPSS rescore
- 2026-06-05 22:47 UTCEPSS rescore
- 2026-06-05 22:02 UTCVendor advisory
- 2026-06-05 06:10 UTCEPSS rescore
- 2026-06-05 06:10 UTCEPSS rescore
- 2026-06-04 18:23 UTCVendor advisory
- 2026-06-04 13:12 UTCEPSS rescore
- 2026-06-04 13:12 UTCEPSS rescore
- 2026-06-03 15:44 UTCVendor advisory
- 2026-06-02 20:13 UTCEPSS rescore
- 2026-06-02 20:13 UTCEPSS rescore
- 2026-06-02 14:45 UTCVendor advisory
- 2026-06-01 16:35 UTCVendor advisory
- 2026-06-01 13:51 UTCEPSS rescore
- 2026-06-01 13:51 UTCEPSS rescore
- 2026-05-31 22:30 UTCEPSS rescore
- 2026-05-31 22:30 UTCEPSS rescore
- 2026-05-31 00:16 UTCEPSS rescore
- 2026-05-31 00:16 UTCEPSS rescore
- 2026-05-29 13:44 UTCEPSS rescore
- 2026-05-29 13:44 UTCEPSS rescore
- 2026-05-28 13:44 UTCEPSS rescore
- 2026-05-28 13:44 UTCEPSS rescore
- 2026-05-28 13:44 UTCEPSS rescore
- 2026-05-27 13:40 UTCEPSS rescore
- 2026-05-27 13:40 UTCEPSS rescore
- 2026-05-27 13:40 UTCEPSS rescore
- 2026-05-26 13:44 UTCEPSS rescore
- 2026-05-26 13:44 UTCEPSS rescore
- 2026-05-24 16:59 UTCEPSS rescore
- 2026-05-22 21:16 UTCEPSS rescore
- 2026-05-20 22:38 UTCEPSS rescore
- 2026-05-20 22:38 UTCEPSS rescore
- 2026-05-20 22:37 UTCEPSS rescore
- 2026-05-20 16:41 UTCEG score recompute
- 2026-05-20 11:22 UTCEPSS rescore
- 2026-05-20 11:22 UTCEPSS rescore
- 2026-05-20 11:21 UTCEPSS rescore
- 2026-05-18 21:31 UTCEPSS rescore
Related CVEs(same vendor + same CWE)
Same vendor
10 shownredhat
Frequently asked(5)
What is CVE-2026-28684?
When was CVE-2026-28684 disclosed?
Is CVE-2026-28684 actively exploited?
What is the CVSS score of CVE-2026-28684?
How do I remediate CVE-2026-28684?
Dependency Blast Radius
See which npm, PyPI, Go, and Maven packages are affected by CVE-2026-28684
Is Your Infrastructure Affected by CVE-2026-28684?
EchelonGraph automatically scans your cloud infrastructure and maps CVE exposure using blast radius analysis.