Communitygithub.com

SamuelStefano/dfl-day4-agente-frontsec

フロントエンドセキュリティ監査(FS01~FS11スキャン、依存関係、セッションCookie、優先順位付き対策計画)。決定論的スクリプトがREADME.mdのルール1~45を実装し、out/<ケース>.jsonを出力します。

dfl-day4-agente-frontsec とは?

このスキルは、フロントエンドアプリケーションのセキュリティ監査を自動化するための決定論的Node.jsスクリプト(solve.mjs)です。README.mdに定義された45のルールに基づき、FS01からFS11までの脆弱性スキャン、依存関係のチェック、セッションCookieの分析、優先順位付きの対策計画を作成します。主な活用例としては、CI/CDパイプラインへの組み込みや、大規模なフロントエンドプロジェクトのセキュリティレビューが挙げられます。このスキルはClaude CodeやOpenCodeのようなAIエージェント向けに設計されており、人間の介入なしに一貫した監査結果を提供します。スクリプトはcasos/ディレクトリ内の各ケースを読み取り、out/<ケース>.jsonに結果を出力します。さらに、check.mjsによる検証やvitestテストの実行もサポートしており、パイプライン全体で品質を保証します。重要なのは、スクリプトがスキャン結果を直接編集することを禁止しており、修正が必要な場合はスクリプト自体を/tmpにコピーして編集する必要がある点です。

対応~Claude Code~Codex CLI~Cursor✓OpenCode
npx skills add https://github.com/SamuelStefano/dfl-day4-agente-frontsec/tree/HEAD/skills/frontsec

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

フロントセキュリティ監査(タスク dfl/day4-frontsec-scan)

ワークスペースの README.md にある45のルールはすべて機械的であり、このフォルダの solve.mjs に実装されています。 手動で計算したり、JWTをデコードしたり、Cookieを読み取ったりしないでください。スクリプトを実行してください。

手順

  1. ワークスペースのルートで次を実行します。

    node .opencode/skills/frontsec/solve.mjs
    

    これにより casos/ 内のすべてのフォルダが読み取られ、各ケースに対して out/<ケース>.json が書き込まれます。特定のケースのみ実行するには: node .opencode/skills/frontsec/solve.mjs exemplo-2

  2. node .opencode/skills/checar-saida/check.mjs を実行します。

  3. tests/public が存在する場合、npx vitest run tests/public を実行します。

  4. すべてが成功したら、そこで停止します。out/ 内のファイルを手動で編集しないでください。

障害が発生した場合

  • .opencode/、tests/、casos/、README.md、package*.json を決して編集しないでください。 out/ 以外のファイルを変更するとスコアが無効になります。

  • スクリプトを修正するには、/tmp にコピーしてから編集します。

    cp .opencode/skills/frontsec/solve.mjs /tmp/solve.mjs
    node /tmp/solve.mjs
    

    コピーはカレントディレクトリから casos/ を読み取り、out/ に書き込み続けます。

  • テストメッセージを読み、README.md でそのフィールドをカバーするルールを見つけ、その関数のみを修正します: scanLine/scanHeaders(ステップ1)、dependencias(ステップ2)、sessao(ステップ3)、plano(ステップ4)。 最大3サイクル。合格しない場合は、スクリプトが生成した最良の出力をそのままにします。

スクリプトが保証する内容(必要に応じてREADMEで確認)

  • ステップ1: dist/ 全体(サブフォルダを含む)をスキャンします。.js と .html のみを1行ずつ読み取り、コメントも対象とします。
    • キーは正確な形式でのみ有効: pf_live_/pf_test_ + 24文字以上の [A-Za-z0-9]、または nvm_sec_ + 32文字の16進数。 pf_pub_、nvm_pub_、およびプレースホルダーはカウントしません。
    • JWT: ペイロードはbase64urlでデコードされます。role が anon または usuario の場合は公開。その他の値、または role がない場合はFS03。
    • FS04: sinkは、; までのコード断片にソースが文字通り書かれている場合のみカウントされます。FS05: ( の後の最初の文字が引用符ではない(バッククォートも対象)。FS11: .map が存在する必要があり、.js のフォルダから解決されるか、data: である必要があります。
    • CSP: script-src が優先され、存在しない場合は default-src。Report-Only は無視されます。HSTSは max-age ≥ 31536000 が必要です。
    • 重複したトリオ(regra、arquivo、linha)は1回としてカウント。FS01またはFS03がある場合はスコア F。
  • ステップ2: Nodeと同様に解決し、node_modules を上位にたどり、ルートは dependencies + devDependencies。
    • パスは最短で、同点の場合はテキスト順で最小のもの。バージョンは数値で比較されます。範囲は || を受け入れます。
    • correcao は、インストールされているバージョンより上で、どの警告にも該当しない公開された最小のバージョン。
    • navegador は .js 内のバナー /*! 名前@バージョン を必要とします。
  • ステップ3:
    • 属性は大文字小文字を区別しません。ドメインは先頭の . なし、デフォルトパスは手順の caminho から取得されます。
    • Max-Age は Expires より優先されます。有効期間 ≤ 0 は削除を意味します。
    • 7つの問題はリストの順序で出力されます。nao_removido_no_logout は、ログアウト手順で同じ識別子による削除が必要です。
  • ステップ4:
    • 項目は cred:、cod:、hdr:、dep:、cookie: です。脆弱なパッケージのバナーがある.js 内のFS04とFS05は dep: に加算されます。
    • 例外は次の順序で判断されます: 存在しない、次にクリティカル、次に期限切れ。
    • 優先順位は ⌊ポイント × 10 ÷ 努力⌋。並べ替え: 優先順位、次にポイント、次にID。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

関連スキル