Écrit par Amir Amitai et Daniel Shugrue
Lorsqu'il s'agit d'iPhone, le terme « jailbreak » (inventé avec la première version d'iOS avant même qu'elle ne soit nommée « iOS ») combine la technologie et le concept de libération des restrictions :
- Prison: Fait à l’origine référence à une prison ou à un confinement métaphorique. Dans le contexte des iPhones, cela représente les restrictions et limitations imposées par Apple aux applications tierces qui s'exécutent sur leur système d'exploitation iOS. Apple maintient un contrôle strict sur ce que les utilisateurs peuvent et ne peuvent pas faire avec leurs appareils via les politiques de l'App Store et les mesures de sécurité du système. Ces limitations incluent des restrictions sur l'installation d'applications à partir de sources autres que l'App Store, la personnalisation de l'apparence et des fonctionnalités de l'appareil et l'accès au fonctionnement interne du système d'exploitation.
- Pause: Implique échapper ou se libérer du confinement. Dans le cadre du jailbreak de l'iPhone, cela signifie contourner ou contourner les restrictions fixées par l'iOS d'Apple. Ce processus implique l'exploitation des vulnérabilités du système iOS pour obtenir un accès root ou des privilèges administratifs, permettant aux utilisateurs de modifier l'appareil d'une manière qu'Apple n'autorise généralement pas.
Le jailbreak d'un iPhone donne à l'utilisateur final un accès complet en exécution et en écriture. Ainsi, en résumé, le « jailbreak » dans le contexte des iPhones signifie essentiellement se libérer des restrictions et des limitations imposées par l'iOS d'Apple, permettant aux utilisateurs de mieux contrôler leurs appareils et de les personnaliser à leur guise. Le terme reflète l'idée de libérer votre iPhone de la « prison » métaphorique des restrictions d'Apple, vous offrant ainsi plus de liberté et de flexibilité avec votre appareil.
L'envie de libérer son téléphone a donné naissance à une « communauté » Jailbreak composée de hackers, d'utilisateurs curieux et acteurs de la menace. Comme toute communauté qui se respecte, un groupe Reddit (r / jailbreak) s'est formé, des chaînes YouTube ont été créées (et purgées) et le Web sombre/gris prend en charge le partage de conseils, de techniques et de procédures de jailbreak entre les membres de la communauté. Les jailbreaks sont recherchés depuis longtemps, et ceux qui découvrent, exécutent et partagent des jailbreaks gagnent en renommée ou en notoriété au sein de la communauté du jailbreak.
Notez que le jailbreak peut annuler les garanties et avoir des implications juridiques. Ce n'est donc pas quelque chose qu'Apple soutient ou encourage officiellement. Notez également que même si « se libérer » de la politique d'Apple annule la garantie d'Apple, cela n'est pas, en soi, illégal, et de nombreux membres de la communauté du jailbreak considèrent qu'il s'agit d'un droit, voire d'une obligation, de participer à des jailbreaks, et pas nécessairement à des fins malveillantes. fins. Alors que la communauté des hackers, des acteurs malveillants et des joyeux farceurs a vaguement formé une communauté de jailbreak dédiée à contrecarrer les efforts d'Apple pour verrouiller son système d'exploitation, une industrie à but lucratif qui cracke iOS a également pris racine. Des sociétés comme NSO, Cellebrite et Paragon proposent des techniques de jailbreak sophistiquées moyennant des frais ; et les forces de l’ordre, ainsi que les gouvernements du monde entier – bien qu’ils répugnent à l’admettre publiquement – presque sûrement bénéficier de ces services.
Dans le monde de application security, les jailbreaks prennent une importance démesurée car chaque fois qu'un acteur malveillant souhaite falsifier (modifier) une application, l'une des premières choses qu'il doit faire est de jailbreaker un téléphone afin de pouvoir s'assurer que l'application modifiée peut être exécutée. En d’autres termes, même si le jailbreak d’un téléphone n’est pas illégal ni même contraire à l’éthique, le jailbreak est, dans la plupart des cas, une étape nécessaire pour utiliser réellement une application qui a été falsifiée. Par conséquent, la détection des téléphones jailbreakés fait partie intégrante de tout durcissement d'application Solution.
Dans le même temps, Apple a toujours consacré du temps, de l’argent, des efforts et de l’ingéniosité à empêcher complètement les jailbreaks. Au fil du temps, les jailbreaks sont devenus plus compliqués, nécessitant souvent plusieurs exploits pour jailbreaker complètement l'appareil en raison des améliorations de sécurité d'Apple. L'évolution des efforts d'Apple pour empêcher les jailbreaks est longue et riche – essentiellement un jeu du chat et de la souris qui a stimulé l'innovation dans la « communauté » du jailbreak et au sein même d'Apple.
Bien que la détection du jailbreak fasse partie intégrante de la garantie de la sécurité des applications accessibles au public, tous les jailbreaks ne sont pas égaux ; certains jailbreaks ne constituent même pas une menace majeure pour la sécurité.
Cet article 1) décrira l'évolution des jailbreaks iPhone et 2) précisera quels types de jailbreaks donnent un accès complet aux ressources système au sens premier du terme, et lesquels sont des cousins moins puissants du jailbreak traditionnel.
L'évolution conjointe d'iOS et des jailbreaks
Les premiers jours : les exploits BootROM
Au début, le jailbreak se concentrait principalement sur la bootROM, un composant fondamental du processus de démarrage de l'appareil iOS. La bootROM est un logiciel de bas niveau gravé en permanence dans le matériel, ce qui rend les exploits à ce niveau particulièrement puissants. Les attaques contre la bootROM affectent toute la chaîne de confiance : le chargeur de démarrage, le noyau et, éventuellement, l'environnement utilisateur. Un exploit bootROM réussi pourrait accorder un accès sans précédent au périphérique, permettant des modifications permanentes qui pourraient survivre aux mises à jour et aux réinitialisations logicielles. Cette époque fut marquée par des exploits célèbres comme limera1n et Pwnagetool, qui a déverrouillé les iPhones en masse, permettant des installations de micrologiciels personnalisés et des modifications profondes du système.
Le passage à iBoot : vulnérabilités du chargeur de démarrage
Alors qu'Apple renforçait la bootROM, les attaquants se sont tournés vers iBoot, l'étape suivante du processus de démarrage iOS. Les exploits dans le chargeur de démarrage, comme redsn0w et Sn0wbreeze, bien que moins permanents que les vulnérabilités bootROM, offraient toujours un contrôle étendu sur le périphérique. En compromettant iBoot, les attaquants pourraient influencer le noyau et l'environnement utilisateur, permettant une personnalisation importante et contournant les restrictions de l'écosystème d'Apple. Ces vulnérabilités pouvaient être corrigées via des mises à jour logicielles, ce qui en faisait un moyen de jailbreak moins durable mais toujours efficace.
L'ère du noyau : correctifs et protection
La progression vers les exploits du noyau a marqué une évolution significative dans les tactiques de jailbreak. Vulnérabilités au niveau du noyau, exploitées par des outils tels que Pangu, Taiget Yalu, permettait l'exécution de code non signé et des modifications profondes du système sans altérer le processus de démarrage. Cette époque a consolidé une approche plus raffinée du jailbreak, en se concentrant sur la flexibilité opérationnelle au sein de l'architecture de sécurité d'Apple. Des jailbreaks comme Electra et Unc0ver a encore illustré cette stratégie, en naviguant à travers les défenses d'Apple pour modifier le système tout en conservant un semblant de conformité avec les protocoles de sécurité d'iOS.
Jailbreaks modernes : exploits de précision et spécifiques aux processus
L’année 2015 a été un tournant dans l’histoire du jailbreak. Apple, ayant renforcé efficacement les défenses du bootROM et de l'iBoot, n'était plus disposé à simplement réagir aux divers exploits de son noyau avec des correctifs périodiques et est passé à l'offensive contre la communauté du jailbreak avec une série d'innovations qui ont essentiellement permis de maintenir le jailbreak. communauté – ainsi que des entreprises telles que Cellebrite et NSO – sur leurs talons.
Dans iOS 9 (septembre 2015), Apple a introduit Kernel Patch Protection (KPP), leur mise à jour de sécurité la plus critique. KPP fait référence au code implémenté dans le noyau pour protéger la mémoire en lecture-exécution et en lecture seule dans le cache du noyau. Pour ce faire, il effectue des contrôles aléatoires de temps en temps.
Depuis septembre 2015, les jailbreaks ont été divisés en KPPLess et KPP Bypass. KPPLess est une technique dans laquelle KPP est toujours en cours d'exécution, ce qui signifie éviter le contrôle KPP. KPP Bypass désactive complètement KPP. Avant KPP, un attaquant avait principalement besoin de disposer d'une capacité d'écriture dans le noyau pour corriger le code de sécurité.
Dans les puces A10, initialement livrées avec iOS 10 en juin 2016, Apple a introduit KTRR, Kernel Text Read only Region, qui empêche la modification du noyau iOS au moment de l'exécution. Les puces plus anciennes tentaient de le faire via un programme de surveillance chargé dans EL3, mais la méthode était intrinsèquement défectueuse et la communauté Jailbreak avait depuis longtemps trouvé des moyens de contourner le programme de surveillance. À partir des puces A10, Apple a effectivement transféré les contrôles de sécurité dans le matériel lui-même, rendant ainsi la vie des jailbreakers (tant dans la communauté que dans le secteur à but lucratif) plus difficile.
En juin 2018, avec le release d'iOS 12, Apple a introduit PAC (Pointer Authentication Code), son implémentation de Pointer Authentication. PAC utilise les bits supérieurs d'un pointeur pour stocker une signature cryptographique, améliorant essentiellement la sécurité en vérifiant les valeurs du pointeur et un contexte supplémentaire. Des instructions spéciales ont été introduites pour ajouter un code d'authentification à un pointeur, vérifier le PAC d'un pointeur authentifié et restaurer la valeur d'origine du pointeur. Cela donne au système un moyen de fournir des garanties cryptographiques solides quant à la probabilité que certains pointeurs aient été falsifiés par des attaquants, ce qui offre la possibilité d'améliorer considérablement application security.
Lorsque les puces A12 sont sorties plus tard cette année-là (septembre 2018), Apple a introduit la couche de protection de page (PPL). L'objectif de PPL est d'empêcher les acteurs malveillants de modifier le code exécutable d'un processus ou ses tables de pages, même après avoir obtenu les privilèges de lecture/écriture/exécution du noyau. Il s’agit d’une autre atténuation des exploits qui peut rendre plus difficile l’enchaînement d’attaques. Pour ce faire, il exploite APRR pour créer un « noyau à l'intérieur du noyau » qui protège les tables de pages. La seule façon pour le noyau de modifier les tables de pages est d'entrer dans PPL en appelant une « routine PPL », qui est analogue à un appel système de XNU vers PPL. Cela limite les points d'entrée dans le code du noyau qui peuvent modifier les tables de pages uniquement à ces routines PPL. Pouvons-nous résumer pourquoi ce changement A12 était important pour la communauté du jailbreak ?
La communauté du jailbreak a connu une période de calme relatif jusqu’en juin 2021, date à laquelle Apple a introduit iOS15. iOS15 a donné des ruches à la communauté du jailbreak en introduisant SSV, le Sealed System Volume. Ce mécanisme est une fonctionnalité de sécurité au niveau du noyau qui scelle le volume avec une signature cryptographique connue uniquement d'Apple, qui rejette tout code tentant de modifier le contenu du système, ce qui empêchera ensuite toute modification non autorisée effectuée avant le démarrage d'iOS. Cette méthode a obligé la communauté du jailbreak à modifier toute la structure des architectures de jailbreak précédentes. Depuis lors, les jailbreaks ont été divisés en sans racine et en racine.
Les jailbreaks sans racine conservent tous les fichiers et modifications en dehors de root, généralement dans / var et /privé/pré-démarrage. Les jailbreaks rootful utilisent des montages de liaison qui créent effectivement une « fausse » racine, qui agit ensuite comme la vraie. rootfs, mais nécessite un exploit bootROM.
Étant donné que le jailbreak a été réalisé sans patcher le code du noyau, les effets ne s'appliquent plus à l'ensemble du système mais davantage à chaque processus. Cela signifie qu'au lieu de jailbreaker le système d'exploitation, le jailbreak se fait désormais par processus.
Nous pouvons voir les choses de cette façon : à l’ère des jailbreaks « prémodernes », il suffisait de patcher le noyau, ce qui affectait l’ensemble du système. Maintenant, là où de nombreux jailbreaks (Chimère, checkra1n) altèrent les structures de données du noyau au lieu de corriger directement le code du noyau, la falsification se produit par processus. Cet état complique la détection du jailbreak. Même si l'intégrité du système semble intacte, une logique est mise en œuvre pour déterminer si un processus a été jailbreaké ou non. Cela signifie que, sauf intentionnelle, le processus reste emprisonné. Cela signifie que même si ce type de jailbreak donne accès à des ressources auxquelles Apple ne souhaite pas que l'application ait accès, il ne donne pas accès à tous les processus, ce qui est important car cela signifie que le jailbreak lui-même est pas nécessairement dangereux pour toutes (ou même certaines) des applications du téléphone.
Cette nouvelle façon de jailbreaker est pour le moins techniquement compliquée. Il faut des crochets lancé où tous les processus sont invoqués, les hooks d'exécution et l'insertion de tous les nouveaux jailbreaks de processus immédiatement après la création du processus. Et malheureusement (du point de vue de la communauté du jailbreak), toute cette créativité technique conduit à moins de « libertés ».
Implications pour Application Security Ingénieurs et DevSecOps Gestionnaires
Alors, qu'est-ce que tout cela signifie pour vous, le application security ingénieur? Eh bien, l’un des meilleurs mécanismes de défense que nous vous proposons est «Autoprotection des applications d'exécution »ou RASP. RASP permet à nos clients de programmer leurs applications pour qu'elles réagissent automatiquement quand et si des gardes et des protections sont déclenchées. Certains clients utilisent depuis longtemps RASP pour agir quand et si des jailbreaks sont déclenchés.
Mais si la longue histoire du jeu du chat et de la souris entre Apple et la communauté Jailbreak nous a appris quelque chose, c'est que tous les jailbreaks ne sont pas créés égaux. Certains nécessitent une « connexion » à un ordinateur, offrant peu de valeur fonctionnelle aux utilisateurs curieux ou à toute personne autre que les acteurs de la menace et les universitaires les plus déterminés. Il existe différents types, tels que « semi-attachés », sans racines et « enracinés ». Certains ne méritent sans doute pas le surnom de « jailbreak » en raison de leur portée limitée, ressemblant davantage à des expériences de hackers qu’à un « produit » fonctionnel. Si les efforts continus d'Apple pour dissuader les jailbreaks ont forcé l'innovation dans la communauté du jailbreak, ils ont également rendu les jailbreaks modernes moins puissants au fil du temps. En d'autres termes, la volonté incessante d'Apple de mettre la communauté du jailbreak dans ses retranchements a rendu le terme « jailbreak » presque trop grandiose pour faire référence aux avantages que ces hacks parviennent à conférer, même si le sens technique requis pour accomplir ces petits exploits a été réduit à néant. grandi.
C'est pour cette raison que nous conseillons aux entreprises qui créent des applications pour leurs clients d'utiliser un scalpel plutôt qu'un marteau pour réagir aux signes de jailbreak. Par exemple, il suffit d'enregistrer qu'un jailbreak s'est produit et il n'est peut-être plus nécessaire de programmer une réaction exclusivement à un jailbreak. Si vous jugez nécessaire de programmer une réaction, réfléchissez aux autres gardes qui sont déclenchées en combinaison avec le jailbreak lors de l'élaboration de votre stratégie d'autoprotection des applications d'exécution (RASP). Le jailbreak est un catalyseur. Il est important de détecter les attaques activées PAR le jailbreak et de ne pas se fier uniquement à la détection du jailbreak pour arrêter les attaquants.
Pour en savoir plus sur la façon dont Digital.ai Application Security peut protéger (en détectant les jailbreaks parmi de nombreuses autres astuces) vos applications iOS, téléchargez notre TELECHARGEZ LA FICHE PRODUIT.
Êtes-vous prêt à faire évoluer votre entreprise ?
Explorer
Quoi de neuf dans le monde de Digital.ai
Menaces de sécurité pesant sur les applications fonctionnant en dehors du pare-feu : aperçus de 2024 Application Security Rapport de menace
Naviguez parmi les risques croissants de cybersécurité pour les applications exécutées à l'état sauvage – Découvrez plus d'informations sur Digital.aiRapport 2024 sur les menaces liées aux applications.
Comment Continuous Testing Favorise la collaboration en matière de développement et de sécurité : l'approche à la mode du développement sécurisé
Découvrez comment continuous testing et app sec favorisent un SDLC collaboratif, créant un labyrinthe complexe pour les attaquants tout en responsabilisant les équipes et en réduisant les coûts.
Problèmes de sécurité : comment garantir la sécurité du code généré par l'IA
Sécurisez l’IA et le code écrit par l’homme avec Digital.ai Application Security, parfaitement intégré aux pipelines CI/CD, offrant des mécanismes de protection robustes.