Asayomu Tech
注目★★★★GitHub Advisory

RestrictedPython、引数でsandboxのガードを回避可能

30秒で把握

  • 1RestrictedPython の guard hook を positional-only 引数で上書き可能
  • 2`_getattr_` などの検証漏れで sandbox のアクセス制御を回避
  • 3修正版は次回リリース提供、更新まで該当コードを拒否

要約

RestrictedPython の guard hook が positional-only 引数で上書きされ、sandbox のアクセス制御を回避できる脆弱性が判明した。`_getattr__`、`_getitem_`、`_write_`、`_print_` は通常の引数などでは禁止されるが、`/` より前の positional-only 引数の検証が抜けていた。攻撃者はローカル変数で hook を shadow し、属性・要素アクセスや書き込み、出力処理を独自関数に置き換えられる。未修正版では PoC が `shadowed` を出力し、本来の `_getattr_` は呼び出されない。修正版は `compile_restricted` で該当コードを拒否し、次回リリースで提供される。直ちに更新できない場合は、先頭が `_` の positional-only 引数を使う関数・lambda をコンパイル前に拒否する。

あなたへの影響

RestrictedPython を組み込む日本の開発チームは、次回リリースへの更新を近日中に行い、更新まで提出コードの positional-only 引数を検査してください。

推奨:sandbox 管理オブジェクトを安全でない形で pickle 化する実装では、追加のコード実行リスクにつながり得るため、関連処理も監査が必要です。

詳細を読む → 元記事へ※ 本文は元記事をご確認ください (asayomu は要約のみ提供)

関連する記事

※ 外部記事の権利は原著作者に帰属します。著作権削除要請は copyright@asayomu.jp までご連絡ください(受領確認 24h・実処理 72h 以内)。