Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 20/01/2009, à 14:02

philarmonie

Sudo et la sécurité?

Bonjour à tous,

Le sujet n'est pas en lien direct avec la programmation mais je pense que les développeurs seront les mieux à même de répondre à ma question.
Je m'interrogeais sur une possible faille de sécurité qu'offre la commande sudo. Nous sommes tous contents que notre système favoris n'a pas (ou quasiment pas) de virus répertoriés, et ce qui est souvent argué à ce sujet est qu'un virus pouvant faire peu de dégâts sur le système, les créateurs de virus n'ont pas d'intérêt à en écrire. Là-dessus, j'aurai plutôt tendance à penser que c'est le faible nombre d'utilisateurs allié à la philosophie de l'OS qui nous protège de ce côté là.
Pour en revenir à mon interrogation au sujet de la faille de sécurité, j'en viens au fait.
Imaginons quand même qu'un pirate malveillant décide d'écrire un virus pour GNU/Linux. S'il s'y prend ainsi j'ai tendance à croire qu'il peut faire beaucoup de dégâts:
- il lance son virus en background
- pour s'installer proprement il a besoin des droits root
- il rentre alors dans une boucle en attendant que l'utilisateur face usage de 'sudo'
- une fois cet événement arrivé, il a 15 minutes pour profiter des privilèges root
- il s'installe où il veut
- crée un entrée dans '/etc/sudoers' pour pouvoir s'exécuter en root sans demande de mot de passe
- crée une entrée pour s'exécuter à chaque démarrage du système (en root et sans mot de passe)
- fait tout ce qu'il veut faire en tant que root et donc beaucoup de dégâts possibles.

Voilà, la parole est maintenant à vous. Ce scénario est-il possible?

#2 Le 20/01/2009, à 14:06

Koshie-2.0

Re : Sudo et la sécurité?

O_o

Hum, c'est pas du tout lié au nombre d'utilisateur mais au faite que ce soit libre, si y'avais plus de monde ce serait au moins tout aussi sécurisé que maintenant.

- il rentre alors dans une boucle en attendant que l'utilisateur face usage de 'sudo'

Il devrat profiter d'une faille du système alors, elles existent forcément mais ne vont pas rester longtemps roll.

- une fois cet événement arrivé, il a 15 minutes pour profiter des privilèges root

Le temps est réglable, de plus rien n'oblige quelqu'un à utiliser sudo et ce sera donc fonctionnel uniquement sur les GNU/Linux utilisant sudo? Allez, quoi.. La moitié? Voir moins ! Vu que Fedora, OpenSuse, Mandriva, Debian et j'en passe n'ont pas de sudo de mis de base, y'a Ubuntu certes et c'est la distro la plus utilisé mais bon...

En plus vu la diversité des distributions GNU/Linux... Sans compter le faite que si ça se produit ça ne va pas arriver souvent...

Franchement, sans être devs et expert en sécurité je pense que ton truc est un peu tiré par les cheveux.

Dernière modification par koshie666 (Le 20/01/2009, à 14:08)

#3 Le 20/01/2009, à 14:08

®om

Re : Sudo et la sécurité?

philarmonie a écrit :

Voilà, la parole est maintenant à vous. Ce scénario est-il possible?

Pour moi, il n'y a aucune raison qu'il ne soit pas possible. Je m'étais déjà posé la question.

À partir du moment où il y a une faille dans un logiciel (il y en a forcément), un programme malveillant peut s'exécuter avec les mêmes droits que le loigiciel, et donc s'il attend que l'élévation de privilège par sudo se produise, il peut avoir les droits root.

Faudrait faire un POC pour tester.

Hors ligne

#4 Le 20/01/2009, à 14:12

philarmonie

Re : Sudo et la sécurité?

koshie666 a écrit :

- il rentre alors dans une boucle en attendant que l'utilisateur face usage de 'sudo'

Il devrat profiter d'une faille du système alors, elles existent forcément mais ne vont pas rester longtemps roll.

Pas besoin de faille de sécurité pour ça, tu testes la valeur de retour d'une commande qui a besoin des droits root, si la valeur de retour n'est pas 0 (commande exécutée avec succès) tu la recommences jusqu'à ce qu'elle s'exécute avec succès.

