Skip to content
Heist/ feed
Back to feed
HighFix available

ImageSharp: ICC LUT16 output channel count can write beyond Vector4

Type: advisorySources: OSV

### Summary When ICC conversion is enabled, a malformed embedded ICC LUT16 profile with more than four output channels can corrupt memory during ImageSharp color conversion. The ICC parser accepts up to 15 CLUT output channels, while the conversion implementation stores intermediate values in `Vector4`. ### Affected package and versions - Package: `SixLabors.ImageSharp` (NuGet) - Affected published releases: **4.0.0, 4.1.0, and 4.1.1** - Affected range: `>= 4.0.0, <= 4.1.1` - Commit `0815358f9202a78bc7f3b83e19282dc3654b500f` corresponds to release **v4.1.1**. The reproduced `ColorProfileHandling.Convert` path and the unsafe `Vector4` LUT operations are present in v4.0.0 and unchanged through v4.1.1. The three-output control succeeds on all three published 4.x releases; the fifteen-output exploit terminates all three. ### Details `IccClut` accepts one through fifteen input and output channels. In the reproduced `A2B0` LUT16 path, an attacker-controlled profile declares three input channels and fifteen output channels. [`ClutCalculator.Calculate`](https://github.com/SixLabors/ImageSharp/blob/0815358f9202a78bc7f3b83e19282dc3654b500f/src/ImageSharp/ColorProfiles/Icc/Calculators/ClutCalculator.cs#L66-L87) passes a pointer to a four-float `Vector4` result into interpolation code that writes one float per declared output channel. It consequently writes fifteen floats. The same LUT16 tag also has fifteen output LUTs; their [`LutEntryCalculator.CalculateLut`](https://github.com/SixLab

Products
SixLabors.ImageSharp
Affected versions
4.0.0, 4.1.0, 4.1.1
Fixed versions
4.1.2
CVEs
CVE-2026-106112
Confirmed fixed CVEs
Not specified
Updated in this feed
28 Oct 2026, 08:47 UTC · Revision 1

Source evidence

ImageSharp: ICC LUT16 output channel count can write beyond Vector4

core-osv · Original source

Published 7 Oct 2026, 20:24 UTC

### Summary When ICC conversion is enabled, a malformed embedded ICC LUT16 profile with more than four output channels can corrupt memory during ImageSharp color conversion. The ICC parser accepts up to 15 CLUT output channels, while the conversion implementation stores intermediate values in `Vector4`. ### Affected package and versions - Package: `SixLabors.ImageSharp` (NuGet) - Affected published releases: **4.0.0, 4.1.0, and 4.1.1** - Affected range: `>= 4.0.0, <= 4.1.1` - Commit `0815358f9202a78bc7f3b83e19282dc3654b500f` corresponds to release **v4.1.1**. The reproduced `ColorProfileHandling.Convert` path and the unsafe `Vector4` LUT operations are present in v4.0.0 and unchanged through v4.1.1. The three-output control succeeds on all three published 4.x releases; the fifteen-output exploit terminates all three. ### Details `IccClut` accepts one through fifteen input and output channels. In the reproduced `A2B0` LUT16 path, an attacker-controlled profile declares three input channels and fifteen output channels. [`ClutCalculator.Calculate`](https://github.com/SixLabors/ImageSharp/blob/0815358f9202a78bc7f3b83e19282dc3654b500f/src/ImageSharp/ColorProfiles/Icc/Calculators/ClutCalculator.cs#L66-L87) passes a pointer to a four-float `Vector4` result into interpolation code that writes one float per declared output channel. It consequently writes fifteen floats. The same LUT16 tag also has fifteen output LUTs; their [`LutEntryCalculator.CalculateLut`](https://github.com/SixLab

osv:GHSA-ffp7-56pq-64mr

SixLabors.ImageSharp

Fixed versions: 4.1.2

