Files
cinder27/CVE-2026-112625/CVE-2026-112625.swift
T

60 lines
2.7 KiB
Swift
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// iio.ktx2 · ImageIO · KTX2ReadPlugin · CVE-2026-112625
// 原语: 整数溢出 · 进程内 · tier 2
// Primitive: integer overflow · in-process · tier 2
//
// [zh] KTX2 维度/层级尺寸运算
// KTX/KTX2 的层级字节数与块数运算缺少 64 位 umull/umulh 保护,且既有检查所依据的量本身是错的(使用 channels 而非源 bpp)。27.2 增加 \"image
// dimensions overflow\" 与 \"expected %llu bytes\" 两道闸门。
//
// [en] KTX2 dimension and level size arithmetic
// KTX/KTX2 level byte counts and block counts lack 64-bit umull/umulh protection, and the existing
// check is keyed on the wrong quantity (channels rather than source bpp). iOS 27.2 adds "image dimensions
// overflow" and "expected %llu bytes" gates.
// ── 判别 / oracle ──
// 维度 0xFFFF×0xFFFF,层级索引声明 64 字节。
// 变体 iio.pvr: PVR 位深低于通道位和
//
// 种子构建器(python,可直接运行): CVE-2026-112625/CVE-2026-112625.py
// runnable python seed builder: CVE-2026-112625/CVE-2026-112625.py
import Foundation
// ── byte helpers — verbatim from Cinder27 Sources/Kit.swift ──
enum B {
static func be16(_ v: UInt16) -> [UInt8] { [UInt8(v >> 8 & 0xff), UInt8(v & 0xff)] }
static func le16(_ v: UInt16) -> [UInt8] { [UInt8(v & 0xff), UInt8(v >> 8 & 0xff)] }
static func be32(_ v: UInt32) -> [UInt8] {
[UInt8(v >> 24 & 0xff), UInt8(v >> 16 & 0xff), UInt8(v >> 8 & 0xff), UInt8(v & 0xff)]
}
static func le32(_ v: UInt32) -> [UInt8] {
[UInt8(v & 0xff), UInt8(v >> 8 & 0xff), UInt8(v >> 16 & 0xff), UInt8(v >> 24 & 0xff)]
}
static func be64(_ v: UInt64) -> [UInt8] {
(0..<8).map { UInt8((v >> (56 - UInt64($0) * 8)) & 0xff) }
}
static func le64(_ v: UInt64) -> [UInt8] {
(0..<8).map { UInt8((v >> (UInt64($0) * 8)) & 0xff) }
}
static func both16(_ v: UInt16) -> [UInt8] { le16(v) + be16(v) }
static func both32(_ v: UInt32) -> [UInt8] { le32(v) + be32(v) }
static func ascii(_ s: String) -> [UInt8] { Array(s.utf8) }
}
/*
// iio.pvr · ImageIO · PVRReadPlugin::initialize · CVE-2026-112625
// 原语: 整数溢出 · 进程内 · tier 3
// Primitive: integer overflow · in-process · tier 3
//
// [zh] PVR 位深低于通道位和
// 各通道位数之间的相互匹配检查早已存在,但缺少 bitsPerPixel 相对通道位和的下界比较。27.2 补入 \"_bitsPerPixel %d is too small for 4 channels
// of %d bits\"。
//
// [en] PVR bits-per-pixel below the channel bit sum
// The mutual consistency check between channel bit widths has always been present, but there is no
// lower bound comparing bitsPerPixel against the sum of channel bits. iOS 27.2 adds "_bitsPerPixel
// %d is too small for 4 channels of %d bits".
*/