
Un chiffrement faible dans le clavier sans fil Acer SK-9662 permet à un attaquant à proximité physique de déchiffrer les frappes sans fil et d'injecter des frappes arbitraires sans fil.
J'ai découvert un chiffrement faible utilisé dans le protocole sans fil du clavier sans fil Acer SK-9662 (FCC ID : H4IKB9662). Ce chiffrement faible permet à un attaquant de surveiller et d'enregistrer facilement les frappes, ainsi que d'injecter des frappes arbitraires.
Le clavier utilise une puce Texas Instruments CC2545, transmettant les données via le protocole Enhanced Shockburst développé par Nordic Semiconductors. La charge utile est composée de 12 octets : le premier octet semble être une valeur constante (0x48 lors de mes tests). Le deuxième octet est l'octet de modification (ctrl, shift, etc.), les troisième et quatrième octets sont les touches de contrôle consommateur et d'alimentation. Les cinquième à dixième octets sont les codes de touches. Le onzième octet sert de somme de contrôle et le douzième octet est le nombre aléatoire utilisé pour le chiffrement.
Le chiffrement de la charge utile commence par la génération d'un octet aléatoire à partir du bruit radio. Un octet différent stocké dans le firmware (keyvalue) est utilisé comme clé pour AES. La clé et l'octet aléatoire sont tous deux complétés par des zéros sur 128 bits et envoyés au coprocesseur AES du CC2545. Le coprocesseur AES est configuré en mode CBC avec un IV nul. La sortie du coprocesseur AES sera appelée xorkey. Les onze premiers octets de la charge utile sont soumis à un XOR avec les octets correspondants de xorkey. L'octet aléatoire est le dernier octet de la charge utile afin que le récepteur puisse déchiffrer la charge utile.
Le déchiffrement de la charge utile est similaire au chiffrement. Le douzième octet de la charge utile (la valeur aléatoire) ainsi que keyvalue (connu à l'avance par le récepteur) sont utilisés pour générer xorkey, qui est ensuite soumis à un XOR avec la charge utile chiffrée.
Ce schéma de chiffrement est facilement contourné en raison de l'utilisation d'une clé AES d'un seul octet. Comme la clé est limitée à seulement 256 valeurs possibles, elle peut être facilement brute-forcée en quelques secondes. Le script Python dans ce dépôt montre le déchiffrement par force brute d'un paquet chiffré capturé.
Pour que cette vulnérabilité soit exploitée, un attaquant doit disposer d'un moyen de capturer le trafic radio 2,4 GHz. Cela nécessite une proximité physique étroite avec le clavier cible. Cependant, une fois qu'un seul paquet est capturé, la clé AES peut être brute-forcée en quelques secondes, et un enregistrement des frappes en temps réel ainsi qu'une injection de frappes sont possibles, permettant d'accéder à l'ordinateur de la victime. Un outil de piratage sans fil populaire, jackit (https://github.com/insecurityofthings/jackit), peut être étendu pour prendre en charge le sniffing et l'injection de frappes sur les claviers SK-9662 à proximité, le tout avec une clé USB 2,4 GHz bon marché.
Le clavier SK-9662 est un produit obsolète. Il n'existe pas de mécanisme de mise à jour pour ce clavier et les utilisateurs devraient cesser d'utiliser ce clavier vulnérable. Acer recommande de passer à un modèle de clavier plus récent.