dretsdigitals
Vigilància

Com entre Pegasus ath tòn mobil sense que cliques arren: tres pòrtes a Android, WhatsApp e iOS

Ras dera reconeishença qu'eth CNI espanhòu a espiat exdeputats catalans, un hiu tecnic desgrana pas a pas coma un logiciau espion coma Pegasus s'infiltre en un telefòn sense clicar cap ligam ne installar arren: un error deth binder a Android, ua telefonada de WhatsApp manipulada e un faus GIF a iOS.

· 7 min de lectura

Ras d'ua convèrsa sus coma ac hè Pegasus entà entrar en telefòns mobils, e ras dera notícia qu'eth CNI espanhòu a estat espiant exdeputats catalans, com an arreconeishut eri madeishi, vau era pena explicar damb detalh coma un logiciau espion coma Pegasus acabe laguens d'un telefòn sense qu'era victima clique arren ne installe arren. Ací van tres pòrtes d'entrada reaus: ua a Android, ua via WhatsApp e ua a iOS.

Començam per Android. Android a logicament un sistèma de comunicacion entre procèssi (IPC) laguens eth nuclèu. I actue coma un controlador, s'i hè referéncia coma binder ("lligador"). Cada procès existent coma resultat de çò qu'er usatgèr hè ath telefòn a ua termièra que separe era sua memòria (userland) dera memòria deth nuclèu. Era victima visite ua pagina web infectada. Infectada com? Non se sap deth cèrt. Ère evidentament bèth tipe de còdi executable, segurament JavaScript, mès es qu'investiguèren açò non an eth detalh exacte de qué passaue ena part dera web que l'iniciaue. Çò que òc que se sap ei qué passaue a compdar d'ací, quan eth còdi maliciós s'executaue ath telefòn.

Un còp eth còdi maliciós s'execute en navigador, se tròbe atrapat en un contenedor (non en plan Docker, voi díder un sandbox) de sòrta que s'isòlen procèssi coma es deth navigador web laguens d'ua capsa fòrça restrictiva. Se hè atau justament pr'amor qu'eth còdi non pogue gésser der espaci d'usatgèr (userland) cap ara rèsta deth telefòn. Mès quitament laguens un contenedor, eth navigador a de besonh comunicar-se damb eth sistèma operatiu. Com qu'aguesta comunicacion ei de besonh pr'amor que tot foncione, eth còdi maliciós profite aguesta via de comunicacion permetuda entà atacar dirèctament eth nuclèu.

Quan eth navigador demane comunicar-se damb eth sistèma, eth binder li assigne un hiu d'execucion (binder_thread) ara memòria deth nuclèu e lo met en ua coa de demora. Per saber quan i a activitat en aguesta coa de demora que calgue tractar, eth sistèma emplegue un mecanisme de monitoratge: epoll. Eth còdi maliciós des deth navigador envie ua orde (BINDER_THREAD_EXIT) entà forçar era destruccion d'aguest thread de còp. Eth nuclèu, en tot hèr çò que "crei" que li cau hèr, libère aquera porcion de memòria entà que pogue èster utilizada per autes causes.

Per un error de programacion deth controlador deth binder, quan se liberaue era memòria d'aqueth hiu d'aguesta manèra, non s'avisaue er epoll que quitèsse de guardar, atau que contunhaue en tot guardar s'aquiu i auie quauquarren a tractar. Arribaue atau un dangling pointer: er epoll anaue tà cercar a ua adreça de memòria qu'eth sistèma considère ueda e liura entà èster rescrita, e açò permetie ar atacant aumplir era memòria qu'eth sistèma credie liura damb es sues pròpries donades manipulades. Ei çò que se coneish coma vulnerabilitat use-after-free.

Er atacant utilize aguest dangling pointer entà cercar e modificar ua variabla laguens dera estructura deth sòn pròpri procès ath nuclèu d'Android: er addr_limit, era termièra que li ditz a Android a quines adreces de memòria pòt accedir eth navigador. Mejançant er error deth binder, er atacant pòt sobreescriure aguesta valor e meter-la ath maxim possible, de sòrta qu'ara eth navigador pòt accedir a un pialèr de lòcs as quaus non aurie de poder accedir prèviament. Ara ja a camin per recórrer entà desactivar eth sistèma de confinament de SELinux e autodonar-se a se madeish es privilègis d'administrador maxim deth sistèma que pogue arténher.

E ara que ja non i a defenses practicament de cap sòrta, pòt installar eth RAT, ei a díder, era aisina entà contròtle remot que forme part der ecosistèma de Pegasus, des dera quala se pòt amiar a tèrme er espionatge. Com qu'actue damb privilègis elevadi a causa de totes es accions hètes enes passes anteriores, pòt obtier dirèctament era basa de donades de WhatsApp dera particion /data, interceptar telefonades, activar eth micròfon o era camèra, o çò que sigue. Açò sabem que passèc e qu'ère restacat damb Pegasus pr'amor que Google Project Zero ac publiquèc. Aué açò ja non ei un dia zèro: ei CVE-2019-2215, ei coneishuda dempús deth 3 d'octobre de 2019 e ja ei resolvuda. Mès explique, creigui, un cas de com, sense clicar arren ne installar arren, acabe laguens eth telefòn Pegasus.

