setuid script shell

Le
Thomas
bonjour :-)


apparemment, sous mac os x, ça n'a pas d'effet de mettre un setuid sur
un script shell
et donc d'après ce qu'on m'a dit, c'est obligatoire de prgmer un
exécutable (par ex en c)

est ce qu'il existe des exécutables prévus à cet effet, pour lancer une
autre commande et pas n'importe lesquelles ?
ou bien il faut que je me paye cette programmation ?

--
j'agis contre l'assistanat, je travaille dans une SCOP !
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 4
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Saïd
Le #2926601
Thomas :
bonjour :-)


apparemment, sous mac os x, ça n'a pas d'effet de mettre un setuid sur
un script shell
et donc d'après ce qu'on m'a dit, c'est obligatoire de prgmer un
exécutable (par ex en c)

est ce qu'il existe des exécutables prévus à cet effet, pour lancer une
autre commande et pas n'importe lesquelles ?


sudo est fait pour ça, mais j'imagine que tu connais et que ça ne convient
pas à tes besoins. (on peut configurer sudo pour qu'il n'accepte que
quelques commandes)

ou bien il faut que je me paye cette programmation ?



Si tu sais progrmmer en C:

man 3 exec
Ca se programme en 5 minutes.

--
Sind zu sein und es seiend in einem Schiff. Fällt zu sein hat das Wasser.
Wer bleibt er? -- Heidegger

Olivier Croquette
Le #2926461
Thomas wrote, On 24/11/07 13:06:
bonjour :-)


Salut!

apparemment, sous mac os x, ça n'a pas d'effet de mettre un setuid sur
un script shell


Il y a des OS où ce n'est pas le cas?

et donc d'après ce qu'on m'a dit, c'est obligatoire de prgmer un
exécutable (par ex en c)


On peut aussi lancer le script en passant par sudo.

blanc
Le #2926411
Thomas
apparemment, sous mac os x, ça n'a pas d'effet de mettre un setuid sur
un script shell


Normal. Ça serait beaucoup trop dangereux. Facile en effet de repérer
dans un script quelles commandes sont lancées, et de se débrouiller pour
que d'autres soient lancées à la place.

Et amha tu tombes dans le même trou de sécurité si tu lances le script
avec un programme C qui aurait lui le setuid. :-/

--
JiPaul.
/ /--/--//\ Jean-Paul Blanc
|/| L |\ quelquepart en (somewhere in)
/|| = |||\ FRANCE

Vincent Lefevre
Le #3161111
Dans l'article Olivier Croquette
Thomas wrote, On 24/11/07 13:06:
apparemment, sous mac os x, ça n'a pas d'effet de mettre un setuid sur
un script shell


Il y a des OS où ce n'est pas le cas?


Linux, et Solaris (sauf si ça a changé). Ces deux systèmes sont
protégés contre les attaques classiques par lien symbolique. Mais
peut-être que ce n'est pas le cas de Mac OS X.

et donc d'après ce qu'on m'a dit, c'est obligatoire de prgmer un
exécutable (par ex en c)


On peut aussi lancer le script en passant par sudo.


sudo est destiné à root, alors qu'un utilisateur lambda peut avoir un
programme setuid.

--
Vincent Lefèvre 100% accessible validated (X)HTML - Blog: Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)


Vincent Lefevre
Le #3161101
Dans l'article JiPaul
Thomas
apparemment, sous mac os x, ça n'a pas d'effet de mettre un setuid sur
un script shell


Normal. Ça serait beaucoup trop dangereux. Facile en effet de repérer
dans un script quelles commandes sont lancées, et de se débrouiller pour
que d'autres soient lancées à la place.


Ce n'est pas une bonne raison. Cela interdit aussi les script Perl
setuid, alors que c'est bien moins dangereux qu'un programme écrit
en C (avec des risques de buffer overflow, pas de taint, etc.).

--
Vincent Lefèvre 100% accessible validated (X)HTML - Blog: Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)


Patrick Stadelmann
Le #3161091
In article Vincent Lefevre
sudo est destiné à root, alors qu'un utilisateur lambda peut avoir un
programme setuid.


Non, root c'est juste le défaut, mais le paramètre "-u" permet de
spécifier un autre utilisateur.

Patrick
--
Patrick Stadelmann
Vincent Lefevre
Le #3161021
Dans l'article Patrick Stadelmann
In article Vincent Lefevre
sudo est destiné à root, alors qu'un utilisateur lambda peut avoir un
programme setuid.