koshie666 a écrit :

- une fois cet événement arrivé, il a 15 minutes pour profiter des privilèges root

Le temps est réglable, de plus rien n'oblige quelqu'un à utiliser sudo et ce sera donc fonctionnel uniquement sur les GNU/Linux utilisant sudo? Allez, quoi.. La moitié? Voir moins ! Vu que Fedora, OpenSuse, Mandriva, Debian et j'en passe n'ont pas de sudo de mis de base, y'a Ubuntu certes et c'est la distro la plus utilisé mais bon...

Ma question ne traite justement que de 'sudo' et d'une possible faille qu'il offre wink

#5 Le 20/01/2009, à 14:16

Koshie-2.0

Re : Sudo et la sécurité?

Tfasson su - sailebien.

Dernière modification par koshie666 (Le 20/01/2009, à 14:16)

#6 Le 20/01/2009, à 14:43

philarmonie

Re : Sudo et la sécurité?

@ Rom: c'est quoi un POC?

@koshie666: c'est sur que de ce côté 'su' n'offre pas la possibilité que je décris. Mais des fois sudo est bien pratique. Par exemple je suis en train d'écrire une appli en python pour que les utilisateurs Ubuntu puisses créés des thèmes Usplash facilement. Et par moment j'ai besoin des droits root pour faire certaines choses. J'utilise donc un gksudo, et c'est ce besoin qui m'a fait m'interroger sur la sécurité d'un 'sudo'. Je vais donc utiliser un 'gksudo' mais limiter la libération des privilèges root à ma seule appli et non à tout le système.

Dernière modification par philarmonie (Le 20/01/2009, à 14:44)

#7 Le 20/01/2009, à 14:46

®om

Re : Sudo et la sécurité?

philarmonie a écrit :

@ Rom: c'est quoi un POC?

ProofOfConcept smile

Hors ligne

#8 Le 20/01/2009, à 15:06

philarmonie

Re : Sudo et la sécurité?

Ok. Ce soir si j'ai un peu de temps je ferai un POC rapide en python.

#9 Le 20/01/2009, à 15:23

Hermes le Messager

Re : Sudo et la sécurité?

lool

Ben vas-y code nous une applie python tournant en tache de fond qui ouvre un navigateur de fichier en mode root si tu te connectes en root pour une autre application.

Si tu réussis, je t'offre un mars. roll

Hors ligne

#10 Le 20/01/2009, à 15:25

iuchiban

Re : Sudo et la sécurité?

philarmonie a écrit :

- il lance son virus en background

Par défaut, les fichiers téléchargés n'ont pas les droits exécutables il me semble.
Il faut donc :

chmod +x FichierInfecté.sh
sh FichierInfecté.sh

pour pouvoir lancer le virus

Si ce virus est intégré dans un logiciel qu'on veut installer, comme d'habitude, il faut savoir ce que l'on télécharge et exécute.
D'ailleurs, dans ce cas là, si le logiciel te dit "nécessite les droits sudo pour être installé" et que tu tapes ton mdp, bah le virus peut s'installer tout de suite.

- pour s'installer proprement il a besoin des droits root
- il rentre alors dans une boucle en attendant que l'utilisateur face usage de 'sudo'
- une fois cet événement arrivé, il a 15 minutes pour profiter des privilèges root

Je sais pas vous, mais si :
- je lance un premier terminal dans lequel j'exécute la mise à jour :

sudo apt-get update

il me demande mon mdp
- je lance un deuxième terminal et exécute la récupération des paquets :

sudo apt-get upgrade

il me redemande mon mot de passe.

Effectivement, il faudrait voir comment est géré exactement sudo.

- il s'installe où il veut
- crée un entrée dans '/etc/sudoers' pour pouvoir s'exécuter en root sans demande de mot de passe
- crée une entrée pour s'exécuter à chaque démarrage du système (en root et sans mot de passe)
- fait tout ce qu'il veut faire en tant que root et donc beaucoup de dégâts possibles.

Voilà, la parole est maintenant à vous. Ce scénario est-il possible?

