
Acer Wireless Keyboard SK-9662 の脆弱な暗号化により、物理的に近接した攻撃者は、ワイヤレスキーストロークの解読と、ワイヤレスでの任意のキーストロークの注入の両方が可能になります。
I have discovered weak encryption used in the wireless protocol of the Acer Wireless Keyboard SK-9662 (FCC ID: H4IKB9662). This weak encryption allows an attacker to easily monitor and log keystrokes and also inject arbitrary keystrokes.
このキーボードはTexas Instruments CC2545チップを使用し、Nordic Semiconductorsが開発したEnhanced Shockburstプロトコルを使用してデータを送信します。ペイロードは12バイトで構成され、最初のバイトは定数値(私のテストでは0x48)のようです。2番目のバイトは修飾キーバイト(ctrl、shiftなど)、3番目と4番目のバイトはコンシューマーキーと電源制御キーです。5番目から10番目のバイトはキーコードです。11番目のバイトはチェックサムとして機能し、12番目のバイトは暗号化に使用される乱数です。
ペイロードの暗号化は、ラジオノイズからランダムバイトを生成することから始まります。ファームウェアに保存されている別のバイト(keyvalue)がAESのキーとして使用されます。キーとランダムバイトは両方とも128ビットにゼロパディングされ、CC2545のAESコプロセッサに送信されます。AESコプロセッサは、null IVを持つCBCモードで構成されています。AESコプロセッサの出力をxorkeyと呼びます。ペイロードの最初の11バイトは、xorkeyの対応するバイトとXORされます。ランダムバイトはペイロードの最後のバイトであり、受信者がペイロードを復号できるようにします。
ペイロードの復号化は暗号化と似ています。ペイロードの12番目のバイト(ランダム値)は、keyvalue(受信者が事前に知っている)とともにxorkeyの生成に使用され、暗号化されたペイロードとXORされます。
この暗号化方式は、1バイトのAESキーのみを使用しているため、簡単に回避できます。キーは256の可能な値に限定されているため、数秒以内に簡単にブルートフォースできます。このリポジトリのPythonスクリプトは、キャプチャした暗号化パケットのブルートフォース復号を示しています。
この脆弱性を悪用するには、攻撃者は2.4 GHz無線トラフィックをキャプチャする手段を持っている必要があります。これには、対象のキーボードへの物理的に近い距離が必要です。しかし、一度パケットをキャプチャすると、AESキーは数秒でブルートフォースでき、リアルタイムのキーロギングとキーストローク注入が可能になり、被害者のコンピュータにアクセスできます。人気のあるワイヤレスハッキングツールであるjackit(https://github.com/insecurityofthings/jackit)は、安価な2.4 GHz USBドングルだけで、近くのSK-9662キーボードへのスニッフィングとキーストローク注入をサポートするように拡張できます。
SK-9662キーボードは廃止された製品です。このキーボードには更新メカニズムが存在しないため、ユーザーは脆弱なキーボードの使用を中止する必要があります。Acerは新しいキーボード製品への切り替えを推奨しています。