Skip to content
Cisco AI Defense logo
CiscoAI Security

Features — Skill Scanner

Features

Four pillars of protection for AI agent skill packages.


Multi-Engine Threat Detection

Skill Scanner layers 10 detection engines so that no single blind spot — pattern-matching misses, bytecode tricks, obfuscated pipelines — goes unchecked. Core analyzers run on every scan; optional analyzers activate on demand.

Core Analyzers (Always On)

AnalyzerWhat It DoesSignal Source
Static AnalyzerPattern and signature detection across all filesYAML signatures + YARA rules + Python checks
Bytecode Analyzer.pyc consistency and integrity verificationBytecode/source relationships
Pipeline AnalyzerShell command chain risk and taint analysisCommand pipeline heuristics

Optional Analyzers (Opt-In)

AnalyzerEnable FlagWhat You Get
Behavioral Analyzer--use-behavioralAST and control-flow dataflow analysis for Python
LLM Analyzer--use-llmSemantic threat reasoning powered by LLM
Meta-Analyzer--enable-metaSecond-pass false-positive reduction across all findings
VirusTotal Analyzer--use-virustotalBinary hash reputation and optional file uploads
AI Defense Analyzer--use-aidefenseCisco cloud-based threat classification
Trigger Analyzer--use-triggerDetection of vague or overly broad skill descriptions
Cross-Skill Scanner--check-overlapCoordinated attack detection across multiple skills

Threat Coverage Matrix

Threat CategoryStaticBytecodePipelineBehavioralLLMTriggerVirusTotalAI DefenseCross-Skill
Prompt Injection
Command Injection
Data Exfiltration
Obfuscation
Hardcoded Secrets
Social Engineering
Malware
Supply Chain
Unicode Steganography

Multiple analyzers covering the same category provides layered detection — if one engine misses a pattern, another may catch it.


File Intelligence Engines

Beyond code and text, Skill Scanner uses dedicated libraries to inspect binary and structured file content:

EngineWhat It Catches
MagikaAI-powered content-type detection for 200+ file types. Catches extension-vs-content mismatches.
pdfidRisky PDF structures: /JS, /JavaScript, /OpenAction, /Launch
oletoolsOffice macros, auto-executable triggers, VBA, and OLE indicators
confusable-homoglyphsUnicode deception — visually similar characters from different scripts

Analyzability Scoring

Not all files can be inspected. Skill Scanner computes a per-skill analyzability score that measures what fraction of the skill's content was actually analyzed. A low score means the skill contains files that resist inspection — a risk signal in itself.

  • Score formula: (analyzed_weight / total_weight) x 100 where weight reflects file size
  • Risk levels: LOW (>= 90%), MEDIUM (70-90%), HIGH (< 70%) — configurable via policy
  • Fail-closed posture: opaque binaries generate UNANALYZABLE_BINARY findings; low overall scores generate LOW_ANALYZABILITY findings

Binary and Archive Handling

Instead of blanket allow/deny, Skill Scanner applies policy-sensitive handling to binary files and archives.

Supported Archive Formats

FormatExtensions
ZIP-based.zip, .jar, .war, .apk, .docx, .xlsx, .pptx, .odt, .ods, .odp
TAR-based.tar, .tar.gz, .tgz, .tar.bz2, .tar.xz

Archive Security Protections

ProtectionDefault LimitFinding on Violation
Zip-bomb detection100:1 compression ratioARCHIVE_ZIP_BOMB (CRITICAL)
Nesting depth3 levelsARCHIVE_NESTED_TOO_DEEP (HIGH)
Path traversalRejects .. and leading /ARCHIVE_PATH_TRAVERSAL (CRITICAL)
Symlink detectionZIP and TAR symlinks/hardlinksARCHIVE_SYMLINK (CRITICAL)
Total size50 MB uncompressedExtraction stops
File count500 filesExtraction stops
Office threatsVBA macros and embedded OLEOFFICE_VBA_MACRO, OFFICE_EMBEDDED_OLE

Policy-Driven Control Plane

Every detection threshold, rule scope, and output behavior is configurable through policy YAML — no code changes required.

Built-In Presets

PresetWhen to Use
balanced (default)Production scanning with good detection-to-noise ratio
strictUntrusted/external skills, compliance audits — maximum sensitivity
permissiveTrusted internal skills — reduced noise

Key Policy Sections

SectionWhat It Controls
pipelineTrusted installer domains, compound fetch+execute detection
rule_scopingWhich rules fire on which file types; doc-path exclusions
file_limitsMax file count, size, nesting depth
analysis_thresholdsAnalyzability risk levels, unicode sensitivity
severity_overridesPer-rule severity remapping
disabled_rulesSuppress specific rule IDs
skill-scanner generate-policy -o policy.yaml --preset strict
skill-scanner configure-policy -i policy.yaml -o policy.yaml
skill-scanner scan ./skill --policy policy.yaml

See Scan Policies for the full guide.


Rule System Extensibility

Add detection logic without forking the scanner. Skill Scanner supports three rule types that can be mixed with built-in rule packs.

Rule TypeBest For
Signature rules (YAML)Fast regex pattern matching on file content
YARA rulesBinary and text pattern matching with conditions
Python checksProgrammatic, policy-aware checks with full file context
skill-scanner validate-rules --rules-file /path/to/custom
skill-scanner scan ./skill --custom-rules /path/to/rules

See Writing Custom Rules for the full authoring guide.


Multiple Interfaces

Use Skill Scanner however your team works.

InterfaceBest For
CLILocal development, CI pipelines, scripted scans
Python SDKEmbedding scanning in Python applications
REST APIUpload-driven workflows, web portals, service-to-service
Pre-commit hookBlock risky skills before they reach the repository

Reporting and Output Formats

Six output formats support every workflow from local triage to platform automation.

FormatFlagBest For
Summary--format summaryQuick terminal readout
JSON--format jsonAutomation pipelines
Markdown--format markdownPR comments and report artifacts
Table--format tableCompact terminal summaries
SARIF--format sarifGitHub Code Scanning integration
HTML--format htmlRich interactive triage with correlation groups

LLM Consensus Mode

Run the LLM analyzer multiple times independently and keep only majority-agreed findings, significantly reducing false positives while preserving true threats.

skill-scanner scan ./skill --use-llm --llm-consensus-runs 3 --enable-meta

Combines consensus voting with meta-analyzer false-positive filtering for high-confidence results.