vendredi 14 décembre 2012

Sécurité des systèmes embarqués automobiles

Dernièrement je me suis intéressé à la sécurité des systèmes embarqués sur les voitures modernes. Les années passées ont connu pas mal d'actualité concernant le hacking des voitures. On parle souvent de failles de sécurité concernant les clés RFID ou encore de la possibilité de démarrer le véhicule sans la clé en passant directement l'ordre au système embarqué.

N'importe quelle voiture moderne comprend des dizaines de calculateurs, micro contrôleurs et autres automatismes. L'industrie automobile nomme ces systèmes embarqués des ECU (Electronic Control Unit). Une voiture comprend également un réseau interne de type CAN (Controller Area Network) qui permet à tous ses composants de dialoguer entre eux. Ce réseau interne est physiquement accessible grâce à une prise OBD II (On Board Diagnostics) standardisée dans le monde entier. Par cette prise il est possible d'effectuer des vérifications, de paramétrer la voiture, de diagnostiquer une panne, de reprogrammer l'ECU principal. C'est par ce port que votre concessionnaire effectue une vérification du bon fonctionnement de votre véhicule.

Un véhicule propose également souvent un sous-système multimédia qui permet d'y lire un CD ou d'y connecter un appareil USB. Ce système multimédia est très généralement lui aussi connecté et accessible par le CAN. On peut donc théoriquement accéder à l'ECU également par ce biais.

Ajoutez à cela les diverses connectivités sans fil supportées par la voiture : bluetooth pour synchroniser un téléphone, RFID pour la clé, TMPS (Tire Pressure Monitoring System) pour la pression des pneus, 3G ou WIFI si la voiture dispose d'un accès internet.

Et l'on peut même extrapoler vers un futur proche de flottes de véhicules communicants.

La plupart du temps aucun système de protection n'a été mis en place par le constructeur. Les véhicules nécessitent des millions de lignes de codes qui ne sont absolument pas développés avec la sécurité informatique à l'esprit. Certains modèles rares possèdent l'équivalent d'un pare-feu mais il n'est présent que pour protéger la propriété intellectuelle du fabricant.

De plus les constructeurs essayent de plus en plus de se différencier en proposant un app store pour leur voitures. Par exemple Ford avec son Ford Sync ou dernièrement Peugeot avec son Peugeot Connect Apps.

L'automobile est donc un nouveau terrain de jeu pour les hackers, les passionnés de tuning ou de système multimédia, les voleurs et les fraudeurs. Comme d'habitude au fur et à mesure que le grand public va s'emparer de cette technologie nous allons voir apparaître le pire comme le meilleur. Le meilleur viendra probablement de particuliers développant leur propre mod ou firmwares personnalisés, proposant ainsi de nouvelles fonctionnalités bien au-delà de ce que le constructeur avait envisagé. Niveau pire il faut s'attendre à une recrudescence des vols high-tech de voiture, de perte de données, d'atteinte à la vie privée et de surveillance à outrance.

Les Peugeot Connect Apps sur la 208

Référence intéressante: Une étude assez exhaustive de deux université américaines Comprehensive Experimental Analyses of Automotive Attack Surfaces et sa présentation en vidéo:


samedi 8 décembre 2012

Présentation des bitcoins en français

Tant qu'on est dans le sujet des bitcoins j'en profite pour poster un lien sur l'excellente présentation de Pierre Noizat, co fondateur de Paymium, lors de l'édition 2012 de Pas Sage en Seine.





La monnaie Bitcoin officiellement reconnue par la France

Pour une fois petit billet un peu hors sujet, quoique pas tellement finalement car il s'agit de parler de l'actualité de Paymium, une start-up française qui vient de réaliser le tour de force de faire reconnaître officiellement sa plateforme d'échange de bitcoins par la régulation européenne. La plateforme en question se nomme Bitcoin-Central.net et vous pouvez en apprendre plus sur cette annonce ici.

Le sujet n'est pas si éloigné de la thématique habituelle du blog car il concerne une innovation de high-tech basée sur la cryptographie et qui pourrait révolutionner le paiement en ligne, notamment mobile. Tout ce qui touche au bitcoin est également fortement corrélé aux aspects de vie privée puisqu'ils permettent un certain anonymat des achats. Le bitcoin, monnaie infalsifiable et non diluable, basée sur des principes mathématiques et cryptographiques prouvée est censée offrir une alternative à la monnaie fiduciaire, et ceci en toute indépendance d'une autorité gouvernementale. Le fait de faire reconnaître cette technologie par l'Europe peut donc être perçu comme paradoxal, mais elle permet de démultiplier les champs d'action du bitcoin avec la possibilité d'avoir par exemple un compte bancaire en bitcoin associé à une carte de crédit et ceci garanti par l'état. Bitcoin devient donc une alternative sérieuse à une technologie comme Paypal par exemple. Cocorico donc, et félicitations à Paymium, cela fait bien plaisir d'avoir une start-up française initiatrice d'une telle révolution.


