Skip to content
Vol. 1 · Ed. 2026
CyberGlossary
Entry № 392

eval インジェクション

eval インジェクション とは何ですか?

eval インジェクションJavaScript の eval() や Python の eval/exec などの動的評価プリミティブに、信頼できない入力を渡すことで起こる具体的なコード注入。


eval インジェクションはコード注入の具体的なサブケースで、言語の動的評価関数(JavaScript の eval、new Function、文字列を渡す setTimeout、Python の eval/exec、Ruby の eval、PHP の同等関数、VBA の Application.Run など)が、直接または間接にユーザ入力由来のデータを引数として呼ばれてしまうケースです。これらは渡された文字列をホストプロセス内の完全なソースコードとして解釈・実行するため、悪用に成功すれば言語レベルでの完全な RCE が得られ、インポート、グローバル変数、ファイルシステム、環境変数、子プロセスへすべてアクセスできます。対策には、動的評価そのものの撤廃、JSON.parse や ast.literal_eval などの安全なパーサへの置換、数式評価が必要な場合の厳格なホワイトリスト検証、vm2 のようなランタイムサンドボックスや制限付きサブプロセスの利用があります。

  1. 01

    Python: result = eval(request.form['expr']) — ペイロード __import__('os').system('id')。

  2. 02

    Node: new Function('return ' + req.query.f)() — ペイロード process.mainModule.require('child_process').execSync('id')。

よくある質問

eval インジェクション とは何ですか?

JavaScript の eval() や Python の eval/exec などの動的評価プリミティブに、信頼できない入力を渡すことで起こる具体的なコード注入。 サイバーセキュリティの 攻撃と脅威 カテゴリに属します。

eval インジェクション とはどういう意味ですか?

JavaScript の eval() や Python の eval/exec などの動的評価プリミティブに、信頼できない入力を渡すことで起こる具体的なコード注入。

eval インジェクション はどのように機能しますか?

eval インジェクションはコード注入の具体的なサブケースで、言語の動的評価関数(JavaScript の eval、new Function、文字列を渡す setTimeout、Python の eval/exec、Ruby の eval、PHP の同等関数、VBA の Application.Run など)が、直接または間接にユーザ入力由来のデータを引数として呼ばれてしまうケースです。これらは渡された文字列をホストプロセス内の完全なソースコードとして解釈・実行するため、悪用に成功すれば言語レベルでの完全な RCE が得られ、インポート、グローバル変数、ファイルシステム、環境変数、子プロセスへすべてアクセスできます。対策には、動的評価そのものの撤廃、JSON.parse や ast.literal_eval などの安全なパーサへの置換、数式評価が必要な場合の厳格なホワイトリスト検証、vm2 のようなランタイムサンドボックスや制限付きサブプロセスの利用があります。

eval インジェクション からどのように防御しますか?

eval インジェクション に対する防御は通常、上記の定義で述べたとおり、技術的統制と運用上の実践を組み合わせます。

eval インジェクション の別名は何ですか?

一般的な別名: eval() 注入, 動的評価インジェクション。

関連用語