Non, root c'est juste le défaut, mais le paramètre "-u" permet de
spécifier un autre utilisateur.


D'accord, mais l'utilisateur lambda ne peut pas modifier le sudoers
pour autant.

--
Vincent Lefèvre 100% accessible validated (X)HTML - Blog: Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)


Paul Gaborit
Le #3161001
À (at) Mon, 26 Nov 2007 15:53:36 +0000 (UTC),
Vincent Lefevre
D'accord, mais l'utilisateur lambda ne peut pas modifier le sudoers
pour autant.


Il suffit de l'ajouter une bonne fois pour toutes comme utilisateur
autorisé de 'visudo' !

;-)

--
Paul Gaborit -
Olivier Croquette
Le #3160921
Vincent Lefevre wrote, On 26/11/07 12:39:
Linux, et Solaris (sauf si ça a changé).


Je sais pas quand tu as essayé, mais cela fait plusieurs années que
Linux n'honore pas le setuid sur les scripts par défaut.
http://www.google.de/search?q=linux+setuid+scripts

Une info intéressante:

http://www.linux.com/base/ldp/howto/Secure-Programs-HOWTO/processes.html

Different Unix-like systems handle the security issue for setuid scripts
in different ways. Some systems, such as Linux, completely ignore the
setuid and setgid bits when executing scripts, which is clearly a safe
approach. Most modern releases of SysVr4 and BSD 4.4 use a different
approach to avoid the kernel race condition. On these systems, when the
kernel passes the name of the set-id script to open to the interpreter,
rather than using a pathname (which would permit the race condition) it
instead passes the filename /dev/fd/3. This is a special file already
opened on the script, so that there can be no race condition for
attackers to exploit. Even on these systems I recommend against using
the setuid/setgid shell scripts language for secure programs, as
discussed below.

Vincent Lefevre
Le #2928251
Dans l'article Olivier Croquette
Vincent Lefevre wrote, On 26/11/07 12:39:
Linux, et Solaris (sauf si ça a changé).


Je sais pas quand tu as essayé, mais cela fait plusieurs années que
Linux n'honore pas le setuid sur les scripts par défaut.
http://www.google.de/search?q=linux+setuid+scripts


Ben sous Linux, je le fais tous les jours sans aucun problème:

ay:~> ll =rpnews
-rwsr-sr-x 1 news news 5535 2006-03-10 13:25:34 /usr/local/bin/rpnews*
ay:~> file =rpnews
/usr/local/bin/rpnews: setuid setgid perl script text executable

C'est mon script qui permet de poster et récupérer les news (entre
inn2 et le serveur de mon FAI). Le fait que tu puisses voir cet
article est une preuve que ça fonctionne. :)

C'est sous Solaris que je n'ai pas essayé depuis plusieurs années.

Une info intéressante:

http://www.linux.com/base/ldp/howto/Secure-Programs-HOWTO/processes.html

Different Unix-like systems handle the security issue for setuid
scripts in different ways. Some systems, such as Linux, completely
ignore the setuid and setgid bits when executing scripts,


Je peux voir ici que c'est faux. Mais c'est peut-être le shell lui-même
qui empêche de voir le bit setuid à cause de la différence UID/EUID. En
Perl, ça ne fonctionne pas jusqu'à ce qu'on fait un:

$< = $>; # set real to effective uid

which is clearly a safe approach. Most modern releases of SysVr4 and
BSD 4.4 use a different approach to avoid the kernel race condition.
On these systems, when the kernel passes the name of the set-id
script to open to the interpreter, rather than using a pathname
(which would permit the race condition) it instead passes the
filename /dev/fd/3.


C'est effectivement ce que fait Solaris. Je suppose que Linux fait
pareil.

This is a special file already opened on the script, so that there
can be no race condition for attackers to exploit. Even on these
systems I recommend against using the setuid/setgid shell scripts
language for secure programs, as discussed below.


OK, c'est vrai pour les scripts shell, mais les scripts Perl setuid
offrent une meilleure sécurité que les programmes écrits en C (à
condition de connaître le langage et de ne pas faire n'importe quoi,
évidemment).

--
Vincent Lefèvre 100% accessible validated (X)HTML - Blog: Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)


Publicité
Poster une réponse
Anonyme