One Article Review

Accueil - L'article:
Source Google.webp ProjectZero
Identifiant 8673787
Date de publication 2025-05-09 10:38:36 (vue: 2025-05-09 18:06:54)
Titre Briser la barrière sonore Partie I: Fuzzing Coridio avec des messages Mach
Breaking the Sound Barrier Part I: Fuzzing CoreAudio with Mach Messages
Texte Post invité de Dillon Franke, ingénieur de sécurité senior 20% de temps sur le projet zéro Chaque seconde, les démons du système macOS hautement privés acceptent et traitent des centaines de messages IPC. Dans certains cas, ces gestionnaires de messages acceptent les données à partir de processus sandbox ou non privilégiés. Dans cet article de blog, j'explorerai en utilisant des messages Mach IPC comme vecteur d'attaque pour trouver et exploiter les échappements de bac à sable. Je détaillerai comment j'ai utilisé un harnais de fuzzing personnalisé, une instrumentation dynamique et beaucoup d'analyse de débogage / statique pour identifier une vulnérabilité de confusion de type à haut risque dans le COREADID System Dasemon. En cours de route, je vais discuter de certaines des difficultés et des compromis que je rencontrés . transparente, c'était ma première aventure dans le monde de la recherche de sécurité MacOS et Construire un harnais de fuzzing personnalisé. J'espère que ce post servira de guide à ceux qui souhaitent se lancer dans des efforts de recherche similaires. Je suis en ouverture le harnais de fuzzing que j'ai construit, ainsi que plusieurs outils que j'ai écrits qui m'ont été utiles tout au long de ce projet. Tout cela peut être trouvé ici: https://github.com/googleprojectzero/p0tools/Tree/master/CoreAudiofuzz ​​ id = "h.uj8ypinvpyns"> L'approche: Fuzzing basé sur les connaissances Pour ce projet de recherche, j'ai adopté une approche hybride qui combinait du fuzzing et de l'ingénierie inverse manuelle, que je appelle Fuzzing de connaissances . Cette méthode, apprise de mon ami ned Williamson , équilibre l'automatisation avec enquête ciblée. Le fuzzing a fourni les moyens de tester rapidement un large éventail d'entrées et d'identifier les domaines où le comportement du système s'est écarté des attentes. Cependant, lorsque la couverture du code de Fuzzer ou les obstacles spécifiques sont apparus, une analyse manuelle est entrée en jeu, me forçant à plonger plus profondément dans le fonctionnement interne de la cible. Fuzzing basé sur les connaissances offre deux avantages clés. Premièrement, le processus de recherche ne stagne jamais, car l'objectif d'améliorer la couverture du code du Fuzzer est toujours présent. Deuxièmement, atteindre cet objectif nécessite une compréhension approfondie du code que vous fuzzing. Au moment où vous commencez les accidents légitimes et pertinents en matière de sécurité, le processus d'ingénierie inverse vous aura donné une connaissance approfondie de la base de code, permettant une analyse des accidents dans une perspective éclairée. Le cycle que j'ai suivi pendant cette recherche est le suivant:
Notes ★★★
Envoyé Non
Condensat #include  $ stat /system/library/frameworks/coreaudio $rip $rip register is now: 0x7ff8451e7430 $rip: $rsp $rsp is now: 0x7ff7bf83b360 $rsp: &`typeinfo for &return &hals “right “sandbox “workgroup         /system/library/frameworks/coreaudio         /system/library/frameworks/foundation         /system/library/privateframeworks/caulk         /usr/lib/libc++         /usr/lib/libobjc         /usr/lib/libsystem  1010062  20  additionally  as  caexception::~caexception  const char *service  continued  encoding=  hals  i  identify  in  int llvmfuzzertestoneinput  interposers  iterate  mach  returning to prevent null cfrelease  shortly  this  v8  version=  when *******new message******* *******return message******* *service //apple//dtd plist 1 //simulate /harness  /harness  /sbtool 2813 mach /system/library/frameworks/coreaudio /system/library/launchagents and /system/library/launchdaemons directories /system/volumes/preboot/cryptexes/incoming/os/system/library/frameworks/webkit /usr/sbin/coreaudiod /usr/sbin/coreaudiod: 0 discarded 0//en 00007ff840470138 00007ff840470270 0ll 0x0 of 0x00 0x00 0x00 0x00 0x01 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x01 0x00 0x00 0x00 0x03 0x30 0x00 0x00 0x41 0x41 0x41 0x41 0x41 0x41 0x11 0x00 0x41 0x41 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x10ull 0x168 of 0x34 and 0x68 bytes 0x68 in 0x68 of 0x70 in 0xf5 0x01 0x00 0x00 0xf5 0x01 0x00 0x00 0x14 0x00 0x00 0x00 0xf5 0x01 0x00 0x00 0x14 0x00 0x00 0x00 0x7e 0x02 0x00 0x00 0xa3 0x86 0x01 0x00 0x4f 0x06 0x00 0x00  1010000 1010001 1010002 12 bytes 120 1345 150 1700 2 unique 2000 2016 2019 2024 228 255 2602 300 32 bytes 54529 7ff850e56640; 7ff850e7c200; 7ff850e85518; 7ff850e86420; :  ; // = 0; a1 at a1call a2 at a2what a4 + 24 ability able abort about abstracting abstraction accept accepting accepts access accesses accessible accessing achieved achieving acquire across actually added adding addition additional additionally address address from address: address; addressbook adds adjusted adopted advantage advantageous advantages affected after against agent all allocate allocated allocating allow allow mach allowed allowing allows along already also alternatively always analysis analyticsd analyze analyzed and annoying another any api api to api: apis app app/contents/macos/abassistantservice apple apple’s application applications applied appreciated approach approach: apsd arbitrary arch are areas argument arguments armed arose around array aspects assigned assistantservice assumed assumes assumption assumption: assumptions astronomically attached attack attacker attempted attempting attribute attribute apple audio audioaudiohald audiohald audiohald mach audiohald service audiohardwarestartserver function audiotoolboxcore audit auditing authentication automation available away background backtrace balance balances barrier based basic because been beer before begin beginning begun behavior behind being below below: better between big binaries binary bit bits: 1 bits: 2319532353 blissfully blob block blocks blog blue body book bool4 a2 bootstrap bootstrapping borrowed both boundary bounds breaking breakpoint bridge brief broken browser bsd bug buggy buggy/unneeded bugs build building built builtin bunch bundled but bypassed bypassing bytes byte * c++ cacentralstatedumpregistersubsystem cache caexception calculated call c
Tags Tool Vulnerability Threat Conference
Stories
Move


L'article ne semble pas avoir été repris aprés sa publication.


L'article ne semble pas avoir été repris sur un précédent.
My email: