AIニュース最前線
最新ニュースAI日報Hacker日報週報動画AIツールトレンド企業

AIニュース最前線

世界中のAI最新情報を日本語で毎時更新

最新ニュース日報トレンド企業プレミアムRSS
© 2026 ainew.jp特定商取引法に基づく表記
ニュース一覧元記事を開く
TLDR AI·2026年6月12日 09:00·約19分で読める

SkillSpector(GitHub リポジトリ)

#GitHub#開発者ツール
TL;DR

TLDR AI は開発者が公開した「SkillSpector」という GitHub リポジトリを紹介したが、具体的な機能や技術的詳細は本文抜粋からは確認できない。

AI深層分析2026年6月13日 00:06
1
低/ 5段階
深度40%
1
関連度30%
2
実用性20%
1
革新性10%
1

キーポイント

1

新リポジトリの紹介

TLDR AI が開発者によって公開された「SkillSpector」という GitHub リポジトリをニュースとして取り上げている。

2

詳細情報の欠如

提供された抜粋テキストには、ツールの具体的な機能、技術スタック、または解決する課題に関する記述が含まれていない。

影響分析・編集コメントを表示

影響分析

このニュースは特定のオープンソースプロジェクトの存在を伝えるにとどまり、現時点では業界全体への直接的な影響や技術的インパクトを評価するには情報が不十分です。

編集コメント

具体的な機能説明がないため、現時点では単なるプロジェクト名の告知に留まります。詳細な技術分析にはリポジトリ本体への直接アクセスが必要です。

AI エージェントのスキルに対するセキュリティスキャナ。 エージェントスキルのインストール前に、脆弱性、悪意のあるパターン、およびセキュリティリスクを検出します。

概要

AI エージェントスキル(Claude Code、Codex CLI、Gemini CLI などによって使用される)は、暗黙的な信頼と最小限の審査のもとで実行されます。研究によると、スキルの 26.1% に脆弱性が含まれており、5.2% が悪意のある意図を示している可能性があります。

SkillSpector は、「このスキルをインストールしても安全か?」という問いに答えるのを支援します。

ドキュメント

  • 開発ガイド — アーキテクチャ、パッケージ構成、および分析パイプラインの拡張方法について。

機能

  • マルチフォーマット入力:Git リポジトリ、URL、zip ファイル、ディレクトリ、または単一ファイルのスキャンが可能
  • 16 のカテゴリにわたる 64 の脆弱性パターン:プロンプトインジェクション(prompt injection)、データ漏洩(data exfiltration)、特権昇格(privilege escalation)、サプライチェーン攻撃(supply chain)、過度なエージェンシー(excessive agency)、出力処理(output handling)、システムプロンプトの漏洩(system prompt leakage)、メモリ汚染(memory poisoning)、ツールの誤用(tool misuse)、ルークエージェント(rogue agent)、トリガー乱用(trigger abuse)、危険なコード(AST 解析)(dangerous code (AST))、汚染追跡(taint tracking)、YARA シグネチャ(YARA signatures)、MCP の最小権限(MCP least privilege)、および MCP ツール汚染(MCP tool poisoning)
  • 2 段階分析:高速な静的解析と、オプションの LLM による意味論的評価
  • リアルタイム脆弱性情報検索:SC4 が OSV.dev にクエリを実行してリアルタイムの CVE データを取得し、自動的にオフラインフォールバックを使用します。
  • 複数の出力フォーマット:ターミナル、JSON、Markdown、および SARIF レポートに対応
  • リスクスコアリング:0〜100 のスコアに重大度ラベルと明確な推奨事項を追加

クイックスタート

インストール

まず仮想環境を作成してアクティブ化してください(すべての make ターゲットは、この仮想環境がアクティブであることを前提としています)。uv または pip を使用します。Makefile は利用可能な場合は uv を使い、そうでない場合は pip を使用します。

リポジトリをクローンする

git clone https://github.com/NVIDIA/skillspector.git

cd skillspector

仮想環境を作成してアクティブ化する

uv venv .venv && source .venv/bin/activate

または:python3 -m venv .venv && source .venv/bin/activate

本番環境での使用のためにインストールする

make install

または、開発用依存関係とともにインストールする

make install-dev

基本的な使用方法

ローカルのスキルディレクトリをスキャンする

skillspector scan ./my-skill/

単一の SKILL.md ファイルをスキャンする

skillspector scan ./SKILL.md

Git リポジトリをスキャンする

skillspector scan https://github.com/user/my-skill

zip ファイルをスキャンする

skillspector scan ./my-skill.zip

出力形式

ターミナル出力(デフォルト)- 見やすくフォーマットされたもの

skillspector scan ./my-skill/

JSON 出力 - マシン可読形式

skillspector scan ./my-skill/ --format json --output report.json

Markdown 出力 - ドキュメント用

skillspector scan ./my-skill/ --format markdown --output report.md

SARIF 出力 - CI/CD 統合および IDE ツールリング用

skillspector scan ./my-skill/ --format sarif --output report.sarif

LLM アナリシス

必ず JSON 形式で返してください。translation フィールドのみ。他のフィールド (technical_terms など) は一切追加しないこと — 余計なフィールドを書こうとして本文翻訳がトークン上限で打ち切られる事故を防ぐため:

