セキュリティファンスコア 63 · ティア A
pytest が失敗すると API キーがそのまま出る:-l(--showlocals)は比較と関係ない変数まで表示した(実機確認)
Qiita · 執筆:supportapp3 ·
要点
- pytestは失敗したassertの比較対象をそのまま表示するため、ヘッダーのdictを比較すると「Authorization: Bearer <キー>」が失敗ログに出た
- -l(--showlocals)を付けると、比較と関係のないローカル変数まで表示される
- 記事は実機での確認結果としてこの挙動を報告している
なぜ重要か
テストの失敗ログにAPIキーなどのシークレットが含まれ、CIログや共有ログから漏えいするおそれがあるため、assertの書き方とログの扱いを見直す必要がある。
影響を受ける人
- pytestでAPIキーを含む値をassertしている開発者
- CIで失敗ログを保存・共有している開発チーム
取るべき対応
- テストのassertで認証ヘッダーなどのシークレットを直接比較しない形に見直す
- -l(--showlocals)を付けた実行で、ローカル変数にキーが含まれていないか確認する
- #pytest
- #セキュリティ
- #APIキー
- #テスト
- #ログ
先に結論 pytest は、失敗した assert の比較対象をそのまま表示します。ヘッダーの dict を比べると、Authorization: Bearer <キー> が失敗ログに出ました。 -l(--showlocals)を付けると、比較と関係ないローカル変数ま...