SEC007(セキュリティヘッダー欠落)を削除 - #57
Merged
Merged
Conversation
行単位・ファイル単位のスキャナでは原理的に判定できないため、ルールごと削除する。
理由:
セキュリティヘッダーは専用のミドルウェアモジュールに置き、アプリ生成箇所で
add_middleware する構成が標準であり、ヘッダー名は定義側のファイルにしか
現れない。実コーパス計測では、正しくミドルウェアを実装しているアプリを
「未設定」と誤って指摘した。
ORICON-Chart-Dashboard/web/app.py を指摘
-> 実際は web/middleware.py の SecurityHeadersMiddleware で設定済み
app.py:244 で add_middleware(SecurityHeadersMiddleware) 済み
誤検知を絞り込む方向では解決できず、必要なのはモジュール横断の解析。
それはこのツールの設計範囲外。同種の検査が必要な場合は Semgrep / CodeQL を使う。
削除内容:
- validator.py _scan_security_headers / FASTAPI_APP_RE /
REQUIRED_SECURITY_HEADERS と scan_file からの呼び出し
- config security_rules.check_security_headers(残っていても無視される)
- tests/test_security_headers.py(7 テスト)
- README / spec.md / QUICKSTART / docs/dev/architecture.md / llms.txt x2 /
plan.md / todo.md の記述
ルール数 21 -> 20、テスト 160 -> 153。
あわせて CHANGELOG に「他リポジトリへの展開を見送った」記録を残した。
実コーパス計測で指摘は 121 -> 16 件まで下がったが、残り 16 件を全件目視した
結果、行動を要するものは 0〜2 件だった。主因は精度ではなく、対象コーパスに
当該ルールが狙う脆弱性が残っていないこと。
検証:
- pytest 153 件パス
- 同一コーパスで再計測し SEC007 が 0 件になったことを確認。
他ルールの件数は削除前と一致 (SEC006 9 / SEC011 1 / SEC013 4)
Code Validation Results
No critical issues found. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
理由:行単位スキャナでは原理的に判定できない
セキュリティヘッダーは専用のミドルウェアモジュールに置き、アプリ生成箇所で
add_middlewareする構成が標準であり、ヘッダー名は定義側のファイルにしか現れない。ファイル内しか見ないスキャナでは、正しく実装しているアプリを「未設定」と誤指摘する。実コーパス計測での実例:
誤検知を絞り込む方向では解決できない。必要なのはモジュール横断の解析であり、それはこのツールの設計範囲外。同種の検査が必要なら Semgrep / CodeQL を使うべき。
削除内容
validator.py—_scan_security_headers/FASTAPI_APP_RE/REQUIRED_SECURITY_HEADERSとscan_fileからの呼び出しconfig—security_rules.check_security_headers(既存設定に残っていても無視されるだけでエラーにはしない)tests/test_security_headers.py(7テスト)ルール数 21 → 20、テスト 160 → 153。
あわせて CHANGELOG に「不採用の記録」を追加
他リポジトリへの展開を見送った判断と理由を残した。実コーパス計測で指摘は 121 → 16件まで下がったが、残り16件を全件目視した結果、行動を要するものは 0〜2件だった。
主因は精度ではなく、対象コーパスに当該ルールが狙う脆弱性が残っていないこと。 指摘先はいずれも既に防御的に書かれていた(
COVERAGE_COLUMNSによる識別子固定、_ALLOWED_WORKER_COLUMNSの allowlist、SecurityHeadersMiddlewareの実装)。過去の CISO 監査とレッドチームを通過済みのコードベースであり、後発のパターンスキャナに拾うものが無い。教訓として「ルールの妥当性は自作の合成フィクスチャでは検証できない。新ルールは必ず実コードのコーパスに当てて誤検知率を数値で確認する」を明記した。
検証
なお最初の再計測では出力ディレクトリを作り忘れて全ルール0件になり、危うく「削除成功」と誤読するところだった。0件は「見ていない」を疑うという、このセッションで扱ってきた話そのものだったので記録しておく。