Back to skill

Security audit

Evidence-Based Technical Labeling

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed technical-labeling workflow with gated optional PatSnap enrichment, though its bundled validation helper should not be treated as a complete QA guarantee.

Before installing, confirm whether your records may be sent to PatSnap MCP services and keep confidential, personal, licensed, privileged, or export-controlled text local unless specifically authorized. Use the bundled validators as helpful checks, but require human review or stronger validation before relying on labeled outputs for important business, legal, scientific, or customer decisions.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/validate_labeling_output.mjs:22
Finding

Fail-Open Workbook Validation Allows Unsupported Formal Labels to Pass QA

Content
View full analysis
{ const rows = matrices[name] || []; if (rows.length < 2) return []; const headers = rows[0].map(String); return rows.slice(1).filter((r) => r.some((v) => v !== null && v !== "")).map((r) => Object.fromEntries(headers.map((h, i) => [h, r[i] ?? ""]))); }; const duplicates = (values) => [...new Set(values.filter((v, i) => v && values.indexOf(v) !== i))]; const source = objects("Source Data"); const results = objects("Labeling Results"); const evidence = objects("Evidence"); const taxonomy = objects("Taxonomy"); const sourceIds = source.map((r) => String(r.record_id || "").trim()); const resultIds = results.map((r) => String(r.record_id || "").trim()); const duplicateSourceIds = duplicates(sourceIds); const duplicateResultIds = duplicates(resultIds); if (duplicateSourceIds.length) errors.push(`duplicate source record_id: ${duplicateSourceIds.join(", ")}`); if (duplicateResultIds.length) errors.push(`duplicate result record_id: ${duplicateResultIds.join(", ")}`); const dropped = sourceIds.filter((id) => id && !new Set(resultIds).has(id)); const unexpected = resultIds.filter((id) => id && !new Set(sourceIds).has(id)); if (source.length && dropped.length) errors.push(`source records missing results: ${dropped.join(", ")}`); if (unexpected.length) errors.push(`results without source records: ${unexpected.join(", ")}`); const formalPaths = new Set(taxonomy.filter((r) => String(r.status).trim() === "formal" && String(r.output_eligible || "true").toLowerCase() !== "false").map((r) => String(r.label_path).trim())); const allowedStatus = new Set(["formal", "candidate", "unclassified", "needs_review"]); const allowedConfidence = new Set(["high", "medium", "low", ""]); let illegalFormalLabels = 0 ...[truncated 4537 chars]
Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (4)

Hidden Instructions

High
Category
Prompt Injection
Confidence
60% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · references/domain-milk-protein-taxonomy.csv (reported line 1)May include surrounding context.

text
"label_id","dimension","label_name","label_path","parent_label_id","definition","include_when","exclude_when","synonyms","confusable_labels","positive_example","negative_example","status","taxonomy_version","source_frequency","learning_source","definition_status","dirty_observation","output_eligible"
"MP-F7AF20CE46","Separation method","Separation method","Separation method","","Root dimension for separation method in the milk-protein processing taxonomy.","The record requires a decision in this dimension.","Do not output the dimension root as a leaf-level label.","","","Supported by the domain rules and gold-standard examples.","See the domain boundary rules and adjacent-label examples.","formal","milk-protein-customer-v2","0","20260525085204594-2.xlsx","user_confirmed_v2_starting_definition","","false"
"MP-38B21C5D35","Separation method","Two or more preparation methods","Separation method > Two or more preparation methods","MP-F7AF20CE46","Milk-protein technology in which Two or more preparation methods is a key preparation, extraction, purification, concentration, or separation route.","Two or more preparation methods is technically central to selectively obtaining, separating, purifying, or concentrating the target protein or peptide.","Do not apply when the method is only a routine auxiliary step and is not technically central.","","","Supported by the domain rules and gold-standard examples.","See the domain boundary rules and adjacent-label examples.","formal","milk-protein-customer-v2","4","20260525085204594-2.xlsx","user_confirmed_v2_starting_definition","","true"
"MP-6B28DD099F","Separation method","Targeted enzymatic hydrolysis","Separation method > Targeted enzymatic hydrolysis","MP-F7AF20CE46","Milk-protein technology in which Targeted enzymatic hydrolysis is a key preparation, extraction, purification, concentration, or separation route.","Targeted enzymatic hydrolysis is technically central to selectively obtaining, separating, purifying, or concentr
...[truncated 25 chars]

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
70% confidence
Finding

Without declared permissions the skill's intent is opaque and cannot be validated.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
75% confidence
Finding

Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Content

Scanner excerpt · references/default-decision-rules.md (reported line 25)May include surrounding context.

md
1. Obey each dimension's single- or multi-select policy.
2. In multi-select dimensions, require independent evidence for each label.
3. Prefer the main object, main purpose, and key process over exhaustive tagging.
4. Do not convert a candidate label into a formal label without confirmation.

## Conflicts and abstention

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
79% confidence
Finding

This CSV contains natural-language taxonomy content that explicitly includes "treat and prevent infections by COVID-19 and other coronaviruses" as an example under a treatment label. While this is not a code-execution risk, it is a natural-language policy concern because it embeds sensitive medical-treatment framing directly into the artifact without any qualifying limitation or contextual policy note.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.