# CVE-2026-60074: Date::Manip versions through 7.00 for Perl return corrupted dates via non-ASCII decimal digits that pass the numeric range tests in check.

> Attackers can cause incorrect date parsing by using non-ASCII digits, potentially bypassing date-based security checks or logic in applications using this Perl library.

- **Severity:** High 7.5 (`CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H`)
- **Exploited in the wild:** Not known
- **Login needed:** Not needed
- **Attackable:** Over the internet
- **Victim action needed:** Not needed
- **Fix available:** Yes
- **Published:** 30 Jul 2026
- **Updated:** 2 Sep 2026
- **Also known as:** AZL-94389, DEBIAN-CVE-2026-60074, GHSA-hfqp-m279-7mj7, UBUNTU-CVE-2026-60074

## What is CVE-2026-60074?

CVE-2026-60074 is a high-severity vulnerability, published on 30 Jul 2026. An attacker can exploit it over the internet without logging in, with no action from the victim.

### Official description

Date::Manip versions through 7.00 for Perl return corrupted dates via non-ASCII decimal digits that pass the numeric range tests in check.

The parse regexes capture year, month and day with the `\d` shorthand, which on a character string matches the whole Unicode decimal digit property `\p{Nd}` and not just `[0-9]`. Date::Manip::Base::check then validates the captured fields with numeric comparisons alone (`$y<1 || $y>9999`, `$m<1 || $m>12`, `$d<1 || $d>$days`), and _parse_check stores the numified fields (`$y+0`). Perl truncates a string at the first character that is not an ASCII digit, so a field whose leading characters are ASCII digits numifies to an in-range prefix and satisfies every test: a year field of three ASCII digits followed by U+0664 ARABIC-INDIC DIGIT FOUR numifies to 202, giving the year 0202, and one non-ASCII digit in the month or day field shifts those fields the same way. The hour, minute and second fields match explicit ASCII character classes (`0?[0-9]`, `[0-5][0-9]`) and do not shift, though a non-ASCII digit in a fractional hour or minute field truncates the fraction.

Any caller that passes an untrusted character string to ParseDate() or Date::Manip::Date->parse() can get back a date that differs from the string it parsed, with no parse error. Where the parsed date gates logic such as an expiry check or a retention window, the shift goes unnoticed.

Weakness: CWE-1289 (Improper Validation of Unsafe Equivalence in Input)

## Which versions are affected by CVE-2026-60074?


## How do I fix CVE-2026-60074?

Apply the vendor's patch.

## Is CVE-2026-60074 being exploited?

There is no known exploitation of CVE-2026-60074 in the wild and no public exploit code.

## Fix prompt for AI coding agents

```text
Check this codebase for CVE-2026-60074 and fix it if it is affected.

What it is: CVE-2026-60074 is a high-severity vulnerability, published on 30 Jul 2026. An attacker can exploit it over the internet without logging in, with no action from the victim.
Exploitation: There is no known exploitation of CVE-2026-60074 in the wild and no public exploit code.

Task:
1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.
2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.
3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.
4. Run the tests and summarise what changed and why.
5. If nothing in the project is affected, say so and change nothing.

Reference: https://insights.sbomify.com/CVE-2026-60074/ (Markdown: https://insights.sbomify.com/CVE-2026-60074/index.md)
```

## Sources

- CVE record: https://www.cve.org/CVERecord?id=CVE-2026-60074
- NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-60074
- OSV: https://osv.dev/vulnerability/CVE-2026-60074

---
From sbomify Insights: https://insights.sbomify.com/CVE-2026-60074/
Summaries are generated and may contain mistakes; the official description above is the record.
