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

58 lines
2.9 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.
// aud.haptic · AudioToolbox · AVHapticServerInstance · CVE-2026-113907
// 原语: OOB 写 · 系统进程 · tier 2
// Primitive: OOB write · system process · tier 2
//
// [zh] AVHaptic 自定义音频事件格式校验
// createCustomAudioEvent 在 27.0 既不校验 ASBD 的合法性,也不比对 frames×bytesPerFrame 与实际波形字节数。27.2 同时补入这两项校验。
// 该接口的 XPC 服务端位于 CoreHaptics 的服务器进程内。
//
// [en] AVHaptic custom audio event format validation
// On 27.0 createCustomAudioEvent neither validates the ASBD nor compares frames×bytesPerFrame against
// the actual waveform byte count. iOS 27.2 adds both checks. The XPC server side of this interface
// lives in the CoreHaptics server process.
// ── 判别 / oracle ──
// 通过 CHHapticEngine 的 audioCustom 事件驱动,是最接近服务端入参的一条公开路径。
// 变体 aud.immersive: 沉浸式渲染数据反序列化容量缺失
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) }
}
/*
// aud.immersive · AudioToolbox · ImmersiveRendererDataMarshaller::Deserialize · CVE-2026-113907
// 原语: OOB 写 · 系统进程 · tier 2
// Primitive: OOB write · system process · tier 2
//
// [zh] 沉浸式渲染数据反序列化容量缺失
// 反序列化取得的 count 与 dataByteSize 仅与「线缆剩余长度」比较,从不与「目标缓冲容量」比较,构成音频服务器进程内的线性堆溢出。27.2 新增 ReadImmersiveRendererDataV1/V2,
// 将目标容量一并纳入校验,并补入版本号 1..3 的合法性闸门。
//
// [en] Immersive renderer data deserialisation capacity gap
// The count and dataByteSize taken off the wire are compared only against "how much is left on the
// wire", never against "how much the destination buffer holds", producing a linear heap overflow
// inside the audio server process. iOS 27.2 adds ReadImmersiveRendererDataV1/V2, folds destination
// capacity into the check, and adds a version 1..3 validity gate.
*/