コードインジェクション
コードインジェクション とは何ですか?
コードインジェクション攻撃者が与えたデータがアプリケーションによってコードとして解釈・実行される脆弱性の総称。任意コード実行に直結する。
コードインジェクションは、信頼できない入力が、後段でプログラムコード・設定・マークアップとして解釈される箇所に組み込まれ、ランタイムにより実行されてしまう脆弱性の総称です。具体例として、JavaScript や Python の eval を利用した注入、サーバサイドテンプレート注入、式言語(OGNL、SpEL)の注入、ガジェットチェーンを誘発する安全でないデシリアライズ、ユーザデータに基づく動的クラスロードなどがあります。攻撃が成功すると、アプリケーションの権限でリモートコード実行となり、ホストやクラスタ全体への侵入につながることが多い深刻な問題です。対策には、入力からコードを組み立てないこと、パラメータ化された API の利用、動的機能の制限、最小権限とサンドボックス化が含まれます。
● 例
- 01
eval(request.body.expr) によって Node サービスで攻撃者制御の JavaScript が実行される。
- 02
Java アプリがユーザ提供のスクリプトに対し ScriptEngine.eval を呼ぶ。
● よくある質問
コードインジェクション とは何ですか?
攻撃者が与えたデータがアプリケーションによってコードとして解釈・実行される脆弱性の総称。任意コード実行に直結する。 サイバーセキュリティの 攻撃と脅威 カテゴリに属します。
コードインジェクション とはどういう意味ですか?
攻撃者が与えたデータがアプリケーションによってコードとして解釈・実行される脆弱性の総称。任意コード実行に直結する。
コードインジェクション はどのように機能しますか?
コードインジェクションは、信頼できない入力が、後段でプログラムコード・設定・マークアップとして解釈される箇所に組み込まれ、ランタイムにより実行されてしまう脆弱性の総称です。具体例として、JavaScript や Python の eval を利用した注入、サーバサイドテンプレート注入、式言語(OGNL、SpEL)の注入、ガジェットチェーンを誘発する安全でないデシリアライズ、ユーザデータに基づく動的クラスロードなどがあります。攻撃が成功すると、アプリケーションの権限でリモートコード実行となり、ホストやクラスタ全体への侵入につながることが多い深刻な問題です。対策には、入力からコードを組み立てないこと、パラメータ化された API の利用、動的機能の制限、最小権限とサンドボックス化が含まれます。
コードインジェクション からどのように防御しますか?
コードインジェクション に対する防御は通常、上記の定義で述べたとおり、技術的統制と運用上の実践を組み合わせます。
コードインジェクション の別名は何ですか?
一般的な別名: リモートコード実行, 任意コード実行。
● 関連用語
- attacks№ 392
eval インジェクション
JavaScript の eval() や Python の eval/exec などの動的評価プリミティブに、信頼できない入力を渡すことで起こる具体的なコード注入。
- attacks№ 202
コマンドインジェクション
ユーザー入力をサニタイズせずに OS シェルへ渡し、攻撃者が指定したコマンドをアプリケーションに実行させる攻撃。
- attacks№ 1084
SQL インジェクション
攻撃者が制御する SQL をデータベースクエリに混入させ、データの読み取り・改ざん・破壊を可能にするコードインジェクション攻撃。
- attacks№ 1009
サーバーサイドテンプレートインジェクション
テンプレートエンジンの構文を不信頼な入力に注入し、テンプレートの描画時にサーバー上でコード実行を引き起こす攻撃。
- vulnerabilities№ 539
安全でないデシリアライゼーション
アプリが信頼できないデータをデシリアライズすることで、攻撃者が任意オブジェクトを生成し、しばしばリモートコード実行に至る脆弱性。
● 関連項目
- № 808PDF エクスプロイト