{"translation": "まず仮想環境を作成してアクティブ化してください(すべての make ターゲットは、この仮想環境がアクティブであることを前提としています)。uv または pip を使用します。Makefile は利用可能な場合は uv を使い、そうでない場合は pip を使用します。

リポジトリをクローンする

git clone https://github.com/NVIDIA/skillspector.git

cd skillspector

仮想環境を作成してアクティブ化する

uv venv .venv && source .venv/bin/activate

または:python3 -m venv .venv && source .venv/bin/activate

本番環境での使用のためにインストールする

make install

または、開発用依存関係とともにインストールする

make install-dev

基本的な使用方法

ローカルのスキルディレクトリをスキャンする

skillspector scan ./my-skill/

単一の SKILL.md ファイルをスキャンする

skillspector scan ./SKILL.md

Git リポジトリをスキャンする

skillspector scan https://github.com/user/my-skill

zip ファイルをスキャンする

skillspector scan ./my-skill.zip

出力形式

ターミナル出力(デフォルト)- 見やすくフォーマットされたもの

skillspector scan ./my-skill/

JSON 出力 - マシン可読形式

skillspector scan ./my-skill/ --format json --output report.json

Markdown 出力 - ドキュメント用

skillspector scan ./my-skill/ --format markdown --output report.md

SARIF 出力 - CI/CD 統合および IDE ツールリング用

skillspector scan ./my-skill/ --format sarif --output report.sarif

LLM アナリシス"}

最良の結果を得るには、意味解析用に OpenAI 互換の LLM エンドポイントを設定してください。SKILLSPECTOR_PROVIDER を選択すると、各プロバイダが独自のバンドル済みデフォルトモデルを提供します。SkillSpector はまた、ローカルの OpenAI 互換サーバー(Ollama, vLLM, llama.cpp)や管理された推論ゲートウェイに対しても動作します。

プロバイダー (SKILLSPECTOR_PROVIDER)

認証情報環境変数

エンドポイント

デフォルトモデル

openai

OPENAI_API_KEY (+ 任意の OPENAI_BASE_URL)

api.openai.com (または任意の OpenAI 互換 URL)

gpt-5.4

anthropic

ANTHROPIC_API_KEY

api.anthropic.com

claude-opus-4-6

nv_build

NVIDIA_INFERENCE_KEY

build.nvidia.com

deepseek-ai/deepseek-v4-flash

標準 OpenAI の使用例

export SKILLSPECTOR_PROVIDER=openai

export OPENAI_API_KEY=sk-...

skillspector scan ./my-skill/

Anthropic の使用例

export SKILLSPECTOR_PROVIDER=anthropic

export ANTHROPIC_API_KEY=sk-ant-...

skillspector scan ./my-skill/

NVIDIA build.nvidia.com の使用例

export SKILLSPECTOR_PROVIDER=nv_build

export NVIDIA_INFERENCE_KEY=nvapi-...

skillspector scan ./my-skill/

ローカルの Ollama または任意の OpenAI 互換エンドポイントの使用例

export SKILLSPECTOR_PROVIDER=openai

export OPENAI_API_KEY=ollama

export OPENAI_BASE_URL=http://localhost:11434/v1

export SKILLSPECTOR_MODEL=llama3.1:8b

skillspector scan ./my-skill/

プロバイダーのデフォルトモデルを上書きする例

export SKILLSPECTOR_MODEL=gpt-5.2

skillspector scan ./my-skill/

LLM 解析をスキップする(高速化、静的解析のみ)

skillspector scan ./my-skill/ --no-llm

脆弱性パターン

SkillSpector は、16 のカテゴリにわたる 64 の脆弱性パターンを検出します:

プロンプトインジェクション (5 パターン)

ID

パターン

深刻度

説明

P1

指示のオーバーライド

HIGH

安全制約を無視するコマンド

P2

隠された指示

HIGH

コメントや不可視テキスト内の悪意のある指示

P3

情報漏洩コマンド

HIGH

コンテキストを外部へ送信するための指示

P4

行動操作

MEDIUM

エージェントの判断を微妙に変える指示

P5

有害コンテンツ

CRITICAL

身体的な危害を引き起こす可能性のある指示

データ漏洩 (4 パターン)

ID

パターン

深刻度

説明

E1

外部送信

MEDIUM

データを外部 URL へ送信する行為

E2

環境変数の収集

HIGH

API キーやシークレットの収集

E3

ファイルシステム列挙

MEDIUM

機密ファイルをスキャンするためにディレクトリを走査

E4

コンテキスト漏洩

HIGH

会話のコンテキストを外部へ送信する行為

権限昇格 (3 パターン)

ID

パターン

深刻度

説明

PE1

過剰な権限

LOW

明示された機能を超えたアクセス要求

PE2

Sudo/Root 実行

MEDIUM

昇格されたシステム権限の呼び出し

PE3

認証情報の取得

HIGH

SSH キー、トークン、パスワードの読み取り

サプライチェーン (6 パターン)

ID

パターン

深刻度

説明

SC1

バージョン未固定の依存関係

LOW

パッケージに対するバージョン制約がない状態

SC2

外部スクリプトの取得

HIGH

curl | bash およびリモートコード実行

SC3

難読化されたコード

HIGH

Base64/16 進符号化による実行

SC4

既知の脆弱性を持つ依存関係

HIGH

既知の CVE を持つ依存関係 (ライブ OSV.dev ルックアップ)

SC5

放棄された依存関係

中程度

セキュリティ更新が行われていないメンテナンスされていないパッケージ

SC6

タイポスクワッティング

高

人気のあるパッケージに似たパッケージ名

過度な権限(4 つのパターン)

ID

パターン

深刻度

説明

EA1

制限のないツールアクセス

高

制約なしの無制限なツールのアクセス権

EA2

自律的な意思決定

高

人間の介入を伴わない重大な影響を持つ意思決定

EA3

スコープクリープ

中程度

明示された目的を超えて拡張される機能

EA4

無制限のリソースアクセス

中程度

リソース消費に対するレート制限やクォータの欠如

出力処理(3 つのパターン)

ID

パターン

深刻度

説明

OH1

検証されない出力インジェクション

高

サニタイズなしでモデルの出力が使用される

OH2

クロスコンテキスト出力

中程度

検証なしに信頼境界を越えて出力が流れる

OH3

無制限な出力

中程度

出力サイズや生成レートに対する制限がない

システムプロンプト漏洩(3 つのパターン)

ID

パターン

深刻度

説明

P6

直接漏洩

高

システムプロンプトまたは内部ルールを露呈させる指示

P7

間接的抽出

中程度

言い換え、翻訳、またはサイドチャネルを通じた抽出

P8

ツールベースの流出

高

ファイル書き込みやネットワークリクエストを介したシステムプロンプトの流出

メモリ汚染(3 つのパターン)

ID

パターン

深刻度

説明

MP1

永続的コンテキストインジェクション

高

対話間を超えて持続するように設計されたコンテンツ

MP2

コンテキストウィンドウの埋め込み

中程度

安全性制約を押しやるためのフィラーコンテンツ

MP3

メモリ操作

高

エージェントのメモリまたは保存状態への改ざん

ツール誤用 (3 つのパターン)

ID

パターン

深刻度

説明

TM1

ツールパラメータの悪用

HIGH

意図しない動作を引き起こすための操作されたパラメータ (shell=True, --force)

TM2

チェーンの悪用

HIGH

個々の安全チェックを迂回するツールチェーン

TM3

不十分なデフォルト設定

MEDIUM

過度に寛容なデフォルト設定 (TLS 無効化、認証なし)

ログエージェント (2 つのパターン)

ID

パターン

深刻度

説明

RA1

自己改変

CRITICAL

実行時に自身のコードや設定を変更する行為

RA2

セッションの永続化

HIGH

cron ジョブや起動スクリプトを介した不正な永続化

トリガー悪用 (3 つのパターン)

ID

パターン

深刻度

説明

TR1

過度に広範なトリガー

MEDIUM

一般的な単語に一致するトリガーパターン

TR2

シャドウコマンドトリガー

HIGH

組み込みコマンドや他のスキルを覆い隠すトリガー

TR3

キーワードベイトトリガー

MEDIUM

活性化を最大化するために設計された汎用的なトリガー

行動 AST (8 つのパターン)

ID

パターン

深刻度

説明

AST1

exec() 呼び出し

CRITICAL

任意のコード実行を可能にする直接的な exec() の使用

AST2

eval() 呼び出し

HIGH

任意の式を評価する直接的な eval() の使用

AST3

動的インポート

HIGH

__import__() を用いた実行時における任意モジュールの読み込み

AST4

subprocess 呼び出し

HIGH

subprocess を介した外部コマンドの実行

AST5

os.system / exec ファミリー

HIGH

os モジュールを介したシェルコマンドの実行

AST6

compile() 呼び出し

MEDIUM

文字列からのコードオブジェクトの作成

AST7

動的 getattr() 呼び出し

MEDIUM

非リテラル名による任意の属性アクセス

AST8

危険な実行チェーン

CRITICAL

dynamic source(ネットワーク、エンコードデータ)との exec/eval の組み合わせ

汚染追跡 (5 パターン)

ID

パターン

深刻度

説明

TT1

直接汚染フロー

HIGH

データがサニタイズされずにソースからシンクへ直接流れる

TT2

変数媒介型汚染フロー

MEDIUM

データが中間変数を介してソースからシンクへ流れる

TT3

認証情報漏洩チェーン

CRITICAL

認証情報(環境変数、シークレット)がネットワーク出力シンクへ流れる

TT4

ファイル読み取りからネットワークへの漏洩

HIGH

ファイル内容がネットワーク出力シンクへ流れる

TT5

外部入力からのコード実行

CRITICAL

ネットワークまたはユーザー入力が exec/eval/subprocess シンクへ流れる

YARA シグネチャ (4 パターン)

ID

パターン

深刻度

説明

YR1

マルウェア一致

CRITICAL

既知のマルウェアシグネチャに対する YARA ルールの一致

YR2

Webshell 一致

CRITICAL

Webshell パターンに対する YARA ルールの一致

YR3

クリプトマイナー一致

HIGH

暗号通貨採掘インジケーターに対する YARA ルールの一致

YR4

ハックツール/エクスプロイト一致

HIGH

ハックツールまたはエクスプロイトコードに対する YARA ルールの一致

MCP 最小権限 (4 パターン)

ID

パターン

深刻度

説明

LP1

過小宣言された機能

HIGH

コードが宣言された権限リストに記載されていない機能を使用している

LP2

ワイルドカード権限

MEDIUM

権限リストにワイルドカード(*, all, full, any)が含まれている

LP3

権限宣言の欠落

MEDIUM

権限フィールドが存在しないが、コードには検出可能な機能がある

LP4

過大宣言された権限

LOW

権限が宣言されているが、対応するコード機能が見つからない

MCP ツール汚染(4 つのパターン)

ID

パターン

深刻度

説明

TP1

隠された指示

HIGH

メタデータ内の隠されたディレクティブ(HTML コメント、ゼロ幅文字、base64、データ URI)

TP2

Unicode による欺瞞

HIGH

ホモグリフ、RTL オーバーライド、ツールメタデータ内の混合スクリプト識別子

TP3

パラメータ説明への注入

MEDIUM

パラメータ定義内での注入パターン(オーバーライド、システムトークン、悪意のあるデフォルト値)

TP4

記述と挙動の不整合

MEDIUM

宣言されたツールの説明が実際のコードの挙動と一致しない(LLM 駆動型)

検出されたすべてのパターンは上記の表に記載されています。

リスクスコアリング

スコア計算

  • CRITICAL(重大)な問題:+50 ポイント
  • HIGH(高)な問題:+25 ポイント
  • MEDIUM(中)な問題:+10 ポイント
  • LOW(低)な問題:+5 ポイント
  • 実行可能スクリプト:1.3 倍の乗数

深刻度レベル

スコア

深刻度

推奨事項

0-20

LOW(低)

SAFE(安全)

21-50

MEDIUM(中)

CAUTION(注意)

51-80

HIGH(高)

DO NOT INSTALL(インストールしないこと)

81-100

CRITICAL(重大)

DO NOT INSTALL(インストールしないこと)

出力例

ターミナル出力

SkillSpector セキュリティレポート v2.0.0

スキル:suspicious-skill

ソース:./suspicious-skill/

スキャン日時:2026-01-29 10:30:00 UTC

リスク評価

メトリック 値

スコア 78/100

深刻度 HIGH(高)

推奨事項 DO NOT INSTALL(インストールしないこと)

コンポーネント(3 つ)

ファイル タイプ 行数 実行可能

SKILL.md markdown 142 いいえ

scripts/sync.py python 87 はい

requirements.txt text 3 いいえ

問題点(2 つ)

HIGH: Env Variable Harvesting (E2)

Location: scripts/sync.py:23

Finding: for key, val in os.environ.items():...

Confidence: 94%

Explanation: This code collects environment variables containing

API keys and secrets, then sends them to an external server.

HIGH: External Transmission (E1)

Location: scripts/sync.py:45

Finding: requests.post("https://api.skill.io/env"...

Confidence: 89%

Explanation: Data is being sent to an external server. Combined

with env harvesting above, this indicates credential exfiltration.

Configuration

Environment Variables

Variable

Description

Required

SKILLSPECTOR_PROVIDER

Active LLM provider: openai, anthropic, or nv_build. Each provider has its own bundled model_registry.yaml and default model (see the LLM Analysis table above). Defaults to nv_build.

Optional

NVIDIA_INFERENCE_KEY

Credential for the nv_build provider (build.nvidia.com).

Required for LLM analysis when SKILLSPECTOR_PROVIDER=nv_build

OPENAI_API_KEY

Credential for the OpenAI provider (SKILLSPECTOR_PROVIDER=openai). Also serves as the tier-2 fallback in the credential waterfall when the active provider returns no credentials.

Required for LLM analysis when SKILLSPECTOR_PROVIDER=openai

OPENAI_BASE_URL

Override the OpenAI endpoint (e.g. point at Ollama).

Optional

ANTHROPIC_API_KEY

Credential for the Anthropic provider (SKILLSPECTOR_PROVIDER=anthropic).

Required for LLM analysis when SKILLSPECTOR_PROVIDER=anthropic

SKILLSPECTOR_MODEL

アクティブなプロバイダーのデフォルトモデルを上書きします。各プロバイダーのデフォルトについては、LLM 分析テーブルを参照してください。

オプション

SKILLSPECTOR_MODEL_REGISTRY

バンドルされたプロバイダーごとの YAML レジストリ(src/skillspector/providers/<provider>.yaml)をカスタムパスで上書きします。

オプション

SKILLSPECTOR_LOG_LEVEL

ログレベル:DEBUG、INFO、WARNING、ERROR(デフォルト:WARNING)。

オプション

CLI オプション

skillspector scan --help

オプション:

-f, --format [terminal|json|markdown|sarif] 出力形式 [デフォルト: terminal]

-o, --output PATH 出力ファイルパス

--no-llm LLM 分析をスキップ(静的解析のみ)

-V, --verbose 詳細な進行状況を表示

--help このメッセージを表示して終了

開発環境構築

セットアップ

すべての make ターゲットは、仮想環境がすでに作成され、アクティブ化されていることを前提としています。Makefile は利用可能な場合 uv を使用し、そうでない場合は pip を使用します。

クローン、仮想環境の作成、アクティベーション、開発依存関係のインストール

git clone https://github.com/NVIDIA/skillspector.git

cd skillspector

uv venv .venv && source .venv/bin/activate

または:python3 -m venv .venv && source .venv/bin/activate

make install-dev

テストの実行

make test

カバレッジ付きでテストを実行

make test-cov

リンティングの実行

make lint

コードのフォーマット

make format

仕組み

SkillSpector は、2 つの段階からなる検出パイプラインを使用します。

ステージ 1: 静的解析

  • 11 の静的解析器にわたる高速な正規表現ベースのパターンマッチング
  • AST ベースの振る舞い解析により、危険な呼び出し(exec, eval, subprocess など)を検出
  • 依存関係内の既知の CVE に対して OSV.dev を経由したライブ脆弱性照会
  • スキル内のすべてのファイルをスキャン
  • 高い再現率(多くの問題を検出)
  • 中程度の精度(一部の偽陽性あり)

ステージ 2: LLM セマンティック解析(オプション)

  • コンテキストと意図を評価
  • 偽陽性をフィルタリング
  • 人間が読みやすい説明を提供
  • 精度を約 87% に向上

LLM プロンプトには、悪意のあるスキルによる分析操作を防ぐためのアンチ・ジャイルブレイク保護が含まれています。

ライブ脆弱性照会 (SC4)

SC4 は OSV.dev API を使用して、依存関係をオープンソース脆弱性情報データベース全体と比較します。これは PyPI と npm にわたる数万件のアドバイザリをカバーしています。

  • API キー不要 — OSV.dev は無料で認証不要です。
  • バッチクエリ — すべての依存関係が単一の HTTP 呼び出しでチェックされます。
  • 自動フォールバック — OSV.dev に到達できない場合(エアギャップ化またはオフライン)、組み込みの小型フォールバックリストが使用されます。
  • キャッシング — 結果はセッション中に重複する API 呼び出しを避けるため、1 時間インメモリでキャッシュされます。

このツールはライブ脆弱性情報のために api.osv.dev へのアウトバウンド HTTPS アクセスを必要とします。これが利用できない場合、検出結果は静的なフォールバックリストに限定されます。

制限事項

  • 非英語コンテンツ: 他の言語のパターンを見逃す可能性があります
  • イメージベースの攻撃: イメージ内のテキストを分析できません
  • 暗号化/バイナリコード: コンパイル済みまたは暗号化された内容を分析できません
  • ランタイム動作:静的解析のみ、動的実行なし
  • オフライン SC4:api.osv.dev へのネットワークアクセスがない場合、SC4 は小さな静的フォールバックリストを使用します

リサーチ背景

「Agent Skills in the Wild: An Empirical Study of Security Vulnerabilities at Scale」(Liu et al., 2026)の研究に基づいています:

  • データセット:主要マーケットプレイスからの 42,447 のスキル
  • 脆弱性あり:26.1% が少なくとも 1 つの脆弱性を含まれる
  • 高深刻度:5.2% が悪意のある意図を示す可能性が高い
  • 主な発見:実行可能スクリプトを含むスキルは、脆弱である確率が 2.12 倍高い

Python API 統合

from skillspector import graph

LangGraph ワークフローの呼び出し

result = graph.invoke({

"input_path": "/path/to/skill",

"output_format": "json", # terminal, json, markdown, または sarif

"use_llm": True, # 静的解析のみを行う場合は False

})

結果へのアクセス

print(f"Risk Score: {result['risk_score']}/100")

print(f"Severity: {result['risk_severity']}")

print(f"Recommendation: {result['risk_recommendation']}")

for finding in result["filtered_findings"]:

print(f"[{finding['severity']}] {finding['rule_id']}: {finding['message']}")

ライセンス

Apache License 2.0 - 詳細は LICENSE を参照してください。

コントリビューション

コントリビューションを歓迎します!コントリビューションガイドラインをお読みいただき、プルリクエストを送信してください。

サポート

  • イシュー:GitHub Issues
原文を表示

Security scanner for AI agent skills. Detect vulnerabilities, malicious patterns, and security risks before installing agent skills.

Overview

AI agent skills (used by Claude Code, Codex CLI, Gemini CLI, etc.) execute with implicit trust and minimal vetting. Research shows that 26.1% of skills contain vulnerabilities and 5.2% show likely malicious intent.

SkillSpector helps you answer: "Is this skill safe to install?"

Documentation

  • Development guide — Architecture, package layout, and how to extend the analyzer pipeline.

Features

  • Multi-format input: Scan Git repos, URLs, zip files, directories, or single files
  • 64 vulnerability patterns across 16 categories: prompt injection, data exfiltration, privilege escalation, supply chain, excessive agency, output handling, system prompt leakage, memory poisoning, tool misuse, rogue agent, trigger abuse, dangerous code (AST), taint tracking, YARA signatures, MCP least privilege, and MCP tool poisoning
  • Two-stage analysis: Fast static analysis + optional LLM semantic evaluation
  • Live vulnerability lookups: SC4 queries OSV.dev for real-time CVE data with automatic offline fallback
  • Multiple output formats: Terminal, JSON, Markdown, and SARIF reports
  • Risk scoring: 0-100 score with severity labels and clear recommendations

Quick Start

Installation

Create and activate a virtual environment first (all make targets assume the venv is active). Use uv or pip; the Makefile uses uv if available, otherwise pip.

code
# Clone the repository
git clone https://github.com/NVIDIA/skillspector.git
cd skillspector

# Create and activate virtual environment
uv venv .venv && source .venv/bin/activate
# or: python3 -m venv .venv && source .venv/bin/activate

# Install for production use
make install

# Or install with development dependencies
make install-dev

Basic Usage

code
# Scan a local skill directory
skillspector scan ./my-skill/

# Scan a single SKILL.md file
skillspector scan ./SKILL.md

# Scan a Git repository
skillspector scan https://github.com/user/my-skill

# Scan a zip file
skillspector scan ./my-skill.zip

Output Formats

code
# Terminal output (default) - pretty formatted
skillspector scan ./my-skill/

# JSON output - machine readable
skillspector scan ./my-skill/ --format json --output report.json

# Markdown output - for documentation
skillspector scan ./my-skill/ --format markdown --output report.md

# SARIF output - for CI/CD integration and IDE tooling
skillspector scan ./my-skill/ --format sarif --output report.sarif

LLM Analysis

For the best results, configure an OpenAI-compatible LLM endpoint for

semantic analysis. Pick a provider with SKILLSPECTOR_PROVIDER; each

ships its own bundled default model. SkillSpector also works against

local OpenAI-compatible servers (Ollama, vLLM, llama.cpp) and managed

inference gateways.

Provider (SKILLSPECTOR_PROVIDER)

Credential env var

Endpoint

Default model

openai

OPENAI_API_KEY (+ optional OPENAI_BASE_URL)

api.openai.com (or any OpenAI-compatible URL)

gpt-5.4

anthropic

ANTHROPIC_API_KEY

api.anthropic.com

claude-opus-4-6

nv_build

NVIDIA_INFERENCE_KEY

build.nvidia.com

deepseek-ai/deepseek-v4-flash

code
# Stock OpenAI
export SKILLSPECTOR_PROVIDER=openai
export OPENAI_API_KEY=sk-...
skillspector scan ./my-skill/

# Anthropic
export SKILLSPECTOR_PROVIDER=anthropic
export ANTHROPIC_API_KEY=sk-ant-...
skillspector scan ./my-skill/

# NVIDIA build.nvidia.com
export SKILLSPECTOR_PROVIDER=nv_build
export NVIDIA_INFERENCE_KEY=nvapi-...
skillspector scan ./my-skill/

# Local Ollama or any OpenAI-compatible endpoint
export SKILLSPECTOR_PROVIDER=openai
export OPENAI_API_KEY=ollama
export OPENAI_BASE_URL=http://localhost:11434/v1
export SKILLSPECTOR_MODEL=llama3.1:8b
skillspector scan ./my-skill/

# Override the provider's default model
export SKILLSPECTOR_MODEL=gpt-5.2
skillspector scan ./my-skill/

# Skip LLM analysis (faster, static analysis only)
skillspector scan ./my-skill/ --no-llm

Vulnerability Patterns

SkillSpector detects 64 vulnerability patterns across 16 categories:

Prompt Injection (5 patterns)

ID

Pattern

Severity

Description

P1

Instruction Override

HIGH

Commands to ignore safety constraints

P2

Hidden Instructions

HIGH

Malicious directives in comments/invisible text

P3

Exfiltration Commands

HIGH

Instructions to transmit context externally

P4

Behavior Manipulation

MEDIUM

Subtle instructions altering agent decisions

P5

Harmful Content

CRITICAL

Instructions that could cause physical harm

Data Exfiltration (4 patterns)

ID

Pattern

Severity

Description

E1

External Transmission

MEDIUM

Sending data to external URLs

E2

Env Variable Harvesting

HIGH

Collecting API keys and secrets

E3

File System Enumeration

MEDIUM

Scanning directories for sensitive files

E4

Context Leakage

HIGH

Transmitting conversation context externally

Privilege Escalation (3 patterns)

ID

Pattern

Severity

Description

PE1

Excessive Permissions

LOW

Requesting access beyond stated functionality

PE2

Sudo/Root Execution

MEDIUM

Invoking elevated system privileges

PE3

Credential Access

HIGH

Reading SSH keys, tokens, passwords

Supply Chain (6 patterns)

ID

Pattern

Severity

Description

SC1

Unpinned Dependencies

LOW

No version constraints on packages

SC2

External Script Fetching

HIGH

curl | bash and remote code execution

SC3

Obfuscated Code

HIGH

Base64/hex encoded execution

SC4

Known Vulnerable Dependencies

HIGH

Dependencies with known CVEs (live OSV.dev lookup)

SC5

Abandoned Dependencies

MEDIUM

Unmaintained packages without security updates

SC6

Typosquatting

HIGH

Package names similar to popular packages

Excessive Agency (4 patterns)

ID

Pattern

Severity

Description

EA1

Unrestricted Tool Access

HIGH

Unfettered tool access without constraints

EA2

Autonomous Decision Making

HIGH

High-impact decisions without human-in-the-loop

EA3

Scope Creep

MEDIUM

Capabilities extending beyond stated purpose

EA4

Unbounded Resource Access

MEDIUM

No rate limits or quotas on resource consumption

Output Handling (3 patterns)

ID

Pattern

Severity

Description

OH1

Unvalidated Output Injection

HIGH

Model output used without sanitization

OH2

Cross-Context Output

MEDIUM

Output flows across trust boundaries without validation

OH3

Unbounded Output

MEDIUM

No limits on output size or generation rate

System Prompt Leakage (3 patterns)

ID

Pattern

Severity

Description

P6

Direct Leakage

HIGH

Instructions that expose system prompts or internal rules

P7

Indirect Extraction

MEDIUM

Extraction via rephrasing, translation, or side-channels

P8

Tool-Based Exfiltration

HIGH

System prompts exfiltrated via file writes or network requests

Memory Poisoning (3 patterns)

ID

Pattern

Severity

Description

MP1

Persistent Context Injection

HIGH

Content designed to persist across interactions

MP2

Context Window Stuffing

MEDIUM

Filler content displacing safety constraints

MP3

Memory Manipulation

HIGH

Tampering with agent memory or stored state

Tool Misuse (3 patterns)

ID

Pattern

Severity

Description

TM1

Tool Parameter Abuse

HIGH

Crafted parameters for unintended behavior (shell=True, --force)

TM2

Chaining Abuse

HIGH

Tool chains that bypass individual safety checks

TM3

Unsafe Defaults

MEDIUM

Overly permissive defaults (disabled TLS, no auth)

Rogue Agent (2 patterns)

ID

Pattern

Severity

Description

RA1

Self-Modification

CRITICAL

Modifying own code or configuration at runtime

RA2

Session Persistence

HIGH

Unauthorized persistence via cron jobs or startup scripts

Trigger Abuse (3 patterns)

ID

Pattern

Severity

Description

TR1

Overly Broad Trigger

MEDIUM

Trigger patterns matching common words

TR2

Shadow Command Trigger

HIGH

Triggers that shadow built-in commands or other skills

TR3

Keyword Baiting Trigger

MEDIUM

Generic triggers designed to maximize activation

Behavioral AST (8 patterns)

ID

Pattern

Severity

Description

AST1

exec() Call

CRITICAL

Direct exec() enabling arbitrary code execution

AST2

eval() Call

HIGH

Direct eval() evaluating arbitrary expressions

AST3

Dynamic Import

HIGH

__import__() loading arbitrary modules at runtime

AST4

subprocess Call

HIGH

External command execution via subprocess

AST5

os.system / exec-family

HIGH

Shell commands via os module

AST6

compile() Call

MEDIUM

Code object creation from strings

AST7

Dynamic getattr()

MEDIUM

Arbitrary attribute access with non-literal names

AST8

Dangerous Execution Chain

CRITICAL

exec/eval combined with dynamic source (network, encoded data)

Taint Tracking (5 patterns)

ID

Pattern

Severity

Description

TT1

Direct Taint Flow

HIGH

Data flows directly from a source to a sink without sanitization

TT2

Variable-Mediated Taint Flow

MEDIUM

Data flows from source to sink through intermediate variables

TT3

Credential Exfiltration Chain

CRITICAL

Credentials (env vars, secrets) flow to network output sinks

TT4

File Read to Network Exfiltration

HIGH

File contents flow to network output sinks

TT5

External Input to Code Execution

CRITICAL

Network or user input flows to exec/eval/subprocess sinks

YARA Signatures (4 patterns)

ID

Pattern

Severity

Description

YR1

Malware Match

CRITICAL

YARA rule match for known malware signatures

YR2

Webshell Match

CRITICAL

YARA rule match for webshell patterns

YR3

Cryptominer Match

HIGH

YARA rule match for crypto mining indicators

YR4

Hack Tool / Exploit Match

HIGH

YARA rule match for hack tools or exploit code

MCP Least Privilege (4 patterns)

ID

Pattern

Severity

Description

LP1

Underdeclared Capability

HIGH

Code uses capabilities not listed in declared permissions

LP2

Wildcard Permission

MEDIUM

Permission list contains wildcards (*, all, full, any)

LP3

Missing Permission Declaration

MEDIUM

No permissions field but code has detectable capabilities

LP4

Overdeclared Permission

LOW

Permission declared but no corresponding code capability found

MCP Tool Poisoning (4 patterns)

ID

Pattern

Severity

Description

TP1

Hidden Instructions

HIGH

Hidden directives in metadata (HTML comments, zero-width chars, base64, data URIs)

TP2

Unicode Deception

HIGH

Homoglyphs, RTL overrides, mixed-script identifiers in tool metadata

TP3

Parameter Description Injection

MEDIUM

Injection patterns in parameter definitions (overrides, system tokens, malicious defaults)

TP4

Description-Behavior Mismatch

MEDIUM

Declared tool description does not match actual code behavior (LLM-powered)

All detected patterns are listed in the tables above.

Risk Scoring

Score Calculation

  • CRITICAL issues: +50 points
  • HIGH issues: +25 points
  • MEDIUM issues: +10 points
  • LOW issues: +5 points
  • Executable scripts: 1.3x multiplier

Severity Levels

Score

Severity

Recommendation

0-20

LOW

SAFE

21-50

MEDIUM

CAUTION

51-80

HIGH

DO NOT INSTALL

81-100

CRITICAL

DO NOT INSTALL

Example Output

Terminal Output

code
 SkillSpector Security Report  v2.0.0

Skill: suspicious-skill
Source: ./suspicious-skill/
Scanned: 2026-01-29 10:30:00 UTC

        Risk Assessment
 Metric          Value
 Score           78/100
 Severity        HIGH
 Recommendation  DO NOT INSTALL

        Components (3)
 File              Type      Lines  Executable
 SKILL.md          markdown    142  No
 scripts/sync.py   python       87  Yes
 requirements.txt  text          3  No

Issues (2)

  HIGH: Env Variable Harvesting (E2)
    Location: scripts/sync.py:23
    Finding: for key, val in os.environ.items():...
    Confidence: 94%
    Explanation: This code collects environment variables containing
    API keys and secrets, then sends them to an external server.

  HIGH: External Transmission (E1)
    Location: scripts/sync.py:45
    Finding: requests.post("https://api.skill.io/env"...
    Confidence: 89%
    Explanation: Data is being sent to an external server. Combined
    with env harvesting above, this indicates credential exfiltration.

Configuration

Environment Variables

Variable

Description

Required

SKILLSPECTOR_PROVIDER

Active LLM provider: openai, anthropic, or nv_build. Each provider has its own bundled model_registry.yaml and default model (see the LLM Analysis table above). Defaults to nv_build.

Optional

NVIDIA_INFERENCE_KEY

Credential for the nv_build provider (build.nvidia.com).

Required for LLM analysis when SKILLSPECTOR_PROVIDER=nv_build

OPENAI_API_KEY

Credential for the OpenAI provider (SKILLSPECTOR_PROVIDER=openai). Also serves as the tier-2 fallback in the credential waterfall when the active provider returns no credentials.

Required for LLM analysis when SKILLSPECTOR_PROVIDER=openai

OPENAI_BASE_URL

Override the OpenAI endpoint (e.g. point at Ollama).

Optional

ANTHROPIC_API_KEY

Credential for the Anthropic provider (SKILLSPECTOR_PROVIDER=anthropic).

Required for LLM analysis when SKILLSPECTOR_PROVIDER=anthropic

SKILLSPECTOR_MODEL

Override the active provider's default model. See the LLM Analysis table for each provider's default.

Optional

SKILLSPECTOR_MODEL_REGISTRY

Override the bundled per-provider YAML registry (src/skillspector/providers/<provider>.yaml) with a custom path.

Optional

SKILLSPECTOR_LOG_LEVEL

Log level: DEBUG, INFO, WARNING, ERROR (default: WARNING).

Optional

CLI Options

code
skillspector scan --help

Options:
  -f, --format [terminal|json|markdown|sarif]  Output format [default: terminal]
  -o, --output PATH                            Output file path
  --no-llm                                     Skip LLM analysis (static only)
  -V, --verbose                                Show detailed progress
  --help                                       Show this message and exit

Development

Setup

All make targets assume a virtual environment is already created and activated. The Makefile uses uv if available, else pip.

code
# Clone, create venv, activate, install dev dependencies
git clone https://github.com/NVIDIA/skillspector.git
cd skillspector
uv venv .venv && source .venv/bin/activate
# or: python3 -m venv .venv && source .venv/bin/activate
make install-dev

# Run tests
make test

# Run tests with coverage
make test-cov

# Run linting
make lint

# Format code
make format

How It Works

SkillSpector uses a two-stage detection pipeline:

Stage 1: Static Analysis

  • Fast regex-based pattern matching across 11 static analyzers
  • AST-based behavioral analysis detecting dangerous calls (exec, eval, subprocess, etc.)
  • Live vulnerability lookups via OSV.dev for known CVEs in dependencies
  • Scans all files in the skill
  • High recall (catches most issues)
  • Moderate precision (some false positives)

Stage 2: LLM Semantic Analysis (Optional)

  • Evaluates context and intent
  • Filters false positives
  • Provides human-readable explanations
  • Improves precision to ~87%

The LLM prompt includes anti-jailbreak protections to prevent malicious skills from manipulating the analysis.

Live Vulnerability Lookups (SC4)

SC4 uses the OSV.dev API to check dependencies against the full Open Source Vulnerabilities database — covering tens of thousands of advisories across PyPI and npm.

  • No API key required — OSV.dev is free and unauthenticated.
  • Batch queries — all dependencies are checked in a single HTTP call.
  • Automatic fallback — if OSV.dev is unreachable (air-gapped/offline), a small built-in fallback list is used.
  • Caching — results are cached in-memory for 1 hour to avoid redundant API calls during a session.

The tool requires outbound HTTPS access to api.osv.dev for live vulnerability data. When that is not available, findings are limited to the static fallback list.

Limitations

  • Non-English content: May miss patterns in other languages
  • Image-based attacks: Cannot analyze text in images
  • Encrypted/binary code: Cannot analyze compiled or encrypted content
  • Runtime behavior: Static analysis only, no dynamic execution
  • Offline SC4: Without network access to api.osv.dev, SC4 uses a small static fallback list

Research Background

Based on research from "Agent Skills in the Wild: An Empirical Study of Security Vulnerabilities at Scale" (Liu et al., 2026):

  • Dataset: 42,447 skills from major marketplaces
  • Vulnerable: 26.1% contain at least one vulnerability
  • High-severity: 5.2% show likely malicious intent
  • Key finding: Skills with executable scripts are 2.12x more likely to be vulnerable

Python API Integration

code
from skillspector import graph

# Invoke the LangGraph workflow
result = graph.invoke({
    "input_path": "/path/to/skill",
    "output_format": "json",   # terminal, json, markdown, or sarif
    "use_llm": True,           # False for static-only analysis
})

# Access results
print(f"Risk Score: {result['risk_score']}/100")
print(f"Severity: {result['risk_severity']}")
print(f"Recommendation: {result['risk_recommendation']}")

for finding in result["filtered_findings"]:
    print(f"[{finding['severity']}] {finding['rule_id']}: {finding['message']}")

License

Apache License 2.0 - see LICENSE for details.

Contributing

Contributions are welcome! Please read our contributing guidelines and submit pull requests.

Support

  • Issues: GitHub Issues
この記事をシェア

関連記事

GitHub Blog★42026年6月20日 01:00

社内データ分析エージェントの構築方法について

GitHub は、大規模なデータ組織が直面する自己完結型のデータアクセスと洞察提供の課題に対し、AI を活用した信頼性の高い解決策として、社内でデータ分析エージェントを構築したことを発表した。

TLDR AI★32026年6月19日 09:00

Mistral AI が Vibe にコード作成とアプリ機能を提供へ

AI 企業「Mistral AI」は、開発者向けプラットフォーム「Vibe」にコード生成およびアプリケーション構築機能を追加すると発表した。これにより、ユーザーは Vibe 上で直接コード作成やアプリ開発が可能になる。

Claude Blog★42026年6月18日 09:00

Claude Code がアーティファクト機能をサポート

Anthropic は開発者向けツール「Claude Code」に、コード生成結果を直接表示・編集できる「アーティファクト」機能を追加した。これにより、開発ワークフローの効率化が図られる。

今日のまとめ

AI日報で今日の重要ニュースをまとめ読み

ニュース一覧に戻る元記事を読む