{
  "affected": [
    {
      "database_specific": {
        "human_link": "https://github.com/haskell/security-advisories/tree/main/advisories/published/2026/HSEC-2026-0007.md",
        "osv": "https://raw.githubusercontent.com/haskell/security-advisories/refs/heads/generated/osv-export/2026/HSEC-2026-0007.json",
        "source": "https://github.com/haskell/security-advisories/blob/generated/osv-export/2026/HSEC-2026-0007.json"
      },
      "package": {
        "ecosystem": "Hackage",
        "name": "aeson",
        "purl": "pkg:hackage/aeson"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "0.12.0.0"
            },
            {
              "fixed": "2.2.5.1"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ],
      "severity": [
        {
          "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H",
          "type": "CVSS_V3"
        }
      ],
      "versions": [
        "1.0.0.0",
        "1.0.1.0",
        "1.0.2.0",
        "1.0.2.1",
        "1.1.0.0",
        "1.1.1.0",
        "1.1.2.0",
        "1.2.0.0",
        "1.2.1.0",
        "1.2.2.0",
        "1.2.3.0",
        "1.2.4.0",
        "1.3.0.0",
        "1.3.1.0",
        "1.3.1.1",
        "1.4.0.0",
        "1.4.1.0",
        "1.4.2.0",
        "1.4.3.0",
        "1.4.4.0",
        "1.4.5.0",
        "1.4.6.0",
        "1.4.7.0",
        "1.4.7.1",
        "1.5.0.0",
        "1.5.1.0",
        "1.5.2.0",
        "1.5.3.0",
        "1.5.4.0",
        "1.5.4.1",
        "1.5.5.0",
        "1.5.5.1",
        "1.5.6.0",
        "2.0.0.0",
        "2.0.1.0",
        "2.0.2.0",
        "2.0.3.0",
        "2.1.0.0",
        "2.1.1.0",
        "2.1.2.0",
        "2.1.2.1",
        "2.2.0.0",
        "2.2.1.0",
        "2.2.2.0",
        "2.2.3.0",
        "2.2.4.0",
        "2.2.4.1",
        "2.2.5.0"
      ]
    },
    {
      "database_specific": {
        "human_link": "https://github.com/haskell/security-advisories/tree/main/advisories/published/2026/HSEC-2026-0007.md",
        "osv": "https://raw.githubusercontent.com/haskell/security-advisories/refs/heads/generated/osv-export/2026/HSEC-2026-0007.json",
        "source": "https://github.com/haskell/security-advisories/blob/generated/osv-export/2026/HSEC-2026-0007.json"
      },
      "package": {
        "ecosystem": "Hackage",
        "name": "text-iso8601",
        "purl": "pkg:hackage/text-iso8601"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "0.1"
            },
            {
              "fixed": "0.1.1.2"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ],
      "severity": [
        {
          "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H",
          "type": "CVSS_V3"
        }
      ],
      "versions": [
        "0.1",
        "0.1.1",
        "0.1.1.1"
      ]
    }
  ],
  "database_specific": {
    "home": "https://github.com/haskell/security-advisories",
    "osvs": "https://raw.githubusercontent.com/haskell/security-advisories/refs/heads/generated/osv-export",
    "repository": "https://github.com/haskell/security-advisories"
  },
  "details": "# Denial of Service and Memory Exhaustion in aeson\n\nA Denial of Service (DoS) and memory exhaustion vulnerability was identified in the `aeson` package. The vulnerability allows an attacker to exhaust server memory and crash the host process by supplying maliciously crafted JSON payloads.\n\nThe vulnerability exists in `aeson`'s `withBoundedScientific_` function (located in `src/Data/Aeson/Types/FromJSON.hs`). The exponent bounds check only rejects large positive exponents (`exp10 > 1024`) but fails to reject arbitrarily large negative exponents.\n\nWhen an attacker sends a JSON number with a massive negative exponent (e.g., `1e-999999999`), the value bypasses the check and flows into `realToFrac`, which computes `fromRational . toRational`. For such a large negative exponent, `toRational` produces a GMP Integer with approximately 1 billion decimal digits, causing immediate and severe memory exhaustion.\n\nAffected `FromJSON` instances:\n\n* `Fixed a` (including `Centi`, `Pico`, `Nano`, etc.)\n* `NominalDiffTime`\n* `DiffTime`\n\n## Resolution\n\nThe issue was resolved by introducing proper bounds checks:\n\n- `aeson` now applies an absolute bounds check to both positive and negative exponents (`abs exp10 > 1024`).\n\nThe fix first shipped in `aeson-2.3.0.0`, and have been backported to the previous release series as `aeson-2.2.5.1`.\n\nUsers are strongly advised to update to the patched versions:\n\n* `aeson-2.2.5.1` or later\n\n## Acknowledgements\n\nThe vulnerabilities were reported Nathan Walsh, and patched by Li-yao Xia.\n",
  "id": "HSEC-2026-0007",
  "modified": "2026-09-16T23:00:03.475634854Z",
  "published": "2026-05-22T07:02:58Z",
  "references": [
    {
      "type": "FIX",
      "url": "https://github.com/haskell/aeson/commit/42775f45ff8dad934d44617f6f38ee874e1c9df1"
    },
    {
      "type": "FIX",
      "url": "https://github.com/haskell/aeson/commit/b6fb54b11ebf3e499685c4eeb2714ead522252cc"
    }
  ],
  "schema_version": "1.9.0",
  "summary": "Denial of Service and Memory Exhaustion in aeson"
}