
ETS5 パスワード回復ツールは CVE-2021-36799 の PoC です
ETS5プロジェクトのパスワードを忘れてしまい、KNXインストールの設定にアクセスできなくなりましたか? ETS5パスワードリカバリツールを使用すると、ETS5のプロジェクトストアに保存されたプロジェクトパスワードやその他の秘密情報を取得できます。これは、ETS5に重大な設計上の欠陥があり、プロジェクト情報を暗号化するためにハードコードされたパスワードとソルトを使用しているためです (CVE-2021-36799)。
暗号化の秘密をソースコードに保存することは推奨されません。ソフトウェアのリバースエンジニアリングにより取得される可能性があり、情報を平文で保存するのと大差ない保護しか提供しないためです。これはKNXインストールのセキュリティに対する脅威となる可能性があります。攻撃者がプロジェクトストアのファイルにアクセスできた場合、プロジェクトパスワードを知らなくても復号化できます。そこに含まれる情報により、KNXデバイスを盗聴、なりすまし、再設定することが可能になります。これは特に問題です。なぜならETS5は、エクスポートされたプロジェクトだけでなく、プロジェクト情報の暗号化にプロジェクトパスワードが使用されるという印象をユーザーに与えるからです。そのため、多くのユーザーやシステムインテグレーターがプロジェクトストアの機密性を確保するための追加の対策を講じていない可能性が高いです。ETS5が適切に暗号化を実装し、強力なプロジェクトパスワードが選択されていれば、たとえ攻撃者がコンピューターへのリモートアクセスを取得したとしても、より困難な課題を提供できたでしょう。
以下の機密情報が不適切に暗号化されています:
ETS5パスワードリカバリツールは、機密情報を復号化して表示することで問題を実証する概念実証です。これは協調的な脆弱性開示の一環として開発され、KNX協会の許可を得て公開されています。このツールを公開する目的は次のとおりです:
警告: このツールは、プロジェクト情報を表示する法的権限がある場合にのみ使用してください。セキュリティ対策(効果がないものであっても)を回避して、見ることが許可されていない情報にアクセスすることは、あなたの管轄区域では重罪となる可能性があります。
実行ファイルはリリースセクションからダウンロードできます。インストールは不要で、任意のディレクトリに配置できます。
あるいは、システム上で信頼できないバイナリを実行したくない場合は、CyberChef WebサイトでプロジェクトのXMLファイルから個々の属性を復号化できます。
このソフトウェアは.NET Framework 4.6以降に依存しています。Windows 10にはデフォルトで適切な.NETバージョンが含まれています。それ以前のWindowsバージョンのユーザーは、ソフトウェアを実行するために最新の.NET Frameworkバージョンをインストールする必要があります。
ユーザーインターフェースが示唆するのとは反対に、ETS5はC:\ProgramData\KNX\ETS5\ProjectStoreにあるローカルに保存されたプロジェクトファイルをプロジェクトパスワードで暗号化しません。代わりに、ハードコードされたパスワードETS5PasswordとソルトIvan Medvedevを使用して、プロジェクトのXMLファイル内の特定の属性を難読化します。ハードコードされた暗号化の秘密はベストプラクティスに反しており、CWE-798およびCWE-321で説明されています。
難読化解除のプロセスは次のとおりです:
Ivan Medvedevのバイト表現をASCIIまたはUTF-8エンコードされた文字列として取得します。ETS5Password、ソルトとしてIvan Medvedevのバイト表現を使用します。キー導出出力の最初の32バイトをキーとして使用し、続く16バイトをIVとして使用します。難読化解除の実装はDeobfuscator.csファイルにあります。パスワードとソルトは一定であるため、キーとIVを事前計算してキー導出をスキップすることも可能です。このソフトウェアの実装では、難読化解除の全手順を示すことを目的としているため、それは行われていません。ただし、キーとIVが必要な場合は、以下にリストされています。
| Hex | Base64 | |
|---|---|---|
| Key | 22BD16CDBB96B0E18E977BB3FEFADD8886E7E38A2F8A6FD9D2F2F5663AC20371 | Ir0WzbuWsOGOl3uz/vrdiIbn44ovim/Z0vL1ZjrCA3E= |
| IV | 8E977BB3FEFADD88E6AE6CBEAE3E7CAF | jpd7s/763Yjmrmy+rj58rw== |
エクスポートされたプロジェクトファイル(.knxproj)はこの設計上の欠陥の影響を受けないため、このツールを使用してそれらのプロジェクトパスワードを復元することはできません。.knxprojファイルはZIPファイルであり、その中に機密情報を含む別のZIPファイルが含まれています。後者はDeflate圧縮、ZipCrypto / PKWARE暗号化、および暗号化キーの導出にプロジェクトパスワードを使用しています。
私の論文"Security Analysis of the KNXnet/IP Secure Protocol"の準備中に、ETS5がプロジェクト情報をどのように保存するかを調査しました。ETSはKNX IP Secureデバイスが相互認証、マルチキャスト通信の機密性、およびデバイス設定のセキュリティを確保するために使用する暗号化キーとパスワードを生成および保存するため、情報を秘密に保つことが重要です。攻撃者がETSによって保存されたプロジェクト情報にアクセスできた場合、KNXインストールのセキュリティが完全に侵害されます。
このため、ETS5のプロジェクトストアが検査され、データが機密性を確保する方法で保存されているかどうかが確認されました。C:\ProgramData\KNX\ETS5\ProjectStore内のプロジェクトファイルはすべてのユーザーアカウントで読み取り可能であり、管理者権限は必要ありません。データが適切に暗号化されていない疑いを引き起こす以下の指標が見つかりました:
最後の点は、属性値を変更するアルゴリズムにプロジェクトパスワードが使用されていないことを明確に示していました。以下に例を示します。2つのプロジェクトP-02FBとP-0117のデバイス認証コードが同一の値に設定されていました。異なるプロジェクトパスワードが使用されているにもかかわらず、難読化された出力も同じです。ETS5でプロジェクトを開く際にプロジェクトパスワード以外の入力を促すものがないため、キーはどこかに保存されているか、キーを必要としない単純な難読化アルゴリズムである必要がありました。この解決策は機密性を確保するのに理想的ではなく、KNXインストールを危険にさらす可能性が高いと思われました。