
Outil d'attaque OSDP (et le mot elfique pour ami)
Outil d'attaque OSDP (et le mot elfique pour ami)
OSDP prend en charge le chiffrement, mais ne l'exige pas strictement. Ainsi, votre connexion pourrait ne pas être chiffrée du tout. L'attaque n°1 consiste simplement à écouter passivement pour voir si vous pouvez lire les numéros de carte sur le fil.
Ce n'est pas parce que le contrôleur et le lecteur prennent en charge le chiffrement qu'ils sont configurés pour en exiger l'utilisation. Un attaquant peut modifier le message de réponse de capacité du lecteur (osdp_PDCAP) pour indiquer qu'il ne prend pas en charge le chiffrement. Lorsque cela se produit, certains contrôleurs continuent sans chiffrement.
OSDP possède un « mode d'installation » quasi-officiel qui s'applique à la fois aux lecteurs et aux contrôleurs. Comme son nom l'indique, il est censé être utilisé lors de la première configuration d'un lecteur. Il permet essentiellement aux lecteurs de demander au contrôleur quelle est la clé de chiffrement de base (le SCBK). Si le contrôleur est configuré pour rester en mode d'installation, un attaquant peut se présenter sur le fil et demander le SCBK.
Le code d'exemple OSDP contient souvent des clés de chiffrement codées en dur. Clairement, elles sont destinées à être des exemples, l'utilisateur devant générer ses propres clés de manière sécurisée. Cependant, cela n'est pas expliqué ni simplifié pour l'utilisateur. Et quiconque a suffisamment d'expérience en sécurité sait que ce qui est par défaut se retrouve souvent en production. Donc, en tant que vecteur d'attaque, lorsque la liaison entre le lecteur et le contrôleur est chiffrée, il vaut la peine d'énumérer quelques clés faibles courantes. Ce sont des clés AES de 128 bits, nous ne pourrons donc pas toutes les énumérer, ni même une partie significative. Mais nous pouvons cibler certains motifs courants que l'on voit lorsque quelqu'un code en dur une clé :
OSDP n'a pas de mécanisme intégré pour l'échange de clés. Cela signifie qu'un attaquant peut :
Vous trouverez un code de preuve de concept pour chacune de ces attaques dans attack_osdp.py. Consultez la commande --help pour plus de détails sur l'utilisation. Il s'agit d'un script Python destiné à être exécuté à partir d'un ordinateur portable avec des adaptateurs USB<-->RS485 comme ceux-ci. Vous voudrez donc probablement vous en procurer. Ce n'est pas obligatoirement ce modèle. Si vous avez un contrôleur que vous souhaitez tester, tant mieux. Utilisez-le. Sinon, nous avons un contrôleur OSDP intentionnellement vulnérable que vous pouvez utiliser ici : vulnserver.py. Certaines attaques dans attack_osdp.py s'attendent à être un MitM complet entre un lecteur et un contrôleur fonctionnels. Pour les tester, vous pourriez avoir besoin de trois adaptateurs USB<-->RS485, reliés entre eux avec une plaque d'essai.
Ces problèmes ne sont pas exploitables isolément mais représentent néanmoins un affaiblissement du protocole, de l'implémentation ou du système global.