コンテンツへスキップ
uencoder

Template Injection

サーバサイドテンプレートインジェクション(SSTI)は、攻撃者がテンプレート構文をレンダリングコンテキストに注入し、サーバ側のテンプレートエンジンで任意のコードを実行する攻撃である。

目的

ユーザー入力がテンプレートレンダリングに届くことで起こる SSTI とその防御を理解する。Jinja2 や Freemarker などでよく見られる脆弱性である。

メカニズム

プログラムが template.render(user_input) でユーザー入力をテンプレートとして描画すると、攻撃者は {{7*7}} や {{config}} を入力して式を実行したりオブジェクトを漏洩させたりする。防御としては、テンプレートとデータの分離、サンドボックス化、セーフレンダリングがある。

ユースケース

  • Jinja2 の SSTI 対策
  • Freemarker のセキュリティ
  • テンプレートエンジンの監査

関連ツール

References