Une faille de sécurité corrigée avec macOS 13.1 : une embrouille de bits

Pierre Dandumont |

Avec Ventura 13.1, Apple a corrigé une vulnérabilité qui contournait différentes protections de macOS grâce à un package modifié. Cette faille permettait en effet d'installer un malware dans des emplacements réservés au système ou de complètement éviter Gatekeeper.

Un problème entre le 32 et le 64 bits

Attention, c'est un peu compliqué. La faille passe par la création d'un package (un .pkg sous macOS). Le package contient un fichier xar qui se compose de plusieurs choses. Un header, une table des matières (la TOC) et ce qu'on appelle le heap. Le header contient des informations sur le contenu, comme les algorithmes utilisés ou la taille de la TOC. La TOC, elle, liste le contenu du package, avec les adresses de début et de fin des fichiers, et le type de compression utilisée. Enfin, le heap contient réellement les données.

L'icône des package.

Vous suivez ? Continuons. Dans la TOC, il y a une zone qui renvoie vers des données du heap, et elle contient un checksum, c'est-à-dire le résultat d'un calcul précis. Ce checksum sert à vérifier que la TOC n'a pas été modifiée : si la valeur correspond à celle que l'OS calcule, tout va bien.

avatar  | 

Kamoulox !

avatar koko256 | 

Heureusement que l'éradication du C est en marche. Cela commence à bien faire ces bêtises.

avatar fornorst | 

@koko256

La c’est pas vraiment lié à un souci de C, le problème n’aurait pu être présent dans d’autres langages.’d’ailleurs rien n’indique que cette vérification ait été faite en C (je ne suis pas allé voir les sources)

avatar koko256 | 

@fornorst

Ce genre de truc arrive fréquemment en C avec leur int qui dépend du compilo et leurs tableau mal fichus. Et le malin plaisir de la norme à ne pas normer ce qui le rend mauvais pour tout ce qui est réseau (lectures de fichiers téléchargés inclus). La norme ne comporte même pas les fonctions pour convertir ordre du réseau vers ordre de la machine.
Ce genre de trucs, c'est beaucoup plus rare avec les autres langages.

avatar R-APPLE-R | 

Mince ! J’ai un TOC 🫢 toc toc y’a quelqu’un ? Non y’a personne ! Ok merci au revoir je repasserai alors 😁😈

avatar Nesus | 

C’est machiavélique.

avatar valcapri | 

Pas mal, la faille, il fallait y penser.

Mais il y a une chose que je ne comprends, c’est pourquoi encore utilisé du 32 bits dans un système qui est full 64 bits et sur lequel on ne peut plus installer des packages 32 bits? C’est à croire qu’ils ont empêché l’utilisation des binaires 32 bits sans enlever le code qui utilisait encore ce mécanisme ? Car cela fait depuis Catalina qu’il est sensé ne plus y avoir de 32 bits.

Il serait peut-être intéressant dans ce cas que l’équipe de sécurité d’Apple fasse une recherche proactive pour déceler si il n’y a pas d’autres fonctions du genre utilisé ailleurs.

avatar Pierre Dandumont | 

C'est une variable, ça n'a aucun rapport avec l'architecture des CPU.

On peut utiliser des variables 64 bits sur un CPU 32 bits, d'ailleurs. Dans un cas comme ça, le choix est surtout lié au contenu. Typiquement, on peut utiliser des variables 32 bits (ou même 8 bits dans le cas des réseaux neuronaux) pour éviter de remplir la mémoire avec du vide.

avatar stefhan | 

Je m'étais fait exactement la même réflexion que @valcapri ; merci pour les explications.

CONNEXION UTILISATEUR