Skip to content

SEC007(セキュリティヘッダー欠落)を削除 - #57

Merged
TTMK7777 merged 1 commit into
mainfrom
chore/remove-sec007
Jul 31, 2026
Merged

SEC007(セキュリティヘッダー欠落)を削除#57
TTMK7777 merged 1 commit into
mainfrom
chore/remove-sec007

Conversation

@TTMK7777

Copy link
Copy Markdown
Owner

理由:行単位スキャナでは原理的に判定できない

セキュリティヘッダーは専用のミドルウェアモジュールに置き、アプリ生成箇所で add_middleware する構成が標準であり、ヘッダー名は定義側のファイルにしか現れない。ファイル内しか見ないスキャナでは、正しく実装しているアプリを「未設定」と誤指摘する。

実コーパス計測での実例:

指摘: ORICON-Chart-Dashboard/web/app.py
      「セキュリティヘッダーが設定されていません: X-Content-Type-Options, X-Frame-Options」

実際: web/middleware.py:99-100 で設定済み
      app.py:244 で add_middleware(SecurityHeadersMiddleware) 済み

誤検知を絞り込む方向では解決できない。必要なのはモジュール横断の解析であり、それはこのツールの設計範囲外。同種の検査が必要なら Semgrep / CodeQL を使うべき。

削除内容

  • validator.py_scan_security_headers / FASTAPI_APP_RE / REQUIRED_SECURITY_HEADERSscan_file からの呼び出し
  • configsecurity_rules.check_security_headers(既存設定に残っていても無視されるだけでエラーにはしない)
  • tests/test_security_headers.py(7テスト)
  • README / spec.md / QUICKSTART / docs/dev/architecture.md / llms.txt ×2 / plan.md / todo.md

ルール数 21 → 20、テスト 160 → 153

あわせて CHANGELOG に「不採用の記録」を追加

他リポジトリへの展開を見送った判断と理由を残した。実コーパス計測で指摘は 121 → 16件まで下がったが、残り16件を全件目視した結果、行動を要するものは 0〜2件だった。

主因は精度ではなく、対象コーパスに当該ルールが狙う脆弱性が残っていないこと。 指摘先はいずれも既に防御的に書かれていた(COVERAGE_COLUMNS による識別子固定、_ALLOWED_WORKER_COLUMNS の allowlist、SecurityHeadersMiddleware の実装)。過去の CISO 監査とレッドチームを通過済みのコードベースであり、後発のパターンスキャナに拾うものが無い。

教訓として「ルールの妥当性は自作の合成フィクスチャでは検証できない。新ルールは必ず実コードのコーパスに当てて誤検知率を数値で確認する」を明記した。

検証

  • pytest 153件パス
  • 同一コーパスで再計測し SEC007 が 0件になったことを確認。他ルールの件数は削除前と一致(SEC006 9 / SEC011 1 / SEC013 4)=削除の巻き添えがないことの確認

なお最初の再計測では出力ディレクトリを作り忘れて全ルール0件になり、危うく「削除成功」と誤読するところだった。0件は「見ていない」を疑うという、このセッションで扱ってきた話そのものだったので記録しておく。

行単位・ファイル単位のスキャナでは原理的に判定できないため、ルールごと削除する。

理由:
セキュリティヘッダーは専用のミドルウェアモジュールに置き、アプリ生成箇所で
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)
@github-actions

Copy link
Copy Markdown

Code Validation Results

  • Critical: 0
  • High: 0
  • Medium: 0
  • Low: 0
  • Info: 0

No critical issues found.

@TTMK7777
TTMK7777 merged commit ecd1d3e into main Jul 31, 2026
4 checks passed
@TTMK7777
TTMK7777 deleted the chore/remove-sec007 branch July 31, 2026 01:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant