[English]
|
JVNDB-2020-018327
|
改ざんチェックのない CBC モードで暗号化された実行ファイルにおいて任意のコードを埋め込まれる問題
|
NTT、兵庫県立大学および NEC の研究チームにより、改ざんチェックが行われずに CBC モードによって暗号化されているバイナリ実行ファイルに任意コードを埋め込まれる問題が発見されました。この問題は研究チームにより ACNS 2020 において公表されました。
詳細については、JVNTA#94494000 を参照してください。
本文書は、NTT 技術企画部門の藤田倫太朗氏、兵庫県立大学 暗号・情報セキュリティ研究グループの五十部孝典氏、NEC セキュリティ研究所の峯松一彦氏、および JPCERT/CC が共同で執筆しました。
|
|
共通鍵暗号のブロック暗号において、暗号方式によらず以下のいずれかのモードを利用しており、且つ改ざんチェック機能のないシステムやアプリケーション
|
(複数のベンダ)
|
例えば、特定のファイル暗号ソフトウェアや OpenSSL コマンドなど、改ざんチェックのないソフトにより暗号化されたファイル、またはディスク暗号ソフトウェアにより暗号化されたディスクなどが影響を受ける可能性があります。
|
攻撃コードは適切な箇所に挿入される必要があり、攻撃者は 2-10 〜 2-18 程度の確率で挿入個所を推測する必要がありますが、攻撃が成功した場合には以下のような影響があります。
- 改ざんされたことに気づかずに実行ファイルを復号して実行した場合、ファイルを実行する権限において、予期しないアプリケーションの実行や、開放したポートからの任意コマンドの待ち受けなど、任意のコードを介してあらゆる操作が実行される可能性があります
|
[アプリケーション・システムが実施できる対策]
1. 対策として、アプリケーション側で「改ざん検知機能を付ける」ことが有効です。具体的には暗号化/復号時に以下の対策を行うことで攻撃を防ぐことが可能です。
・暗号化時
暗号化時と異なる鍵 K' を用い、以下のように (C || IV) の MAC 値 T をとることで、安全な改ざん検知の値を算出できます。
T = MAC (K', C || IV)
なお、電子政府推奨の暗号リストによると MAC のアルゴリズムは CMAC と HMAC が推奨されています。
この際の、(C || IV, T) を暗号文として保持しておきます。
・復号時
復号の際には、T = MAC (K', C||IV) を再度計算して、保存してある T と一致しているか確認します。計算した T が一致している場合のみ復号を行い平文を求めます。攻撃者により C が改ざんされていると、計算した T の値と保存しているTの値が異なるため改ざんを検知でき、攻撃を防ぐことができます。攻撃者は K' を知らないため、改ざんした C' に対する正しい MAC 値 T = MAC (K', C'||IV) を計算することができません。この対策を行うことで理論的安全性が保証されます。
2. 暗号前後でメッセージの長さが同一でなければならないような制約や仕様がある場合には、XTS モードを利用することが有効策となります。
[ユーザが実施できる対策]
利用するアプリケーションが CBC モードを利用しており、改ざんチェック機能が付いていない場合でも、オプションにより暗号方式やモードを選択できる場合があります。この場合は、CBC や CFB 以外のモードを選択することが有効です。
|
|
|
|
- JVN : JVNTA#94494000
- 関連文書 : ACE in Chains: How Risky Is CBC Encryption of Binary Executable Files? | SpringerLink
- 関連文書 : Cryptology ePrint Archive: Report 2020/1159 - ACE in Chains : How Risky is CBC Encryption of Binary Executable Files ?
|
|