Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
apple-positional-audio-codec-invalid-header — CVE-2025-31200 - @Noahhw46 разобрался | Kitploit
Инструменты/GitHubGitHub/zhuowei/apple-positional-audio-codec-invalid-header
Криминалистика памятиАнализ уязвимостейЭксплуатацияОбратная инженерияФаззингЭксплуатация Бинарных Файлов
GitHubzhuowei/apple-positional-audio-codec-invalid-header

apple-positional-audio-codec-invalid-header

CVE-2025-31200 - @Noahhw46 разобрался

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Репозиторий
118191 год назадПроверено Kitploit

Доказательство концепции для исправления CoreAudio (CVE-2025-31200) в iOS 18.4.1. Статья здесь https://blog.noahhw.dev/posts/cve-2025-31200/.

Обновление от 27.05.2025

Я смог довести это до контролируемой записи, если не произвольной. Статья скоро появится. Однако, чтобы увидеть это самостоятельно, вам придется собрать на версии macOS до исправления: < 15.4.1. Вы можете воспроизвести аудио с помощью lldb-хука check-mismatch (используя простую обвязку, которая просто воспроизводит аудио), чтобы увидеть запись. Пока это не отличная произвольная запись, как я упоминал выше, по нескольким причинам — но в основном потому, что я всё ещё не уверен на 100%, на каком этапе конвейера декодирования эти значения из буфера кадров находятся, когда они ремапятся. Я останавливаюсь здесь, чтобы работать над статьёй, если кто-то захочет продолжить.

Обновление от 21.05.2025

Я @noahhw46 (не смог бы сделать это без @zhouwei) разобрался (статья скоро). Тем не менее, нужно ещё многое понять. Я добавил первую часть следующих шагов моего исследования, чтобы показать, что именно делает ошибка. check-mismatch — это ещё один lldb-скрипт, который можно использовать с рабочей POC, чтобы точно показать несоответствие, созданное между mRemappingArray и картой перестановок в APACChannelRemapper::Process (на самом деле в APACHOADecoder::DecodeAPACFrame).


root@kitploit:~
The mRemappingArray is sized based on the lower two bytes of mChannelLayoutTag.
By creating a mismatch between them, a later stage of processing in APACHOADecoder::DecodeAPACFrame is corrupted.
When the APACHOADecoder goes to process the APAC frame (permute it according to the channel remapping array), it uses the mRemappingArray as the permutation map to do the well, channel remapping. It seems like the frame data that is being remapped is sized based on mTotalComponenets.

Когда вы воспроизводите аудиофайл output.mp4 (например, с помощью AVAudioPlayer), APACChannelRemapper::Process будет читать, а затем записывать за пределы памяти.

Вы можете увидеть первое чтение за пределами, если включите Guard Malloc в Xcode:

Xcode, отображающий сбой в APACChannelRemapper::Process

Без Guard Malloc, APACHOADecoder::DecodeAPACFrame позже упадет с недопустимым memmove:

Xcode, отображающий сбой в _platform_memmove

Предыдущий README @zhuowei ниже:

Пытаюсь понять исправление CoreAudio (CVE-2025-31200) в iOS 18.4.1.

Я ещё не разобрался.

В настоящее время я получаю разные сообщения об ошибках при декодировании output.mp4 на macOS 15.4.1:

root@kitploit:~
error	01:10:26.743480-0400	getaudiolength	<private>:548    Invalid mRemappingArray bitstream in hoa::CodecConfig::Deserialize()
error	01:10:26.743499-0400	getaudiolength	<private>:860    Error in deserializing ASC components

по сравнению с симулятором Xcode для visionOS 2.2:

root@kitploit:~
error	01:09:21.841805-0400	VisionOSEvaluation	          APACProfile.cpp:424    ERROR: Wrong profile index in GlobalConfig
error	01:09:21.841914-0400	VisionOSEvaluation	     APACGlobalConfig.cpp:894    Profile and level data could not be validated

так что я попадаю на новую проверку, но не знаю, как заставить её что-то перезаписать.

Информация об изменённой функции

Изменённая функция, похоже, — это apac::hoa::CodecConfig::Deserialize в /System/Library/Frameworks/AudioToolbox.framework/AudioCodecs.

APAC — это Apple Positional Audio Codec

HOA — это Higher-order Ambisonics.

Если вы посмотрите на пример файла из трекера ошибок ffmpeg:

root@kitploit:~
$ avmediainfo ~/Downloads/clap.MOV 
Asset: /Users/zhuowei/Downloads/clap.MOV
<...>
Track 3: Sound 'soun'
	Enabled: No
	Format Description 1:
		Format: APAC 'apac'
		Channel Layout: High-Order Ambisonics, ACN/SN3D
		Sample rate: 48000.0
		Bytes per packet: 0
		Frames per packet: 1024
		Bytes per frame: 0
		Channels per frame: 4
		Bits per channel: 0
	System support for decoding this track: Yes
	Data size: 43577 bytes
	Media time scale: 48000
	Duration: 0.898 seconds
	Estimated data rate: 363.142 kbit/s
	Extended language tag: und
	1 segment present
	Index   Media Start  Media Duration   Track Start  Track Duration 
	    1  00:00:00.000    00:00:00.898  00:00:00.000    00:00:00.898
	Member of alternate group 0: (2, 3)

Вы можете конвертировать в APAC с помощью afconvert -o sound440.m4a -d apac -f mp4f sound440hz.wav.

Используя bindiff на iOS 18.4.1 против 18.4, похоже, что чтение mRemappingArray теперь проверяет глобальный AudioChannelLayout* по смещению 0x58 для количества каналов вместо ремапингового AudioChannelLayout* по смещению 0x78.

Файл encodeme.mm кодирует APAC, а LLDB-скрипт принудительно добавляет дополнительные элементы в mRemappingArray и ремапинговый AudioChannelLayout:

root@kitploit:~
./build_encodeme.sh
./run_encodeme.sh
Скачать инструмент