HSEC-2025-0005 json
cabal-install dependency confusion
published 2025-11-14 11 mo ago modified 2025-11-14 11 mo ago
- cvss
- 5.3
- version 3.1, OSV
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- —
- no score, EPSS covers CVEs only
- public exploits
- 0
- none known
Summary
# `cabal-install` dependency confusion
For **cabal-install < 3.4.0.0** and where multiple repositories are configured, the resolver picks the highest available version across all repositories. Where a package is only defined in a private repository, this behaviour leads to a [*dependency confusion*][blog] supply chain vulnerability. If the private package name becomes known, a malicious actor can claim the name in the public repository and publish a malicious version at a higher version number.
Default `cabal-install` configurations that only use the `hackage.haskell.org` repository are not affected. Configurations that use curated private repositories **exclusively** are also not affected.
[blog]: https://frasertweedale.github.io/blog-fp/posts/2021-02-12-haskell-dependency-confusion.html
## Mitigations
*cabal-install* version **3.4.0.0** and higher provide an `override` option in the repository configuration. It marks the associated repository as canonical for all packages defined in that repository. No other repositories will be considered. For example:
``` -- For packages in repo.example.com, -- only versions in repo.example.com are considered active-repositories: , hackage.haskell.org , repo.example.com:override ```
Users and organisations using private repositories that contain private packages in addition to public repositories **MUST** use the `override` option to prevent dependency confusion attacks.
Alternatively, projects and organisations can run a private instance of *hackage-server* and carefully curate and review its contents. Using that instance exclusively defeats supply chain attacks including *dependency confusion*. For *cabal-install < 3.4* and where using multiple repositories, this is the only effective mitigation against dependency confusion attacks.
Patch / fix
- hackage cabal-install 3.4.0.0
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| OSV | 3.1 | 5.3 | CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:N/I:H/A:N |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| hackage | cabal-install | >=1.0.0.0, <3.4.0.0 |
3.4.0.0 |
References
Sources
- OSV HSEC-2025-0005
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.