
Pour mieux comprendre les déclarations du membre de l’équipe de Project Zero, il convient de jeter un coup d’œil dans l’implémentation des fonctionnalités propres à chaque appareil. Lorsque les fournisseurs de mobiles Android mettent un appareil sur le marché, il est fréquent qu’ils ajoutent du code spécifique au noyau du système de l’appareil. Dans de nombreux cas, ces modifications sont importantes, voire nécessaires pour le bon fonctionnement de l’appareil commercialisé. Samsung qui ne déroge pas à la règle a également apporté moult changements dans le noyau d’Android pour ce qui concerne son Galaxy A50. Mais comme Horn le signale, ces changements entraînent souvent des failles de sécurité.
Sur le Galaxy A50 (modèle modèle SM-A505F), un tas de code spécifique a été ajouté au noyau de l’appareil, notamment dans le volet sécurité/arborescence. En particulier, security/proca/ est un code spécifique de Samsung qui implémente « Process Authenticator ». Selon les déductions de Horn, ce code serait utilisé pour suivre l’état d’authentification des processus en fonction de l’exécutable qu’ils exécutent, en utilisant des attributs étendus pour décrire les contextes de sécurité des fichiers exécutables, puis en mettant ces informations à la disposition du code de l’hyperviseur. Alors que certaines balises ont été implémentées afin de permettre à PROCA de suivre l’état des tâches en cours d’exécution, il apparaît que dans son fonctionnement, PROCA peut être leurré.
En effet, lorsque l’état d’une tâche passe à TASK_DEAD, le PID numérique de cette tâche est publié. Cela arrive avant que son TASK_STRUCT disparaisse. Par conséquent, lorsqu’une tâche authentifiée meurt, le PID numérique (que PROCA utilise pour identifier les tâches suivies) peut être réutilisé alors que l’entrée PROCA pour le PID est toujours présente. Au-delà des implications logiques pour la sécurité (pouvoir passer les vérifications d’authentification en réutilisant le PID d’une tâche authentifiée, morte et non libérée), cela signifie que via clone (), il est possible d’insérer des clés en double dans le hashmap, puis effectuer des suppressions simultanées sur la même clé, ce qui conduit à une corruption de mémoire dans proca_table_remove_by_pid (). Et puisque le verrou est abandonné entre la recherche de hashmap et l’opération hashmap unlink, deux appels simultanés pour le même PID numérique peuvent provoquer des failles de type use-after-free et de double-free.
Comme autre modification apportée dans le noyau du Samsung Galaxy A50, Horn rapporte qu’une « protection » supplémentaire a été ajoutée aux structures d’informations d’identification. Struct cred a été porté en lecture seule à l’aide du code de l’hyperviseur (CONFIG_RKP_KDP, "Protection for cred structure"

Selon Horn, ces modifications de code ne font qu’ajouter une surface d’attaque supplémentaire. Il ajoute que certaines des fonctionnalités personnalisées ajoutées par Samsung sont inutiles et peuvent être supprimées sans perte de valeur. Bien que ne sachant pas de manière exhaustive ce que PROCA est censé faire, il souligne toutefois que SEC_RESTRICT_SETUID semble être conçu pour restreindre un attaquant qui a déjà acquis une lecture / écriture arbitraire du noyau — ce qui pour lui semble futile. Les ressources d’ingénierie auraient été mieux dépensées pour empêcher un attaquant d’atteindre ce point en premier lieu, soutient-il.
Comme recommandations, Horn préconise que les modifications spécifiques du noyau soient effectuées en amont ou déplacées dans des pilotes de l’espace utilisateur, où elles peuvent être implémentées dans des langages de programmation plus sûrs et/ou en bac à sable, et en même temps ne compliqueront pas les mises à jour des versions plus récentes du noyau. En outre, le fait qu’il ait pu réutiliser le bogue infoleak qui a été corrigé il y a plus d’un an montre pour lui que la façon dont les branches des appareils Android sont actuellement maintenues est un problème de sécurité. Alors qu’il a critiqué certaines distributions Linux dans le passé pour ne pas avoir pris les correctifs en amont en temps opportun, la situation actuelle dans l’écosystème Android est pire, selon le chercheur en sécurité. Idéalement, tous les fournisseurs devraient s’orienter vers les mises à jour fréquentes du noyau effectuées en amont et non chercher à implémenter leurs solutions personnalisées en aval, ce qui conduirait selon Horn à des bogues comme ceux découverts sur le Galaxy A50. Samsung a récemment publié une mise à jour de sécurité pour corriger les failles découvertes.
Source : Google Project Zero, Samsung
Et vous ?



Voir aussi





Vous avez lu gratuitement 2 865 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.