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 توصّل إلى الحل

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
عرض المستودع
11819منذ سنة واحدةتمت المراجعة من قبل Kitploit

إثبات المفهوم لتصحيح CoreAudio (CVE-2025-31200) في iOS 18.4.1. الشرح هنا https://blog.noahhw.dev/posts/cve-2025-31200/.

تحديث 05/27/2025

لقد تمكنت من دفع هذا إلى كتابة مضبوطة إن لم تكن عشوائية. الشرح قريبًا. لكن لكي ترى ذلك بنفسك، سيتعين عليك البناء على إصدار من macOS قبل التصحيح: < 15.4.1. يمكنك تشغيل الصوت باستخدام خطاف lldb check-mismatch (باستخدام أداة بسيطة تشغّل الصوت فقط) لرؤية الكتابة. إنها ليست كتابة عشوائية جيدة بعد، كما ذكرت أعلاه لعدة أسباب - لكن بشكل أساسي لأنني لست متأكدًا بنسبة 100% بعد في أي مرحلة من خط أنابيب فك الترميز تكون هذه القيم من المخزن المؤقت للإطارات عند إعادة تعيينها. سأتوقف هنا مع ذلك للعمل على الشرح إذا أراد شخص ما تولي الأمر.

تحديث 05/21/2025

أنا @noahhw46 (لم أكن لأتمكن من ذلك بدون هذا الإعداد @zhouwei) توصلت إلى حلّ الأمر (الشرح قريبًا). ومع ذلك، لا يزال هناك الكثير مما يجب فهمه. أضفت الجزء الأول من الخطوات التالية لتحقيقي هنا لإظهار ما يفعله الخطأ بالضبط. check-mismatch هو سكربت lldb آخر يمكن استخدامه مع إثبات مفهوم يعمل لإظهار عدم التطابق الذي تم إنشاؤه بين 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 Simulator لإصدار 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
تنزيل الأداة