Complete source record
{
  "id": "78fb7c8ec6ff1ce60bfe28506c59653dae244d701085619c99d08184caf42d23",
  "url": "https://osv.dev/vulnerability/GHSA-ffp7-56pq-64mr",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "ImageSharp: ICC LUT16 output channel count can write beyond Vector4",
    "summary": "### Summary When ICC conversion is enabled, a malformed embedded ICC LUT16 profile with more than four output channels can corrupt memory during ImageSharp color conversion. The ICC parser accepts up to 15 CLUT output channels, while the conversion implementation stores intermediate values in `Vector4`. ### Affected package and versions - Package: `SixLabors.ImageSharp` (NuGet) - Affected published releases: **4.0.0, 4.1.0, and 4.1.1** - Affected range: `>= 4.0.0, <= 4.1.1` - Commit `0815358f9202a78bc7f3b83e19282dc3654b500f` corresponds to release **v4.1.1**. The reproduced `ColorProfileHandling.Convert` path and the unsafe `Vector4` LUT operations are present in v4.0.0 and unchanged through v4.1.1. The three-output control succeeds on all three published 4.x releases; the fifteen-output exploit terminates all three. ### Details `IccClut` accepts one through fifteen input and output channels. In the reproduced `A2B0` LUT16 path, an attacker-controlled profile declares three input channels and fifteen output channels. [`ClutCalculator.Calculate`](https://github.com/SixLabors/ImageSharp/blob/0815358f9202a78bc7f3b83e19282dc3654b500f/src/ImageSharp/ColorProfiles/Icc/Calculators/ClutCalculator.cs#L66-L87) passes a pointer to a four-float `Vector4` result into interpolation code that writes one float per declared output channel. It consequently writes fifteen floats. The same LUT16 tag also has fifteen output LUTs; their [`LutEntryCalculator.CalculateLut`](https://github.com/SixLab",
    "evidence": "osv:GHSA-ffp7-56pq-64mr",
    "products": [
      {
        "name": {
          "value": "SixLabors.ImageSharp",
          "evidence": "/affected/0/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "4.1.2",
            "evidence": "/affected/0/ranges"
          }
        ],
        "affected_versions": [
          {
            "value": "4.0.0",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "4.1.0",
            "evidence": "/affected/0/versions"
          },
          {
            "value": "4.1.1",
            "evidence": "/affected/0/versions"
          }
        ]
      }
    ],
    "severity": "high",
    "structured": {
      "id": "GHSA-ffp7-56pq-64mr",
      "aliases": [
        "CVE-2026-106112",
        "GHSA-ffp7-56pq-64mr"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "4.0.0"
                },
                {
                  "fixed": "4.1.2"
                }
              ]
            }
          ],
          "package": {
            "name": "SixLabors.ImageSharp",
            "purl": "pkg:nuget/SixLabors.ImageSharp",
            "ecosystem": "NuGet"
          },
          "versions": [
            "4.0.0",
            "4.1.0",
            "4.1.1"
          ],
          "database_specific": {
            "source": "https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/10/GHSA-ffp7-56pq-64mr/GHSA-ffp7-56pq-64mr.json",
            "last_known_affected_version_range": "<= 4.1.1"
          }
        }
      ],
      "modified": "2026-10-07T20:30:06.058592993Z",
      "provider": "osv",
      "references": [
        "https://github.com/SixLabors/ImageSharp/security/advisories/GHSA-ffp7-56pq-64mr",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-106112",
        "https://github.com/SixLabors/ImageSharp/pull/3187",
        "https://github.com/SixLabors/ImageSharp/commit/b03f0ed7e5be760eecc740fa53dd166b18ae9b23",
        "https://github.com/SixLabors/ImageSharp",
        "https://github.com/SixLabors/ImageSharp/releases/tag/v4.1.2"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-787"
        ],
        "severity": "HIGH",
        "github_reviewed": true,
        "nvd_published_at": "2026-10-06T18:16:52Z",
        "github_reviewed_at": "2026-10-07T20:24:37Z"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-106112",
        "evidence": "/aliases"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/database_specific/severity"
  },
  "source_id": "core-osv",
  "document_id": 97235,
  "published_at": "2026-10-07T20:24:37+00:00"
}