Heureusement que par défaut, l'utilisateur courant n'a pas les droits administrateur comme sur un certain autre OS (un troll est caché dans cette affirmation, saurez vous le trouver?? big_smile (mais en même temps, c'est vrai)) donc ca limite les possibilité d'actions des fichiers malveillants.


C'est depuis que Chuck Norris a laissé la vie sauve à un manchot que l'on dit que Linux est libre.

Chuck Norris n'a pas besoin d'éditer son premier message pour ajouter [Résolu]. Chuck Norris est toujours [Résolu], quoi qu'il arrive.

Hors ligne

#11 Le 20/01/2009, à 16:58

®om

Re : Sudo et la sécurité?

iuchiban a écrit :

- je lance un premier terminal dans lequel j'exécute la mise à jour :

sudo apt-get update

il me demande mon mdp
- je lance un deuxième terminal et exécute la récupération des paquets :

sudo apt-get upgrade

il me redemande mon mot de passe.

Et avec gksudo? (simple question, je n'ai pas testé, je suis pas chez moi)

Hors ligne

#12 Le 20/01/2009, à 17:03

hello_world

Re : Sudo et la sécurité?

Hello,

J'ai fait un scripte perl... mon dieu que c'était compliqué :

#!/usr/bin/perl
$i = 0;
while ($i == 0)
{
	system ("sleep 10");
	system ("sudo rmdir /toto")
}

Si je lance ce script en tant qu'utilisateur normal, et que je lance une mise à jour, le dossier /toto précédemment créer dans un répertoire ou seul root à le droit en écriture,  est supprimer. Bien sur, à la place de faire une action inoffensive, je peux faire plein d'autre truc méchant...

Bref, n'importe quel programme qui s'exécute avec  les droits d'un sudoers peur faire très mal. D'ailleurs, la documentation est très claire sur ce point :

Le modèle de sécurité à la base est le même, et les deux systèmes partagent une même faiblesse. Tout utilisateur utilisant su root ou sudo doit être considéré comme un utilisateur privilégié. Si le compte de l'utilisateur est compromis par un attaquant, celui-ci peut aussi obtenir les privilèges d'administration et compromettre le système d'exploitation. Les utilisateurs ayant les droits d'administration doivent être protégés avec les mêmes soins que le compte système.

++

Hors ligne

#13 Le 20/01/2009, à 17:24

®om

Re : Sudo et la sécurité?

Ouais donc en gros, sudo a une faiblesse en plus qu'un compte root : il est impossible de faire si tu utilises su -, non?

Hors ligne

#14 Le 20/01/2009, à 17:41

iuchiban

Re : Sudo et la sécurité?

hello_world a écrit :

Si je lance ce script en tant qu'utilisateur normal, et que je lance une mise à jour, le dossier /toto précédemment créer dans un répertoire ou seul root à le droit en écriture,  est supprimer. Bien sur, à la place de faire une action inoffensive, je peux faire plein d'autre truc méchant...

Tu fais comment ??

./TonScriptPerl.pl&

puis

sudo apt-get update

dans le même terminal??
As tu essayé de lancer ton script dans un terminal et faire l'update dans un autre?

maintenant, essaye d'envoyer ton mail sur le net (via ftp ou bien tu te l'envoies par mail), tu le télécharges.
Quels sont ses droits par défaut??

Ensuite, il faut lancer l'exécution du script, donc comme je disais :

iuchiban a écrit :

Si ce virus est intégré dans un logiciel qu'on veut installer, comme d'habitude, il faut savoir ce que l'on télécharge et exécute.
D'ailleurs, dans ce cas là, si le logiciel te dit "nécessite les droits sudo pour être installé" et que tu tapes ton mdp, bah le virus peut s'installer tout de suite.

PEBKAC : Problem Exists Between Keyboard And Chair big_smile


C'est depuis que Chuck Norris a laissé la vie sauve à un manchot que l'on dit que Linux est libre.

Chuck Norris n'a pas besoin d'éditer son premier message pour ajouter [Résolu]. Chuck Norris est toujours [Résolu], quoi qu'il arrive.

Hors ligne

#15 Le 20/01/2009, à 17:53

®om

Re : Sudo et la sécurité?

iuchiban a écrit :

Quels sont ses droits par défaut??

Ensuite, il faut lancer l'exécution du script, donc comme je disais

Les droits du script n'ont pas d'importance, tu peux les modifier en tant qu'user avec un chmod, et tu peux le script en faisant "sh tonscript".
Dans les hypothèses, comme pour tout virus, qui se propage automatiquement, sans nécessiter une action explicite de l'utilisateur, le script peut être lancé grâce à une faille d'un logiciel lancé en tant qu'utilisateur (non root), donc l'exécution du script on considère qu'on peut (c'est l'hypothèse).

Le truc c'est qu'avec sudo, ce script exécuté peut attendre que l'utilisateur fasse une mise à jour de son système pour exécuter ce qu'il veut, et l'assertion "les codes malicieux ne peuvent pas exécuter des commandes root" devient faux.

Hors ligne

#16 Le 20/01/2009, à 17:54

hello_world

Re : Sudo et la sécurité?

Hello,

J'ai double-cliqué sur le script (puis choisi exécuter), puis fait une mise à jour de manière graphique (J'avais des mises à jour à faire "dans ma zone de notification").

Une foule de programme sont exécutés à nos dépends. Notamment javascript, présent sur beaucoup de site web, s'exécute sur la machine local. En tout cas, l'idée selon laquelle un virus ne peut pas faire de mal car il n'a pas les droit nécessaire est fausse dans le cas d'ubuntu avec sa configuration par défaut.

L'idée de dire que j'ai eu besoin de double-cliquer sur le fichier pour l'exécuter (et donc que PEBKAC ) reviens un peu à dire que on ne peut pas pirater windows car il faut cliquer sur les .exe pour les installer smile

++

Hors ligne

#17 Le 20/01/2009, à 18:23

Koshie-2.0

Re : Sudo et la sécurité?

@koshie666: c'est sur que de ce côté 'su' n'offre pas la possibilité que je décris. Mais des fois sudo est bien pratique. Par exemple je suis en train d'écrire une appli en python pour que les utilisateurs Ubuntu puisses créés des thèmes Usplash facilement. Et par moment j'ai besoin des droits root pour faire certaines choses. J'utilise donc un gksudo, et c'est ce besoin qui m'a fait m'interroger sur la sécurité d'un 'sudo'. Je vais donc utiliser un 'gksudo' mais limiter la libération des privilèges root à ma seule appli et non à tout le système.

Moi j'ai deux terminaux... Un root et un user.

#18 Le 20/01/2009, à 18:59

Rubyman

Re : Sudo et la sécurité?

Normalement, non, j'avais déjà fait le test : (gk)sudo est gardé en mémoire pour 15mn, oui, mais pour un terminal donné. Avec un autre terminal, le mot de passe est redemandé. De même, essayer de faire un sudo dans un nouveau terminal juste après avoir ouvert Synaptic, par exemple, amène quand même à une demande de mot de passe.

Par contre, il semblerait effectivement que nautilus et tous les programmes lancés en graphique se comportent comme s'ils étaient lancés par la même console... C'est une faille assez grave (mais pas non plus critique, l'utilisateur doit lui-même exécuter un troyen) que je vais signaler sur Launchpad, d'autant plus qu'elle devrait être simple à résoudre.

Dernière modification par Rubyman (Le 20/01/2009, à 19:50)

Hors ligne

#19 Le 20/01/2009, à 20:00

philarmonie

Re : Sudo et la sécurité?

He bien ça a fait parler mon message tongue

J'ai pas bien suivi ta dernière remarque Rubyman.
Pour le fait que le sudo et gksudo soit gardé en mémoire pour un terminal donné, ça c'est rassurant, ça veut dire qu'il n'y a pas de faille.
Pour le reste si j'ai bien suivi, il faut que l'utilisateur lance lui même le programme troyen (qui soit une appli graphique) et qu'en plus il est lancé un application graphique en root? c'est ça? Bon en soit si c'est le cas la faille n'est pas trop grave, mais elle existe quand même.

@hermes: j'ai pas dit que j'allais faire le virus en python, mais un simple script équivalent à ce que Hello_World à fait en perl (sauf que la condition de sortie de ma boucle while aurait été l'exécution avec succès de la commande sudo, pour ensuite faire un peu tout et n'importe quoi).

Dernière modification par philarmonie (Le 20/01/2009, à 20:02)

#20 Le 20/01/2009, à 20:04

philarmonie

Re : Sudo et la sécurité?

iuchiban a écrit :

Heureusement que par défaut, l'utilisateur courant n'a pas les droits administrateur comme sur un certain autre OS (un troll est caché dans cette affirmation, saurez vous le trouver?? big_smile (mais en même temps, c'est vrai)) donc ca limite les possibilité d'actions des fichiers malveillants.

En même temps, si on sait un peu ce qu'ont fait on peut toujours se faire un compte admin et un compte utilisateur sous windows. Le soucis c'est que les windowsiens ne sont pas éduqués à ce genre de précaution tongue

#21 Le 20/01/2009, à 20:11

Mathieu147

Re : Sudo et la sécurité?

hello_world a écrit :

Hello,

J'ai fait un scripte perl... mon dieu que c'était compliqué :

#!/usr/bin/perl
$i = 0;
while ($i == 0)
{
	system ("sleep 10");
	system ("sudo rmdir /toto")
}

Si je lance ce script en tant qu'utilisateur normal, et que je lance une mise à jour, le dossier /toto précédemment créer dans un répertoire ou seul root à le droit en écriture,  est supprimer. Bien sur, à la place de faire une action inoffensive, je peux faire plein d'autre truc méchant...

Explique un peu parce que chez moi ça marche pas, le répertoire que j'ai créé avec des droits root reste bien là...


Pffff…

Hors ligne

#22 Le 20/01/2009, à 20:23

hello_world

Re : Sudo et la sécurité?

Hello,

Tout est dit... Peut-être que la différence vient d'une différence de configuration. Tu as bien rentré ton mot de passe dans une appli graphique après avoir lancer le script? Ton fichier est bien exécutable? J'ai réessayé plusieurs fois de créer le répertoire et à chaque fois il se supprimait. 

++

Edit: je viens de refaire le teste en faisant bien attention et ça semble vraiment fonctionné.

Dernière modification par hello_world (Le 20/01/2009, à 20:32)

Hors ligne

#23 Le 20/01/2009, à 20:24

philarmonie

Re : Sudo et la sécurité?

Je viens de faire le test et ça marche aussi chez moi
Tu mets son script dans un fichier virus.pl, tu lui donnes les droits d'exécution et tu le lances via nautilus.
Ensuite tu lances une application graphique avec des droits root et là ton répertoire est effacé.

Dernière modification par philarmonie (Le 20/01/2009, à 20:25)

#24 Le 20/01/2009, à 20:25

Rubyman

Re : Sudo et la sécurité?

Comme je l'ai précisé, cela ne fonctionne que si le script est lancé manuellement et graphiquement, en double-cliquant dessus (d'abord cocher "autoriser l'exécution comme un programme" dans les propriétés), puis en choisissant "lancer" (peut-être pas "lancer dans un terminal", pas testé), et si l'utilisateur lance graphiquement également une application demandant un mot de passe (depuis le menu Système ou en lançant une mise à jour).

Apparemment, gksudo se comporte comme si les applications lancées graphiquement étaient toutes exécutées dans le même terminal... Ca à l'avantage de ne pas avoir à retaper le mot de passe à chaque fois, mais le fait que çà s'applique également aux programmes téléchargés puis lancés en double-cliquant dessus est problématique.

J'ai effectué le rapport de bug, pas la peine d'en faire un deuxième, c'est normal si vous ne le trouvez pas, je crois que les failles de sécurité ne sont visibles qu'une fois corrigées.

PS : plutôt que de créer un répertoire root puis essayer de le supprimer, essaie simplement de faire un "sudo touch /proof_of_concept" pour voir si un nouveau fichier apparait à la racine du système de fichiers ("/").

Dernière modification par Rubyman (Le 20/01/2009, à 20:26)

Hors ligne

#25 Le 20/01/2009, à 20:34

philarmonie

Re : Sudo et la sécurité?

Ok pour le rapport, espérons qu'ils corrigent ça vite hmm

Même si on choisit 'lancer dans un terminal' il profite des privilèges root donnés par l'application graphique.

Edit: j'ai signalé le sujet pour qu'il soit supprimé.

Dernière modification par philarmonie (Le 20/01/2009, à 20:39)