Skip to content
Heist/ feed
Back to feed
Medium

Pillow TGA RLE encoder can serialize up to ~57 KB of adjacent heap data into generated images

Type: advisorySources: OSV

Pillow is a Python imaging library. From 5.2.0 until 12.3.0, Pillow's TGA RLE encoder reads past its packed row buffer when saving a mode 1 image with TGA RLE compression, allowing adjacent process heap bytes to be copied into the generated TGA file. This issue is fixed in version 12.3.0.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-59198
Confirmed fixed CVEs
Not specified
Updated in this feed
3 Nov 2026, 19:40 UTC · Revision 1

Source evidence

Pillow TGA RLE encoder can serialize up to ~57 KB of adjacent heap data into generated images

core-osv · Original source

Published 14 Jul 2026, 16:07 UTC

Pillow is a Python imaging library. From 5.2.0 until 12.3.0, Pillow's TGA RLE encoder reads past its packed row buffer when saving a mode 1 image with TGA RLE compression, allowing adjacent process heap bytes to be copied into the generated TGA file. This issue is fixed in version 12.3.0.

osv:CVE-2026-59198
Complete source record
{
  "id": "31dd8ec8bd88b06df9e1495f3a9305cdbffc073b613a3f149dd11cbb53ae0767",
  "url": "https://osv.dev/vulnerability/CVE-2026-59198",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Pillow TGA RLE encoder can serialize up to ~57 KB of adjacent heap data into generated images",
    "summary": "Pillow is a Python imaging library. From 5.2.0 until 12.3.0, Pillow's TGA RLE encoder reads past its packed row buffer when saving a mode 1 image with TGA RLE compression, allowing adjacent process heap bytes to be copied into the generated TGA file. This issue is fixed in version 12.3.0.",
    "evidence": "osv:CVE-2026-59198",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CVE-2026-59198",
      "aliases": [
        "BIT-pillow-2026-59198",
        "CVE-2026-59198",
        "GHSA-fj7v-r99m-22gq",
        "PYSEC-2026-3494"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:L"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/python-pillow/pillow",
              "type": "GIT",
              "events": [
                {
                  "introduced": "c28bf86b7e752a9257a0d4451ca878c1385db15c"
                },
                {
                  "fixed": "bb1d8e8ab8d29048624d96e3ee53cecf7c13d13d"
                },
                {
                  "fixed": "eada3cbd7fb9963ee90673fb7b5270124a0d5f4b"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "cpe": "cpe:2.3:a:python:pillow:*:*:*:*:*:*:*:*",
                    "range": [
                      {
                        "introduced": "5.2.0"
                      },
                      {
                        "fixed": "12.3.0"
                      }
                    ],
                    "source": "CPE_RANGE"
                  },
                  {
                    "range": [
                      {
                        "fixed": "eada3cbd7fb9963ee90673fb7b5270124a0d5f4b"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "bb1d8e8ab8d29048624d96e3ee53cecf7c13d13d"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "12.3.0"
                  }
                ]
              }
            }
          ],
          "versions": [
            "12.2.0",
            "12.1.0",
            "12.0.0",
            "11.3.0",
            "11.2.1",
            "11.1.0",
            "11.0.0",
            "10.4.0",
            "10.3.0",
            "10.2.0",
            "10.1.0",
            "10.0.0",
            "9.5.0",
            "9.4.0",
            "9.3.0",
            "9.2.0",
            "9.1.0",
            "9.0.0",
            "8.4.0",
            "8.3.0",
            "8.2.0",
            "8.1.0",
            "8.0.0",
            "7.2.0",
            "7.1.0",
            "7.0.0",
            "6.2.0",
            "6.1.0",
            "6.0.0",
            "5.4.0",
            "5.3.0",
            "5.2.0"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-59198.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:31.732403776Z",
      "provider": "osv",
      "references": [
        "https://github.com/python-pillow/Pillow/releases/tag/12.3.0",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/59xxx/CVE-2026-59198.json",
        "https://github.com/python-pillow/Pillow/security/advisories/GHSA-fj7v-r99m-22gq",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-59198",
        "https://github.com/python-pillow/Pillow/commit/eada3cbd7fb9963ee90673fb7b5270124a0d5f4b",
        "https://github.com/python-pillow/Pillow/pull/9709"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-125"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/59xxx/CVE-2026-59198.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-59198",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 498784,
  "published_at": "2026-07-14T16:07:56.562+00:00"
}