In article <4c6d339c$0$7867$,
Éric Lévénez wrote:Le 19/08/10 15:10, Marc Espie a écrit :Le trou de securite que je connais, c'est une race condition, ou tu peux
faire un lien symbolique sur un script a bit s connu, et changer au bon
moment ce lien par le "vrai" script. Sur un unix classique, si tu lances
foo, ca va se transformer en "/bin/sh foo", donc exploitable.
Effectivement. J'ai tellement vus de systèmes avec des shells avec bits
s (sur SYSV, SunOS, 4.3BSD...) mais aussi avec bit w permettant de
modifier à sa guise ces scripts. Mais même avec le bit r, voir le code
en clair du script permet souvent de trouver comment simplement
l'appeler pour hacker une commande non attendue. Trop facile à tromper
ce bit s.
Security through obscurity...Sur un unix recent,
C'est quoi un unix récent ? Tu as des exemples ?
OpenBSD
Un "unix récent" oblige-t-il les utilisateurs à bien coder leurs scripts
? :-)
Rien de particulier aux scripts, hein.
Je ne crois pas aux systemes "verrouilles", ou tu ne peux rien voir, pas
rajouter de programmes. Ou aux gens qui "securisent" leur systeme en
enlevant le compilateur C. Ca me fait toujours rire.
foo est ouvert, puis verifie cote droits, et ca devient
/bin/sh /dev/fd/0, donc plus de race condition...
apres, le fait que ton interpreteur soit plus ou moins sur, c'est une autre
paire de manches, mais ca evite les problemes avec les langages de script.
Pour moi le seul moyen de mieux sécuriser les scripts avec bit s est de
les interdire. :-)
Mais tout cela n'a plus rien à voir avec ce NG.
Ah ben, on peut revenir dans le sujet.
Tu es en train de dire que les langages de script devraient etre langage
"de seconde classe" pour plein de raisons qui sont toutes demontables.
- les gens peuvent ecrire de la merde avec un langage de script.
Oui, c'est vrai de tous les langages. On trouve des trous de securite
partout. Tout ce que va faire un langage donne, c'est rajouter une ou
deux checkbox pour un manager (c'est pour ca que C a mauvaise presse
"grace" aux buffer overflow par rapport a du java, alors qu'un programme
mal ecrit en java est tout aussi dangereux, voire plus qu'un programme
mal code en C). Comme il y a de bonnes pratiques pour ecrire du C correct,
il y a de bonnes pratiques pour faire du shell "sur" (qui commencent
le plus souvent par un set -x, un PATH explicite, et quelques unset sur
toutes les variables de localisation)
In article <4c6d339c$0$7867$426a34cc@news.free.fr>,
Éric Lévénez <usenet@levenez.com> wrote:
Le 19/08/10 15:10, Marc Espie a écrit :
Le trou de securite que je connais, c'est une race condition, ou tu peux
faire un lien symbolique sur un script a bit s connu, et changer au bon
moment ce lien par le "vrai" script. Sur un unix classique, si tu lances
foo, ca va se transformer en "/bin/sh foo", donc exploitable.
Effectivement. J'ai tellement vus de systèmes avec des shells avec bits
s (sur SYSV, SunOS, 4.3BSD...) mais aussi avec bit w permettant de
modifier à sa guise ces scripts. Mais même avec le bit r, voir le code
en clair du script permet souvent de trouver comment simplement
l'appeler pour hacker une commande non attendue. Trop facile à tromper
ce bit s.
Security through obscurity...
Sur un unix recent,
C'est quoi un unix récent ? Tu as des exemples ?
OpenBSD
Un "unix récent" oblige-t-il les utilisateurs à bien coder leurs scripts
? :-)
Rien de particulier aux scripts, hein.
Je ne crois pas aux systemes "verrouilles", ou tu ne peux rien voir, pas
rajouter de programmes. Ou aux gens qui "securisent" leur systeme en
enlevant le compilateur C. Ca me fait toujours rire.
foo est ouvert, puis verifie cote droits, et ca devient
/bin/sh /dev/fd/0, donc plus de race condition...
apres, le fait que ton interpreteur soit plus ou moins sur, c'est une autre
paire de manches, mais ca evite les problemes avec les langages de script.
Pour moi le seul moyen de mieux sécuriser les scripts avec bit s est de
les interdire. :-)
Mais tout cela n'a plus rien à voir avec ce NG.
Ah ben, on peut revenir dans le sujet.
Tu es en train de dire que les langages de script devraient etre langage
"de seconde classe" pour plein de raisons qui sont toutes demontables.
- les gens peuvent ecrire de la merde avec un langage de script.
Oui, c'est vrai de tous les langages. On trouve des trous de securite
partout. Tout ce que va faire un langage donne, c'est rajouter une ou
deux checkbox pour un manager (c'est pour ca que C a mauvaise presse
"grace" aux buffer overflow par rapport a du java, alors qu'un programme
mal ecrit en java est tout aussi dangereux, voire plus qu'un programme
mal code en C). Comme il y a de bonnes pratiques pour ecrire du C correct,
il y a de bonnes pratiques pour faire du shell "sur" (qui commencent
le plus souvent par un set -x, un PATH explicite, et quelques unset sur
toutes les variables de localisation)
In article <4c6d339c$0$7867$,
Éric Lévénez wrote:Le 19/08/10 15:10, Marc Espie a écrit :Le trou de securite que je connais, c'est une race condition, ou tu peux
faire un lien symbolique sur un script a bit s connu, et changer au bon
moment ce lien par le "vrai" script. Sur un unix classique, si tu lances
foo, ca va se transformer en "/bin/sh foo", donc exploitable.
Effectivement. J'ai tellement vus de systèmes avec des shells avec bits
s (sur SYSV, SunOS, 4.3BSD...) mais aussi avec bit w permettant de
modifier à sa guise ces scripts. Mais même avec le bit r, voir le code
en clair du script permet souvent de trouver comment simplement
l'appeler pour hacker une commande non attendue. Trop facile à tromper
ce bit s.
Security through obscurity...Sur un unix recent,
C'est quoi un unix récent ? Tu as des exemples ?
OpenBSD
Un "unix récent" oblige-t-il les utilisateurs à bien coder leurs scripts
? :-)
Rien de particulier aux scripts, hein.
Je ne crois pas aux systemes "verrouilles", ou tu ne peux rien voir, pas
rajouter de programmes. Ou aux gens qui "securisent" leur systeme en
enlevant le compilateur C. Ca me fait toujours rire.
foo est ouvert, puis verifie cote droits, et ca devient
/bin/sh /dev/fd/0, donc plus de race condition...
apres, le fait que ton interpreteur soit plus ou moins sur, c'est une autre
paire de manches, mais ca evite les problemes avec les langages de script.
Pour moi le seul moyen de mieux sécuriser les scripts avec bit s est de
les interdire. :-)
Mais tout cela n'a plus rien à voir avec ce NG.
Ah ben, on peut revenir dans le sujet.
Tu es en train de dire que les langages de script devraient etre langage
"de seconde classe" pour plein de raisons qui sont toutes demontables.
- les gens peuvent ecrire de la merde avec un langage de script.
Oui, c'est vrai de tous les langages. On trouve des trous de securite
partout. Tout ce que va faire un langage donne, c'est rajouter une ou
deux checkbox pour un manager (c'est pour ca que C a mauvaise presse
"grace" aux buffer overflow par rapport a du java, alors qu'un programme
mal ecrit en java est tout aussi dangereux, voire plus qu'un programme
mal code en C). Comme il y a de bonnes pratiques pour ecrire du C correct,
il y a de bonnes pratiques pour faire du shell "sur" (qui commencent
le plus souvent par un set -x, un PATH explicite, et quelques unset sur
toutes les variables de localisation)
In article<4c6d339c$0$7867$,
Éric Lévénez wrote:
Effectivement. J'ai tellement vus de systèmes avec des shells avec bits
s (sur SYSV, SunOS, 4.3BSD...) mais aussi avec bit w permettant de
modifier à sa guise ces scripts. Mais même avec le bit r, voir le code
en clair du script permet souvent de trouver comment simplement
l'appeler pour hacker une commande non attendue. Trop facile à tromper
ce bit s.
Security through obscurity...
Sur un unix recent,
C'est quoi un unix récent ? Tu as des exemples ?
OpenBSD
Un "unix récent" oblige-t-il les utilisateurs à bien coder leurs scripts
? :-)
Rien de particulier aux scripts, hein.
Tu es en train de dire que les langages de script devraient etre langage
"de seconde classe" pour plein de raisons qui sont toutes demontables.
In article<4c6d339c$0$7867$426a34cc@news.free.fr>,
Éric Lévénez<usenet@levenez.com> wrote:
Effectivement. J'ai tellement vus de systèmes avec des shells avec bits
s (sur SYSV, SunOS, 4.3BSD...) mais aussi avec bit w permettant de
modifier à sa guise ces scripts. Mais même avec le bit r, voir le code
en clair du script permet souvent de trouver comment simplement
l'appeler pour hacker une commande non attendue. Trop facile à tromper
ce bit s.
Security through obscurity...
Sur un unix recent,
C'est quoi un unix récent ? Tu as des exemples ?
OpenBSD
Un "unix récent" oblige-t-il les utilisateurs à bien coder leurs scripts
? :-)
Rien de particulier aux scripts, hein.
Tu es en train de dire que les langages de script devraient etre langage
"de seconde classe" pour plein de raisons qui sont toutes demontables.
In article<4c6d339c$0$7867$,
Éric Lévénez wrote:
Effectivement. J'ai tellement vus de systèmes avec des shells avec bits
s (sur SYSV, SunOS, 4.3BSD...) mais aussi avec bit w permettant de
modifier à sa guise ces scripts. Mais même avec le bit r, voir le code
en clair du script permet souvent de trouver comment simplement
l'appeler pour hacker une commande non attendue. Trop facile à tromper
ce bit s.
Security through obscurity...
Sur un unix recent,
C'est quoi un unix récent ? Tu as des exemples ?
OpenBSD
Un "unix récent" oblige-t-il les utilisateurs à bien coder leurs scripts
? :-)
Rien de particulier aux scripts, hein.
Tu es en train de dire que les langages de script devraient etre langage
"de seconde classe" pour plein de raisons qui sont toutes demontables.
Mais tout cela n'a plus rien à voir avec ce NG.
Mais tout cela n'a plus rien à voir avec ce NG.
Mais tout cela n'a plus rien à voir avec ce NG.
Le Thu, 19 Aug 2010 14:25:28 +0000 (UTC),
Marc Espie écrivait :OpenBSD
Euh... Le truc qui segfaulte sur un bête pthread_create() (au moins
en 4.7 i386, il paraît que c'est corrigé dans le CVS 4.8 que je susi
en train de compiler), qui n'honore pas tout un tas de choses ? Récent,
peut-être, décent, certainement pas.
Le Thu, 19 Aug 2010 14:25:28 +0000 (UTC),
Marc Espie <espie@lain.home> écrivait :
OpenBSD
Euh... Le truc qui segfaulte sur un bête pthread_create() (au moins
en 4.7 i386, il paraît que c'est corrigé dans le CVS 4.8 que je susi
en train de compiler), qui n'honore pas tout un tas de choses ? Récent,
peut-être, décent, certainement pas.
Le Thu, 19 Aug 2010 14:25:28 +0000 (UTC),
Marc Espie écrivait :OpenBSD
Euh... Le truc qui segfaulte sur un bête pthread_create() (au moins
en 4.7 i386, il paraît que c'est corrigé dans le CVS 4.8 que je susi
en train de compiler), qui n'honore pas tout un tas de choses ? Récent,
peut-être, décent, certainement pas.
Et sur cet "unix récent", tous les programmes de scripts utilisent
/dev/fd et les utilisateurs pensent que cela est vraiment suffisant ? Il
y a d'autres "unix récents" qui font cela ?
Un "unix récent" oblige-t-il les utilisateurs à bien coder leurs scripts
? :-)
Rien de particulier aux scripts, hein.
Oui, mais pour les scripts, c'est pire, bien pire.
Tu es en train de dire que les langages de script devraient etre langage
"de seconde classe" pour plein de raisons qui sont toutes demontables.
Je n'ai jamais dit cela, meêm si... :) Je parlais de bit s et de
l'utilisation des bits r et w. Mais ce problème n'est pas lié au bit s,
j'ai déjà modifié des shells de démarrage d'applis (en 0777) pour avoir
accès à root car la personne utilisant la machine n'était pas disponible
pour me donner le mot de passe root. Les scripts c'est la plaie, c'est
juste une constatation.
Et sur cet "unix récent", tous les programmes de scripts utilisent
/dev/fd et les utilisateurs pensent que cela est vraiment suffisant ? Il
y a d'autres "unix récents" qui font cela ?
Un "unix récent" oblige-t-il les utilisateurs à bien coder leurs scripts
? :-)
Rien de particulier aux scripts, hein.
Oui, mais pour les scripts, c'est pire, bien pire.
Tu es en train de dire que les langages de script devraient etre langage
"de seconde classe" pour plein de raisons qui sont toutes demontables.
Je n'ai jamais dit cela, meêm si... :) Je parlais de bit s et de
l'utilisation des bits r et w. Mais ce problème n'est pas lié au bit s,
j'ai déjà modifié des shells de démarrage d'applis (en 0777) pour avoir
accès à root car la personne utilisant la machine n'était pas disponible
pour me donner le mot de passe root. Les scripts c'est la plaie, c'est
juste une constatation.
Et sur cet "unix récent", tous les programmes de scripts utilisent
/dev/fd et les utilisateurs pensent que cela est vraiment suffisant ? Il
y a d'autres "unix récents" qui font cela ?
Un "unix récent" oblige-t-il les utilisateurs à bien coder leurs scripts
? :-)
Rien de particulier aux scripts, hein.
Oui, mais pour les scripts, c'est pire, bien pire.
Tu es en train de dire que les langages de script devraient etre langage
"de seconde classe" pour plein de raisons qui sont toutes demontables.
Je n'ai jamais dit cela, meêm si... :) Je parlais de bit s et de
l'utilisation des bits r et w. Mais ce problème n'est pas lié au bit s,
j'ai déjà modifié des shells de démarrage d'applis (en 0777) pour avoir
accès à root car la personne utilisant la machine n'était pas disponible
pour me donner le mot de passe root. Les scripts c'est la plaie, c'est
juste une constatation.
In article , JKB <invalid> wrote:Le Thu, 19 Aug 2010 14:25:28 +0000 (UTC),
Marc Espie écrivait :OpenBSD
Euh... Le truc qui segfaulte sur un bête pthread_create() (au moins
en 4.7 i386, il paraît que c'est corrigé dans le CVS 4.8 que je susi
en train de compiler), qui n'honore pas tout un tas de choses ? Récent,
peut-être, décent, certainement pas.
C'est pas parce que tu as une experience malheureuse avec un des coins
les plus crades du systeme que tout est a jeter, bien ehuerusement.
In article <slrni6qh5t.4ff.jkb@rayleigh.systella.fr>, JKB <invalid> wrote:
Le Thu, 19 Aug 2010 14:25:28 +0000 (UTC),
Marc Espie <espie@lain.home> écrivait :
OpenBSD
Euh... Le truc qui segfaulte sur un bête pthread_create() (au moins
en 4.7 i386, il paraît que c'est corrigé dans le CVS 4.8 que je susi
en train de compiler), qui n'honore pas tout un tas de choses ? Récent,
peut-être, décent, certainement pas.
C'est pas parce que tu as une experience malheureuse avec un des coins
les plus crades du systeme que tout est a jeter, bien ehuerusement.
In article , JKB <invalid> wrote:Le Thu, 19 Aug 2010 14:25:28 +0000 (UTC),
Marc Espie écrivait :OpenBSD
Euh... Le truc qui segfaulte sur un bête pthread_create() (au moins
en 4.7 i386, il paraît que c'est corrigé dans le CVS 4.8 que je susi
en train de compiler), qui n'honore pas tout un tas de choses ? Récent,
peut-être, décent, certainement pas.
C'est pas parce que tu as une experience malheureuse avec un des coins
les plus crades du systeme que tout est a jeter, bien ehuerusement.
Le Thu, 19 Aug 2010 15:22:31 +0000 (UTC),
Marc Espie écrivait :
alors que _rien_ derrière n'est codé pour les utiliser
(PTHREAD_SCOPE_SYSTEM). Soit on la positionne et on l'utilise, soit
on ne la positionne pas. Mais la positionner pour qu'à l'exécution,
ton code se plante sur une erreur, c'est absurde.
Le Thu, 19 Aug 2010 15:22:31 +0000 (UTC),
Marc Espie <espie@lain.home> écrivait :
alors que _rien_ derrière n'est codé pour les utiliser
(PTHREAD_SCOPE_SYSTEM). Soit on la positionne et on l'utilise, soit
on ne la positionne pas. Mais la positionner pour qu'à l'exécution,
ton code se plante sur une erreur, c'est absurde.
Le Thu, 19 Aug 2010 15:22:31 +0000 (UTC),
Marc Espie écrivait :
alors que _rien_ derrière n'est codé pour les utiliser
(PTHREAD_SCOPE_SYSTEM). Soit on la positionne et on l'utilise, soit
on ne la positionne pas. Mais la positionner pour qu'à l'exécution,
ton code se plante sur une erreur, c'est absurde.
In article , JKB <invalid> wrote:Le Thu, 19 Aug 2010 15:22:31 +0000 (UTC),
Marc Espie écrivait :
alors que _rien_ derrière n'est codé pour les utiliser
(PTHREAD_SCOPE_SYSTEM). Soit on la positionne et on l'utilise, soit
on ne la positionne pas. Mais la positionner pour qu'à l'exécution,
ton code se plante sur une erreur, c'est absurde.
Si tu te proposes pour maintenir pthread, tu es le bienvenu.
L'idee, c'est qu'il y a un grand nombre de limitations tres embetantes
(le fait que les fd soient TOUS non-bloquants, sous le capot, avec pthread,
les utilisations de signaux, la gestion des piles de threads en mode
utilisateur) qui font que personne chez nous ne bosse reellement dessus.
Le plan actuel, c'est vraiment de finir rthreads (une vraie implementation
de threads noyau) et de passer dessus.
In article <slrni6qjhi.4ff.jkb@rayleigh.systella.fr>, JKB <invalid> wrote:
Le Thu, 19 Aug 2010 15:22:31 +0000 (UTC),
Marc Espie <espie@lain.home> écrivait :
alors que _rien_ derrière n'est codé pour les utiliser
(PTHREAD_SCOPE_SYSTEM). Soit on la positionne et on l'utilise, soit
on ne la positionne pas. Mais la positionner pour qu'à l'exécution,
ton code se plante sur une erreur, c'est absurde.
Si tu te proposes pour maintenir pthread, tu es le bienvenu.
L'idee, c'est qu'il y a un grand nombre de limitations tres embetantes
(le fait que les fd soient TOUS non-bloquants, sous le capot, avec pthread,
les utilisations de signaux, la gestion des piles de threads en mode
utilisateur) qui font que personne chez nous ne bosse reellement dessus.
Le plan actuel, c'est vraiment de finir rthreads (une vraie implementation
de threads noyau) et de passer dessus.
In article , JKB <invalid> wrote:Le Thu, 19 Aug 2010 15:22:31 +0000 (UTC),
Marc Espie écrivait :
alors que _rien_ derrière n'est codé pour les utiliser
(PTHREAD_SCOPE_SYSTEM). Soit on la positionne et on l'utilise, soit
on ne la positionne pas. Mais la positionner pour qu'à l'exécution,
ton code se plante sur une erreur, c'est absurde.
Si tu te proposes pour maintenir pthread, tu es le bienvenu.
L'idee, c'est qu'il y a un grand nombre de limitations tres embetantes
(le fait que les fd soient TOUS non-bloquants, sous le capot, avec pthread,
les utilisations de signaux, la gestion des piles de threads en mode
utilisateur) qui font que personne chez nous ne bosse reellement dessus.
Le plan actuel, c'est vraiment de finir rthreads (une vraie implementation
de threads noyau) et de passer dessus.
Certainement, mais c'est un peu dommage. Je trouve bizarre de dire
que cet OS est particulièrement sécurisé alors que tout ce qui peut
poser problème est désactivé.
Lorsque tu joues avec les piles
alternatives, les signaux, les threads, bref, que tu utilises
POSIX.1 sans le pousser dans ses retranchements, ton code ne compile
pas ou ne fonctionne pas.
Certainement, mais c'est un peu dommage. Je trouve bizarre de dire
que cet OS est particulièrement sécurisé alors que tout ce qui peut
poser problème est désactivé.
Lorsque tu joues avec les piles
alternatives, les signaux, les threads, bref, que tu utilises
POSIX.1 sans le pousser dans ses retranchements, ton code ne compile
pas ou ne fonctionne pas.
Certainement, mais c'est un peu dommage. Je trouve bizarre de dire
que cet OS est particulièrement sécurisé alors que tout ce qui peut
poser problème est désactivé.
Lorsque tu joues avec les piles
alternatives, les signaux, les threads, bref, que tu utilises
POSIX.1 sans le pousser dans ses retranchements, ton code ne compile
pas ou ne fonctionne pas.
Vu tes talents de scripteur, c'est pas tres etonnant....
#! /bin/sh
echo "$@" >>/tmp/ncutil.log
exec /usr/sbin/ncutil.bin "$@"
a deja plus de chance de fonctionner.
Si tu es sur MacOSX, ca a des chances d'etre faisable a coups de dtrace
egalement, sans avoir a rien developper...
Vu tes talents de scripteur, c'est pas tres etonnant....
#! /bin/sh
echo "$@" >>/tmp/ncutil.log
exec /usr/sbin/ncutil.bin "$@"
a deja plus de chance de fonctionner.
Si tu es sur MacOSX, ca a des chances d'etre faisable a coups de dtrace
egalement, sans avoir a rien developper...
Vu tes talents de scripteur, c'est pas tres etonnant....
#! /bin/sh
echo "$@" >>/tmp/ncutil.log
exec /usr/sbin/ncutil.bin "$@"
a deja plus de chance de fonctionner.
Si tu es sur MacOSX, ca a des chances d'etre faisable a coups de dtrace
egalement, sans avoir a rien developper...