Agent Skills by ALSEL
汎用セキュリティ⭐ リポ 0品質スコア 65/100

apm-audit

APM パッケージの security 監査を行うスキル。`apm audit --ci` で hidden Unicode (Glassworm 攻撃) 検出と `apm-policy.yml` の denylist 違反を検査する。GitHub Actions に組み込む場合は SARIF 出力で Code Scanning 連携可能。「security チェック」「policy 違反確認」「apm audit」「CI に統合」といった依頼や、新規 PR で APM 依存追加・更新があった場面で発火する。`apm-policy.yml` の作成支援も含む。

SKILL.md 本文

概要

APM パッケージのセキュリティ検証を行うスキル。File presence IS execution (配置されたファイルが LLM に即読み込まれる) という APM の前提のもと、不可視 Unicode 攻撃検出と組織ポリシー違反検知の 2 系統をカバーする。

前提検出

  1. APM CLI 有無: apm --version
  2. apm.yml 存在: 監査対象が無いとエラー伝播。
  3. apm-policy.yml の有無: 既存ならそれに従って検査、無ければ新規作成を提案。

手順

1. ローカル audit (依存追加直後)

cd <project-root>
apm audit --ci

検査内容:

  • hidden Unicode: ゼロ幅文字 / RTL 文字 / Glassworm 系の不可視シーケンス検出
  • lockfile 整合性: apm.lock.yamlcontent_hash と実体の SHA-256 突合
  • 基本的な構造検証: フォーマット異常やマニフェスト不整合

違反検出時は exit 1 で停止。

2. Policy ベースの検査

apm-policy.yml で許可・禁止のパッケージ規則を宣言する。

例: apm-policy.yml の最小構成

policy_version: '1'
allowlist:
  hosts:
    - github.com
denylist:
  patterns:
    - '*/evil-*/**'
    - '*/test-fake-*/**'
fetch_failure_default: block

ポリシー込みで監査:

GITHUB_TOKEN=$(gh auth token) apm audit --ci --policy org --no-cache

--policy org は組織レベルのポリシーをロードするオプション。継承順は Enterprise → Org → Repo で、子側は厳しくしかできない (緩めることは不可)。

3. SARIF 出力で Code Scanning 連携 (GitHub Actions)

.github/workflows/apm-audit.yml の例:

name: APM Audit
on:
  pull_request:
  push:
    branches: [main]

jobs:
  audit:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      security-events: write
    steps:
      - uses: actions/checkout@v4

      - name: Install APM
        run: curl -sSL https://aka.ms/apm-unix | sh

      - name: Baseline checks
        run: apm audit --ci

      - name: Policy checks (SARIF)
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: apm audit --ci --policy org --no-cache -f sarif -o policy-report.sarif

      - name: Upload SARIF
        uses: github/codeql-action/upload-sarif@v3
        with:
          sarif_file: policy-report.sarif

これで PR 時に違反が GitHub の Code Scanning タブで可視化される。

4. Branch protection への組み込み

リポジトリ設定 → Rules → Rulesets で APM Audit / auditRequire status checks to pass に追加することで、policy 違反時の merge を物理的にブロックできる。

注意点

  • fetch_failure_default: デフォルトは pass (fail-open) で、policy 取得失敗時は警告のみで通過する。安全運用なら block (fail-closed) を明示的に設定する。
  • --no-cache の意味: ポリシー検査はキャッシュされた policy を使わず常に最新を取得する設定。CI では必ず付ける。
  • ローカル install 時の自動 audit: apm install 実行時にも基本的なチェック (Unicode + 構造) は走るので、CI と二重化される設計。apm audit --ci はそれを CI で再現するためのコマンド。
  • --no-policy の用途: 意図的にポリシーを無視するエスケープハッチ (例: 違反パッケージを CI 検証用に install する) だが、apm audit --ci 自体は迂回できない。Policy enforcement の観点では apm install --no-policy を使ってもダメで、CI で確実に止まる。

関連スキル

  • 追加時の自動チェック: apm-install (install 内部で基本 audit が走る)
  • 更新後の確認: apm-update (更新後に再 audit 推奨)
  • 削除整合性: apm-uninstall (削除後に lockfile 整合性を audit で確認)

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
drillan
リポジトリ
drillan/apm-skills
ライセンス
MIT
最終更新
2026/4/29

Source: https://github.com/drillan/apm-skills / ライセンス: MIT

本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: drillan · drillan/apm-skills · ライセンス: MIT