jeudi 6 décembre 2012

Suspicious Package

Petit utilitaire OSX très pratique, Suspicious Package s'installe en tant qu'extension du Finder et permet de visualiser le contenu d'un fichier .pkg directement par l'aperçu rapide. On peut ainsi vérifier l'emplacement et la liste des fichiers que va installer le package sur son système. Il n'est en effet jamais très agréable d'installer un package sans savoir ce qu'il va modifier dans son installation, d'autant plus que l'installation nécessite de saisir le mot de passe administrateur. Un package malicieux pourrait donc en profiter pour écraser un fichier système existant par exemple.
J'en profite pour rappeler quelques commandes bien pratiques pour gérer le .pkg en ligne de commande. Pour extraire le contenu d'un package faire: xar -xf package.pkg La commande précédente vous donnera plusieurs fichiers dont le plus important: Payload. Pour extraire à son tour son contenu faites cat Payload | gzip -d - | cpio -id Et vous obtiendrez l'arborescence et les fichiers qui seraient normalement installés. Installation qui peut également se réaliser en ligne de commande de cette façon: sudo installer -pkg package.pkg -target /Volumes/XXX

mercredi 5 décembre 2012

Les fondements de la sécurité sur Android

Techniquement Android est un système linux avec un noyau optimisé pour fonctionner sur de l'embarqué. A ce système linux s'ajoute une machine virtuelle Java spécialisée pour les environnements à faible ressource : la machine Dalvik. La base de la sécurité d'Android repose donc principalement sur les mêmes bases que la sécurité sous Linux plus l'encapsulation en bac à sable de chaque application Java. Plus précisément on a:
  • Séparation des privilèges de chaque application et des différentes sections de l'architecture système (UID et GUI différent). Contrairement aux OS de bureau, Android crée un utilisateur et un groupe par application (exceptions pour certaines applications qui partagent certaines données). Une application n'a donc pas par défaut les même droits que l'utilisateur qui l'utilise. Vrai pour Java et le code natif.
  • Applications Java fonctionnant dans un bac à sable (sandbox). Une machine virtuelle Dalvik pour chaque application, même les applications système.
  • L'application doit demander explicitement différentes permissions d'accéder à différents services et ressources. (fichier AndroidManifest.xml). Génération d'une demande d'autorisation à l'utilisateur lors de l'installation pour accéder par exemple à Internet, à la caméra, aux contacts, etc. On retrouve ici exactement le même système utilisé sur l'ancien système Symbian. Cela concerne également le code natif.
  • Nécessité de signer l'application (certificat auto signé possible). Vérification à l'installation. Impossibilité de mettre à jour une application avec un certificat différente de la version de base par exemple.
  • Protection des applications par licence LVL (là on touche plus à la lutte contre le piratage).
  • Scan et analyse automatique des applications publiées sur l'Android Market.
  • Suppression de l'Android Market des applications jugées néfastes qui seraient passées à travers les mailles des scans automatiques. Google peut même aller plus loin et supprimer à distance une application sur le téléphone des utilisateurs (là on déborde de l'aspect sécurité pour empiéter sur la vie privée de l'utilisateur).
  • Gestion des droits d'accès entre applications mais également entre sous composants (Activity, Content Provider, Service, Broadcast Receivers). Une application peut déclarer ses propres permissions que les autres applications pourront demander pour partager des données avec celle ci. Le principal moyen de communication entre processus est le Content Provider qui permet de contrôler les échanges.
  • Librairies de chiffrage permettant au développeur de stocker des données chiffrées (ex: AES) et de les transmètre de manière sécurisée (ex: TLS).
  • Android étant majoritairement open source des failles de sécurités sont plus facilement et rapidement corrigées. (Ou découvertes c'est selon ;-)
Concernant la sécurité des applications Android, il existe plusieurs livres sur le sujet qui ne sont pas tous de qualité égale. Personnellement ma préférence va pour le Application Security for The Android Platform d'O Reilly. Le livre est clairement destiné aux développeurs d'applications qui veulent protéger au maximum leurs utilisateurs. En revanche les sujets tels que les rootkits, les malwares, etc ne sont pas réellement abordés. Du moins pas sur leur fonctionnement, uniquement sur les conséquences qu'ils peuvent avoir.