コードインジェクション
コードインジェクション とは何ですか?
コードインジェクション攻撃者が与えたデータがアプリケーションによってコードとして解釈・実行される脆弱性の総称。任意コード実行に直結する。
コードインジェクションは、信頼できない入力が、後段でプログラムコード・設定・マークアップとして解釈される箇所に組み込まれ、ランタイムにより実行されてしまう脆弱性の総称です。具体例として、JavaScript や Python の eval を利用した注入、サーバサイドテンプレート注入、式言語(OGNL、SpEL)の注入、ガジェットチェーンを誘発する安全でないデシリアライズ、ユーザデータに基づく動的クラスロードなどがあります。攻撃が成功すると、アプリケーションの権限でリモートコード実行となり、ホストやクラスタ全体への侵入につながることが多い深刻な問題です。対策には、入力からコードを組み立てないこと、パラメータ化された API の利用、動的機能の制限、最小権限とサンドボックス化が含まれます。
● 例
- 01
eval(request.body.expr) によって Node サービスで攻撃者制御の JavaScript が実行される。
- 02
Java アプリがユーザ提供のスクリプトに対し ScriptEngine.eval を呼ぶ。
● よくある質問
コードインジェクション とは何ですか?
攻撃者が与えたデータがアプリケーションによってコードとして解釈・実行される脆弱性の総称。任意コード実行に直結する。 サイバーセキュリティの 攻撃と脅威 カテゴリに属します。
コードインジェクション とはどういう意味ですか?
攻撃者が与えたデータがアプリケーションによってコードとして解釈・実行される脆弱性の総称。任意コード実行に直結する。
コードインジェクション からどのように防御しますか?
コードインジェクション に対する防御は通常、上記の定義で述べたとおり、技術的統制と運用上の実践を組み合わせます。
コードインジェクション の別名は何ですか?
一般的な別名: リモートコード実行, 任意コード実行。