Une faille dans sudo permet de prendre le contrôle du Mac
Découverte à l'origine sur Linux, une faille dans la commande sudo
(CVE-2021-3156), qui permet d'exécuter d'autres commandes avec tous les droits, affecte aussi la sécurité du Mac. À l'aide d'une méthode nommée heap overflow qui s'attaque à la mémoire temporaire, des chercheurs de Qualys ont trouvé comment exploiter sudo
sans mot de passe pour s'arroger les droits administrateur de l'ordinateur.
La vulnérabilité est présente depuis au moins 10 ans, mais elle n'a été découverte que récemment. Pour être exploitée, elle demande d'avoir accès au système, ce qui limite les risques immédiats, même si un malandrin peut s'appuyer sur l'installation d'un malware pour parvenir à ses fins.
Comme le rapporte ZDNet, plusieurs chercheurs en sécurité ont confirmé la présence de la faille sur Mac (Intel et Apple Silicon), y compris sur macOS Big Sur 11.2 sorti cette semaine. Contacté par le site, Apple s'est refusé à tout commentaire, mais on imagine qu'un correctif est en préparation.
« Découverte à l'origine sur Linux »
Histoire de faire mon casse pieds : Linux c’est un noyau, sudo est une commande que l’on trouve sur nombre d’Unix-Like mais pas sur toutes les distribution basée sur un noyau Linux 🤓😉
Blague à part la dénomination de l’OS est une question quasiment politique et je suis de l’obédience GNU/Linux, vive Richard Stallman 😃😉
Quand même impressionnant d’avoir un buffer overflow sur une commande de ce niveau de sensibilité et relativement ancienne 🤯
@YetOneOtherGit
et une faille aussi tres ancienne !
@raoolito
"et une faille aussi tres ancienne !"
Dans le monde Unix sudo est une commande relativement récente 😉
Le très ancien dans cet univers est vraiment plus vieux 🥸
@ YetOneOtherGit : « Dans le monde Unix sudo est une commande relativement récente 😉
Le très ancien dans cet univers est vraiment plus vieux »
L’usage généralisé de sudo dans les distributions Linux (pardon, « GNU/Linux ») est relativement récent. Mais sudo lui-même a quarante ans (comme pas mal de choses, il n’a heureusement pas attendu Linux pour exister), ce qui n’en fait pas vraiment un jeunot, même dans l’univers d’Unix.
Mais du coup, il est vrai que relativement à tout ça cette faille est en effet assez récente.
Qui sait ? Peut-être qu’un jour prochain on découvrira une faille traînant depuis les toutes premières versions de sudo. :-)
@BeePotato
"Mais sudo lui-même a quarante ans"
Les premise effectivement mais il est resté très marginal dans toutes les famille d’Unix jusqu’au moins dans les années 90.
su ça c’est une commande ancienne 😉
@ YetOneOtherGit : « Les premise effectivement mais il est resté très marginal dans toutes les famille d’Unix jusqu’au moins dans les années 90. »
Il était surtout sur BSD, mais il existait et il n’est donc pas « relativement récent », s'tout. :-P :-D
J’ai un très vague souvenir comme quoi il était déjà utilisé dans NeXTStep, mais il est fort possible que je mélange avec autre chose.
@BeePotato
“Il était surtout sur BSD, mais il existait et il n’est donc pas « relativement récent », s'tout. :-P :-D”
Relativement récent c’est justement relatif.
Et avec l’âge la notion de récent se dilate fortement. 😂😉
@BeePotato
"Il était surtout sur BSD"
J’étais sur Sun OS qui était un BSD et je n’ai pas de souvenir de sudo en standard (J’ai encore dans la cave la masse de classeur où se trouver en version imprimé tout le contenu de man) il faudrait que je vérifie.
J’ai été dev NeXT et là il me semble bien que sudo était là 😉
@BeePotato
"comme pas mal de choses"
Linux c’est la paupérisation d’Unix de toute façon 😂
@BeePotato
"ce qui n’en fait pas vraiment un jeunot, même dans l’univers d’Unix."
Je suis d’une génération pré-sudo donc c’est un truc se jeunot 🥸
@BeePotato
"Mais du coup, il est vrai que relativement à tout ça cette faille est en effet assez récente"
Yep et c’est un des pb : pas grand chose peut faire basculer la sécurité d’un outil essentiel qui semble digne de confiance.
@YetOneOtherGit
Le cas s’était présenté également pour la saisie du MdP de session lorsqu’on appuyait 28 ou 29 fois sur la touche suppression (ou quelque chose dans le genre), MacGe en avait parlé il y a quelques temps.
Une faille très ancienne qui n’avait été identifiée que récemment pour le coup.
@Cric
Y en a eu aussi sur SSH par exemple 😉
@Cric
Ça me rappelle aussi ma jeunesse (début 90) quand sur Sco OpenServer (UNIX) il suffisait pour avoir accès en root d’appuyer très rapidement sur la touche « suprr » après avoir renseigné n’importe quoi en mot de passe...
Aucun risque avec ce genre de faille en ce moment ! heureusement avec le Covid-19, la majorité des malandrins ont la vie dure avec la distanciation sociale.
@LoydD
Physique plutôt non !!
@pivert42
Naturellement cher Watson
@pivert42
Physique ça voudrait dire qu’on se tient éloigné des gens. Hors il n’y qu’à voir un rayon en soldes pour constater que non.
Il n’y a que nos proches aves lesquels nous sommes distants. Social sonne donc beaucoup plus juste.
Mais physique paraît plus acceptable. Pirouette politique :)
@LoydD
Vraiment?
Souvenez-vous du 6 janvier dernier : une meute de malandrins enragés prenait d'assaut le Capitole. La distanciation sociale était manifestement le cadet de leurs soucis.
Et ils ne se sont pas privés de s'emparer des ordinateurs qui leur tombaient sous la main.
Ce qui, soit dit en passant, apporte une nouvelle coloration à la notion d'attaque « brute force ».
@occam
😁
@occam
"« brute force »."
Et au concept idiot-proof, la masse de ses glands à visage découvert était une ode au Darwinisme 😉
Il serait vraiment temps de virer le plus de programmes setuid écrit en C et les remplacer par un langage failsafe.
@koko256
Tu peux développer pour les novices comme moi ?
Le C est plutôt sûr de ce que j’ai toujours entendu.
@ lkaritoo : « Le C est plutôt sûr de ce que j’ai toujours entendu. »
Non, le C n’est pas sûr du tout du point de vue de la gestion de la mémoire.
Tout simplement parce que les outils qu’il fournit pour cela sont très basiques et que presque toute cette gestion est à la charge du développeur, qui dispose du coup de beaucoup de liberté, qui se paye par autant de responsabilité.
Tant qu’on ne sort pas de l’espace mémoire attribué au processus, on peut aller lire et écrire n’importe quoi n’importe où sans se faire rappeler à l’ordre.
Ça a créé d’innombrables problèmes depuis des décennies. Dans le meilleur des cas, on se retrouve avec un processus qui plante (parce qu’il a fini par essayer d’accéder à la mémoire hors de l’espace qui lui était attribué). Dans le pire des cas, on a une faille de sécurité comme celle-ci, ou une corruption de données.
La plupart des langages de programmation créés plus récemment ont utilisé une approche plus sophistiquée de la gestion de la mémoire, offrant plus de protection contre les erreurs de programmation de ce genre.
Mais il y a énormément de code écrit en C utilisé tous les jours, et qui continue à être mis à jour. On n’a donc pas fini de voir ce genre de problème.
@BeePotato
Je ne peux que te rejoindre sur ces constats et dieu c’est que j’en ai produit des volumes de C.
Et je suis surpris de constater qu’hélas bien des jeunes gens voient encore C comme un saint graal fantasmé ayant une aura fabriquer sur des mythes.
Et ce n’est pas cracher sur le K&R ni sur un langage qui m’a longtemps accompagné.
@ YetOneOtherGit : « Et ce n’est pas cracher sur le K&R ni sur un langage qui m’a longtemps accompagné. »
Pareil. Je ne crache pas sur le C, que j’aime encore beaucoup même si je n’en écris presque plus. Mais si je devais faire une liste de ses qualités, le terme « sûr » n’y apparaîtrait pas. :-)
@BeePotato
"Mais si je devais faire une liste de ses qualités, le terme « sûr » n’y apparaîtrait pas. :-)"
En 2021 la liste de ses qualités qui me le ferait recommander sur un projet me semble s’être très réduite.
@BeePotato
Dans le même esprit je n’ai jamais été un grand fan de la qualité se code du noyau Linux.
Comparé à Solaris par exemple.
@BeePotato
Au passage je ne sais pas si tu t’es intéressé à Rust il y a vraiment des choses très intéressante.
@ YetOneOtherGit : « Au passage je ne sais pas si tu t’es intéressé à Rust il y a vraiment des choses très intéressante. »
Oui, j’ai essayé. Mais il y a des aspects de la syntaxe auxquels je n’ai pas accroché, et je ne suis pas encore pleinement convaincu pas ce modèle de gestion de la mémoire.
Du coup, ne disposant malheureusement pas d’un temps infini pour jouer avec tous les langages que je voudrais essayer, j’ai préféré me pencher bien plus sur Swift, qui offre plus d’opportunités de m’amuser.
Pas de vrais projets en Rust pour moi pour l’instant, donc. Mais je suis son évolution du coin de l’œil.
@BeePotato
"et je ne suis pas encore pleinement convaincu pas ce modèle de gestion de la mémoire."
C’est la grande force même si le changement de sémantique de l’assignation est un peu déstabilisant.
On à utiliser en prod sur un petit projet interne d’outil relativement bas niveau (1 MxH environ) le post-mortem est assez prometteur.
@lkaritoo
"Le C est plutôt sûr de ce que j’ai toujours entendu."
Il ne faut pas écouter ceux qui roulent des mécaniques en se croyant très fort parce qu’ils “font du C, peuvent tout se permettre et n’ont pas besoin qu’un langage leur donner des contraintes pour maîtriser”
Un langage moderne se définit bien plus par ce qu’il interdit de faire que parce qu’il permet de faire.
C c’est un langage “sans filet” ce qui n’est pas la chose la plus recommendable pour affronter la complexité.
Un pb de buffer overflow peut assez facilement arriver même pour un excellent développeur expérimenté.
Le C est plus un assembleur abstrait qu'autre chose.
En cela, il ne porte intrinsèquement aucune sûreté, c'est tout le contraire !
Il a d'autres atouts, mais pas celui là.
@byte_order
"Il a d'autres atouts, mais pas celui là."
Et en 2021 il lui en reste pragmatiquement relativement peu.
En caricaturant je ne garderai que CompCert, le compilateur d’un très large sous-ensemble de C99 prouvé formellement avec Coq. 😉
On oubli souvent que les compilateurs aussi ont des bugs 🥶
@YetOneOtherGit
> Et en 2021 il lui en reste pragmatiquement relativement peu.
Essentiellement, d'être en effet un sorte d'assembleur universel quasiment disponible sur n'importe quelle plateforme.
Mais oui oui, il reste très peu d'intérêt.
Mais y'a un historique colossale à maintenir, et le cout de le convertir dans un autre langage est souvent pas justifiable.
@byte_order
"Mais y'a un historique colossale à maintenir"
Ce dois sans doute être une des plus grosses base de code hérité effectivement 😉
https://hackingvision.com/wp-content/uploads/2019/10/sudofunnycartoon.jpg
Un classique 😉😂
Gasp ! Depuis juillet 2011 et sudo 1.9.5p2
@Moonwalker
C’est quand même sidérant.
sudo a été créée en 1984, est présente depuis le début sur OS X, c’est littéralement la première commande qu’on souhaiterait attaquer en hacking.
Des fois, j’ai envie de stocker certains trucs avec un papier et un crayon dans un coffre à la cave.
@hugome
Pense aux inondations
@DG33
C’est pas faux, j’en ai eu une encore récemment. Mais avant que ça atteigne le coffre, il faudrait plus qu’une crue centennale de la Seine !
À chaque correction de bug du genre, c'est les cellules hacking des services secrets de tous les pays qui doivent faire la tronche. Je me demande combien l'avaient identifiée sans en tenir informées les sociétés concernées.
@lll
"À chaque correction de bug du genre, c'est les cellules hacking des services secrets de tous les pays qui doivent faire la tronche."
Nous ne sommes pas sur un bug mais sur une faille, elle était relativement ressente et il ne faut pas croire que les agence de renseignements les trouvent à tour de bars avant tous les experts en sécurité.
@YetOneOtherGit
> Nous ne sommes pas sur un bug mais sur une faille
Euh, si, y'a *aussi* un bug dans la gestion des slash-escapings qui ne prévoit pas qu'un argument puisse se terminer par un \. Qui peut / va probablement aboutir à un segfault même sans attaque buffer overflow.
Et c'est ce bug qui, ensuite, permet, dans un cas très particulier (appel via sudoedit avec l'option -s ou -i) , la faille de sécurité via un heap overflow.
La correction :
https://github.com/sudo-project/sudo/commit/1f8638577d0c80a4ff864a2aad80a0d95488e9a8
@byte_order
"Euh, si, y'a aussi un bug dans la gestion"
J’essaye de faire passer la nuance de sens pour les non initiée d’un point de vu général, les termes deviennent de tel fourre-tout qu’à la fin il ne veulent plus rien dire 😉
Un peut comme l’emploi de “optimisé M1” à la place de “porté sur M1”
C’est de la vulgarisation du champ d’application des concepts 😉🥸
@lll
Sudo est plein de bug et de manière d’escalader.
Il vaut mieux éviter, pour des raisons de sécurité, de l’installer.
Quelques démonstrations rapides:
(Les 40 premieres minutes suffisent)
https://youtu.be/lZ4wAi-1Y08
FX de Cachem en parlait justement la semaine dernière (même si plus orienté Linux qu’Apple). Du coup il faut attendre une nouvelle maj de sécurité ?
C'est du très lourd !
Je suis curieux de voir si Apple va proposer une mise à jour de sécurité pour toutes les versions d'OSX ou si elle va se contenter de patcher le binaire sudo sur les 2 ou 3 dernières versions de macOS...
Et le WSL serait touché, par curiosité ?
Pages