Anam ara per un exemple que s'usaue WhatsApp coma basa entà er atac. Prumèr i auie ua telefonada de votz de WhatsApp ath numèro der objectiu. Aguesta telefonada non se hège des d'un WhatsApp "normau", mès manipulat dera banda deth client. Un scenari plausible serie: es operadors de Pegasus emplegauen un logiciau que se connectaue as servidors de WhatsApp imitant eth comportament d'un telefòn reau entà hèr era telefonada cap ath numèro dera victima, e controlauen eri eth "WhatsApp" (aplicacion) que ac hège.

Un còp eth servidor de WhatsApp daurie eth canau de comunicacion VoIP (votz sus IP, es telefonades per Internet), eth logiciau der atacant injectaue paquets SRTCP (Secure Real-time Transport Control Protocol) manipuladi. Com qu'eth servidor de WhatsApp actue coma intermediari e es paquets SRTCP servissen originalment entà controlar paramètres coma era qualitat o eth retard dera telefonada, eth servidor non inspeccionaue es paquets manipuladi e les reenviaue dirèctament ara aplicacion dera victima. Quan eth WhatsApp dera victima, aguest òc un WhatsApp normau descargat de Google Play Store o Apple App Store, sajaue de tractar aguesti paquets anomals, açò ère çò que daurie es pòrtes deth sòn telefòn ara infeccion.

Tecnicament, era pòrta se daurie per un error de programacion en eth WhatsApp "normau" (eth der emissor ère manipulat, mès eth deth receptor non) de desbordament de memòria intermediària, o heap buffer overflow. Tot açò passaue automaticament pendent eth processament en segon plan deth transit entrant. Eth desbordament s'activaue mentre era telefonada sonaue, sense besonh d'arresponer-la actiuament ne tocar cap boton dera pantalha. A compdar d'aguest punt eth procès ei anàleg ath ja explicat entà Android: se daurís era pòrta a installar logiciau, e installauen logiciau espion e n'elevauen es privilègis. Ac expliquèc eth Financial Times. Era escalada de privilègis se hège damb autes vulnerabilitats diferentes, que non son aguesta de WhatsApp en concrèt, pr'amor que Pegasus hè açò: combine vulnerabilitats diuèrses entath sòn objectiu.

Entà iOS tanben an manères d'entrar as mobils. Ua d'aguestes manères se bategèc coma FORCEDENTRY. Anaue atau: prumèr, er atacant enviaue un messatge d'iMessage ath telefòn dera victima. E non calie qu'era victima l'obrisse. Sense qu'er usatgèr lo daurisse, era aplicacion sajaue de generar automaticament ua previsualizacion deth messatge en segon plan entà mostrar-la ara pantalha. Aguest messatge auie un GIF damb aparència inofensiva. En realitat, non ère un GIF, mès un document PDF (o PSD) camuflat que utilizaue un format de compression d'imatges fòrça ancian e obsolet, des ans 90: JBIG2.

Quan eth processador d'imatges qu'Apple use en aguest contèxt, CoreGraphics, sajaue de liéger aguest fichèr entà mostrar era previsualizacion deth GIF, se trapaue damb qu'en realitat ère un JBIG2. JBIG2 foncione en tot cercar formes que se repetissen e en tot sauvar-les en ua lista per non auer-les de diboishar cada còp. Ath processador d'imatges d'Apple li calie saber guaire memòria reservar entara lista. Per estimà'c, sajaue de liéger un nombre ath fichèr que didie "i a X formes". Er atacant manipulaue eth fichèr en aguest aspècte entà meter-i un nombre fòrça naut, desmesuradament naut.

Quan er iPhone multiplicaue aguest nombre immens entà calcular era memòria totau, eth resultat superaue eth limit maxim que podie compdar eth sistèma informatic e se provocaue un desbordament de nombre enter (integer overflow). Açò hège que pensèsse qu'era estimacion ère "virtualment zèro" e reservaue ua memòria fòrça petita. Alavetz er atacant i enviaue fòrça donades (desbordament de pila, o buffer overflow) e es donades der atacant desbordauen e sobreescrivien era memòria adjacent.

Eth format JBIG2 includís operacions logiques (AND, OR, XOR) que servissen per diboishar e superposar imatges; tostemp ei un problèma qu'un format teoricament d'imatge contengue era opcion d'executar logiques. Com que se desbordaue era memòria, er atacant podie hèr qu'aguestes operacions s'apliquèssen dirèctament sus era memòria der iPhone. Damb es opcions de logiques que JBIG2 les permetie, montauen un petit ordenador simulat, ua "maquina virtuau", que hège calculs, cercaue donades ena memòria e desactivaue es defenses der iPhone dempús de laguens.

Ac sabem, e auem era vinculacion damb Pegasus, tanben mercés a Google Project Zero, ua equipa d'analistes de seguretat de Google que passe eth dia en tot sajar de trobar e corregir vulnerabilitats de dia zèro en tot Internet entà protegir es usatgèrs. Es vulnerabilitats deth dia zèro son es que s'expleiten quan encara arrés sabie qu'existien. Cap d'aguesti tres casi requerís qu'era victima clique un ligam, daurisca un fichèr ne installe arren: ei era quita definicion d'un atac zero-click, e ei exactament eth tipe d'estrument damb eth quau s'a espiat gent ací.

#pegasus#programari-espia#zero-click#cni#seguretat-mobil

Contunha de liéger