macOS XPC Connecting Process Check
Provera povezivanja procesa u XPC-u
Kada se uspostavi veza sa XPC servisom, server će proveriti da li je veza dozvoljena. Ovo su provere koje obično vrši:
Provera da li je povezani proces potpisan Apple-ovim sertifikatom (koji se dodeljuje samo od strane Apple-a).
Ako ovo nije verifikovano, napadač može kreirati lažni sertifikat koji odgovara bilo kojoj drugoj proveri.
Provera da li je povezani proces potpisan sertifikatom organizacije (verifikacija ID-a tima).
Ako ovo nije verifikovano, bilo koji razvojni sertifikat od Apple-a može se koristiti za potpisivanje i povezivanje sa servisom.
Provera da li povezani proces sadrži odgovarajući bundle ID.
Ako ovo nije verifikovano, bilo koji alat potpisan od iste organizacije može se koristiti za interakciju sa XPC servisom.
(4 ili 5) Provera da li povezani proces ima odgovarajući broj verzije softvera.
Ako ovo nije verifikovano, stari, nesigurni klijenti koji su podložni ubacivanju procesa mogu se koristiti za povezivanje sa XPC servisom čak i uz ostale provere.
(4 ili 5) Provera da li povezani proces ima ojačano izvršavanje sa opasnim privilegijama (poput onih koje omogućavaju učitavanje proizvoljnih biblioteka ili korišćenje DYLD env varijabli).
Ako ovo nije verifikovano, klijent može biti podložan ubacivanju koda.
Provera da li povezani proces ima privilegiju koja mu omogućava povezivanje sa servisom. Ovo se odnosi na Apple binarne fajlove.
Verifikacija se mora bazirati na audit token-u klijenta koji se povezuje, umesto na njegovom ID-u procesa (PID) jer prvo sprečava napade ponovnom upotrebom PID-a.
Razvojni programeri retko koriste API poziv za audit token jer je privatan, pa Apple može promeniti to u bilo kom trenutku. Takođe, korišćenje privatnih API-ja nije dozvoljeno u aplikacijama Mac App Store-a.
Ako se koristi metoda
processIdentifier
, može biti ranjivaTreba koristiti
xpc_dictionary_get_audit_token
umestoxpc_connection_get_audit_token
, jer poslednja može biti ranjiva u određenim situacijama.
Napadi na komunikaciju
Za više informacija o napadu ponovnom upotrebom PID-a pogledajte:
pagemacOS PID ReuseZa više informacija o napadu xpc_connection_get_audit_token
pogledajte:
Prevencija napada na Trustcache - Downgrade
Trustcache je defanzivna metoda koja je uvedena u Apple Silicon mašinama i čuva bazu podataka CDHSAH Apple binarnih fajlova, tako da se mogu izvršavati samo dozvoljeni, nepromenjeni binarni fajlovi. Ovo sprečava izvršavanje verzija sa nižim nivoom sigurnosti.
Primeri koda
Server će implementirati ovu verifikaciju u funkciji nazvanoj shouldAcceptNewConnection
.
Objekat NSXPCConnection ima privatno svojstvo auditToken
(ono koje treba koristiti, ali se može promeniti) i javno svojstvo processIdentifier
(ono koje ne treba koristiti).
Povezani proces može se proveriti na sledeći način:
Ako programer ne želi da proverava verziju klijenta, on može barem proveriti da klijent nije podložan ubacivanju procesa:
Last updated