【さーばーさいどてんぷれーといんじぇくしょん】
サーバーサイドテンプレートインジェクション(SSTI) とは?
最終更新:
💡 穴埋めの答えが「雛形の命令」に化ける
外部入力が単なるデータではなくテンプレートの命令としてサーバー上で評価され、意図しない処理を起こす攻撃。被害の範囲はテンプレートエンジンの機能や権限、設定に左右される。
📌 このページのポイント
ペンギン先生、SSTIってどこに入り込む攻撃なの?
名前を表示するだけでも起きるの?
49が出たら、サーバーを全部乗っ取られたってことなの?
もっと詳しく知りたい人へ
利用者が雛形を編集する機能には、サンドボックスを使えば十分?
サンドボックスだけで完全に安全にはなりません。Jinjaの公式資料は、参照できる属性や呼び出せる機能の制限に加え、CPU・メモリなどの資源制限と例外処理を求めています。雛形へ渡すデータも必要なものに絞り、副作用のあるメソッドを持つオブジェクトや不要な機密情報を渡さない設計が必要です。
まとめ:ざっくりこれだけ覚えればOK!
「SSTI」って出てきたら「入力がサーバー上で雛形の命令として動いてしまう攻撃」と思えばだいたいOK!
📖 おまけ:英語の意味
「Server-Side Template Injection」 = サーバー側のテンプレートへの注入
💬 templateは「雛形」、injectionは「注入」で、サーバーが読む雛形に意図しない命令を混ぜるという意味だよ。