Mac OS X 10.5, le firewall qui fait rire

l'introduction par Apple d'un nouveau firewall dans la dernière version de Mac OS X a été largement discutée un peu partout. Il s'agit d'un firewall d'applications. Son action se situe donc au niveau des applications, et non plus au niveau des connexions IP.
Logiquement, pour le commun des mortels le bénéfice est immédiat. Il est ainsi possible d'autoriser ou d'interdir telle ou telle application à recevoir des connexions de l'extérieur. C'est infiniment plus simple que de savoir quels ports TCP et/ou UDP utilise l'application et d'ajouter ces ports à une liste de ports autorisés ou interdits. Une première approche naïve montre ce firewall sous un jour tout à fait flatteur. Loué soit Apple, Luce et Henri sont en sécurité, et surtout ils comprennent enfin le fonctionnement de ce firewall !

Malheureusement tout ceci est faux. Poudre aux yeux, mensonge, marketing, appelez ça comme vous voulez. Ce firewall d'applications est intrinsèquement défectueux. D'ailleurs, la mise à jour de sécurité 10.5.1 qui corrige trois problèmes graves de ce firewall laisse encore beaucoup de place à l'insécurité.

Apple a reconnu comme (très) trompeuse la première version de l'interface de gestion du firewall. La mise à jour 10.5.1 a légèrement corrigé le tir. On reste tout de même assez loin d'une présentation honnête des choses.
Le panneau de configuration du firewall présente trois options :

  • Allow all incoming connections
  • Allow only essential services (anciennement : Block all incoming connections)
  • Set access for specific services and applications

Le premier point ne pose pas de problème. Le second point, renommé à la suite de la mise à jour de sécurité, est maintenant moins trompeur. Cette option a aussi fait les frais d'une petite modification de son fonctionnement, si bien que c'est désormais la dernière option qui est trompeuse (et donc dangereuse).
Avec l'accès "à la carte" pour les services et les applications, c'est normalement l'utilisateur qui choisi ce qui peut ou non recevoir des connexions. Pour décider qui passe et qui ne passe pas, Apple utilise une signature électronique qui permet de tatouer les applications. Ainsi, seules les applications dûment tatouées peuvent recevoir des connexions extérieures.
Si j'ai choisi la troisième option et qu'une application non signée tente d'ouvrir une connexion (un virus ou un cheval de Troie par exemple), le firewall va m'en avertir. Il va me donner le choix entre autoriser ou interdir l'application. Si je l'autorise, l'application est alors signée par le système. Toutes les applications fournies par Apple sont signées, comme par exemple Safari :

$ codesign -dvvv /Applications/Safari.app
Executable=/Applications/Safari.app/Contents/MacOS/Safari
../..
Signature size=4064
Authority=Software Signing
Authority=Apple Code Signing Certification Authority
Authority=Apple Root CA
../..

En réalité, il existe une foule d'applications qui sont autorisées de facto à traverser le firewall sans que l'utilisateur en soit averti, pour la simple raison qu'elles sont fournies par Apple.

On peut donc imaginer très facilement un cheval de Troie (ou autre malware) qui soit conçu non pas pour ouvrir des connexions lui-même, mais pour utiliser un des outils fournis par Apple, et donc signés, pour ouvrir votre firewall de l'intérieur.

Ce n'est pas de la science fiction. C'est trivial, et chacun peut s'en rendre compte assez facilement, moyennant quelques manipulations. Les gens de heise-security ont montré comment le programme nc peut être facilement utilisé à des fins de démonstrations, mais le résultat est peu spectaculaire pour le quidam. nc est néanmoins un outils puissant, et pourrait parfaitement servir d'interface de connexion au pire des malwares, mettant en danger toutes les données de votre compte utilisateur.
Ce n'est pas le seul programme qui sait parler au réseau, Mac OS X en contient de nombreux autres, dont des interprèteurs de scripts comme Perl et Ruby.

Récapitulons. J'ai configuré mon firewall pour n'autoriser que les applications que je souhaite (ainsi que celles nécessaires au fonctionnement du système) à recevoir des connexions. Par un biais ou un autre, je récupère un programme que je crois légitime, mais qui est en fait un cheval de Troie. Je le lance. Le programme n'ouvre pas de connexion, pour ne pas trahir sa présence. À la place, il utilise des outils fournis par Apple : nc, Perl... pour établir à sa place les connexions dont il a besoin. Le pirate qui est de l'autre coté de mon firewall, et qui était bloqué jusqu'à maintenant, peut rentrer et faire ce qu'il veut.

Tout le modèle de sécurité du nouveau firewall d'Apple s'effondre. Il est impossible de se baser sur une signature de confiance pour autoriser ou non des applications à ouvrir le firewall.
Bien sûr, c'était presque pareil avant, sauf qu'alors, Apple ne faisait pas croire qu'il est simple et sûr de se fier au firewall intégré. Les utilisateurs de Mac OS X 10.5 sont induits en erreur, ils sont trompés sur la sécurité réelle du système. Ce n'était pas le cas dans Mac OS X 10.4, avec la configuration port par port de ipfw dans la quelle on pouvait lire réellement ce qui était ou non autorisé.
Certains arguent que c'est mieux que rien, et que c'est plus simple pour le quidam. Je suis quant à moi persuadé que c'est trompeur, et que se croire en sécurité alors qu'on ne l'est pas, c'est probablement pire que ne pas l'être en le sachant.

Que les power-users se rassurent, ipfw est toujours là, et tout à fait utilisable en plus, ou à la place du firewall d'application.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.