Back to skill

Security audit

Medical Device Cybersecurity(医疗器械网络安全)

Security checks for vulnerabilities and agentic risk

Overview

This skill provides local medical-device cybersecurity guidance and templates with no evidence of harmful execution or data transmission.

Use this as a reference and template starter. Confirm medical-device applicability, verify current regulatory requirements, and use a proper CVSS assessment before making remediation decisions. Review software-inventory contents and authorized recipients before sharing an SBOM. The verifier reads skill-package files and overwrites its local reports. Treat the bundled audit and ownership claims as unverified because of their inconsistencies. SkillSpector reported complete coverage; this assessment independently inspected all supplied files.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Output HandlingUnvalidated Output Injection, Cross-Context Output, Unbounded Output
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Behavioral ASTexec() Call, eval() Call, Dynamic Import
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (10)

Skill declares no tool scope ('permissions' or 'allowed-tools') but code capabilities were detected: file_read, file_write, shell.

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.

The workflow directs external SBOM submission and supply-chain sharing without a confidentiality warning.

Medium
Category
Output Handling
Confidence
90% confidence
Finding

Step 6 instructs submission and supply-chain sharing of the SBOM, which contains component names, precise versions, suppliers, and dependency relationships. The file does not warn that this can disclose sensitive software inventory or instruct the agent to check recipient authorization before sharing.

Content

No source excerpt is available for this finding.

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · verify/meddev_cyber_quality_test.py (reported line 55)May include surrounding context.

python
def check_tools():
    items = []
    try:
        r = subprocess.run([PYTHON, TOOL, "reg", "--region", "us"], capture_output=True, text=True, timeout=60)
        out = r.stdout or ""
        items.append({"name": "reg 命令执行", "pass": r.returncode == 0 and "SBOM" in out and "RTA" in out})
        r2 = subprocess.run([PYTHON, TOOL, "checklist", "--phase", "submission"], capture_output=True, text=True, timeout=60)

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · verify/meddev_cyber_quality_test.py (reported line 58)May include surrounding context.

python
r = subprocess.run([PYTHON, TOOL, "reg", "--region", "us"], capture_output=True, text=True, timeout=60)
        out = r.stdout or ""
        items.append({"name": "reg 命令执行", "pass": r.returncode == 0 and "SBOM" in out and "RTA" in out})
        r2 = subprocess.run([PYTHON, TOOL, "checklist", "--phase", "submission"], capture_output=True, text=True, timeout=60)
        items.append({"name": "checklist 命令执行", "pass": r2.returncode == 0 and "渗透测试" in (r2.stdout or "")})
        r3 = subprocess.run([PYTHON, TOOL, "sbom"], capture_output=True, text=True, timeout=60)
        out3 = r3.stdout or ""

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · verify/meddev_cyber_quality_test.py (reported line 60)May include surrounding context.

python
items.append({"name": "reg 命令执行", "pass": r.returncode == 0 and "SBOM" in out and "RTA" in out})
        r2 = subprocess.run([PYTHON, TOOL, "checklist", "--phase", "submission"], capture_output=True, text=True, timeout=60)
        items.append({"name": "checklist 命令执行", "pass": r2.returncode == 0 and "渗透测试" in (r2.stdout or "")})
        r3 = subprocess.run([PYTHON, TOOL, "sbom"], capture_output=True, text=True, timeout=60)
        out3 = r3.stdout or ""
        items.append({"name": "sbom 命令执行", "pass": r3.returncode == 0 and "CycloneDX" in out3 and "components" in out3})
        r4 = subprocess.run([PYTHON, TOOL, "vuln", "--desc", "远程可被利用执行任意代码"], capture_output=True, text=True, timeout=60)

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · verify/meddev_cyber_quality_test.py (reported line 63)May include surrounding context.

python
r3 = subprocess.run([PYTHON, TOOL, "sbom"], capture_output=True, text=True, timeout=60)
        out3 = r3.stdout or ""
        items.append({"name": "sbom 命令执行", "pass": r3.returncode == 0 and "CycloneDX" in out3 and "components" in out3})
        r4 = subprocess.run([PYTHON, TOOL, "vuln", "--desc", "远程可被利用执行任意代码"], capture_output=True, text=True, timeout=60)
        items.append({"name": "vuln 命令执行", "pass": r4.returncode == 0 and "严重" in (r4.stdout or "")})
        r5 = subprocess.run([PYTHON, TOOL, "standard"], capture_output=True, text=True, timeout=60)
        out5 = r5.stdout or ""

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · verify/meddev_cyber_quality_test.py (reported line 65)May include surrounding context.

python
items.append({"name": "sbom 命令执行", "pass": r3.returncode == 0 and "CycloneDX" in out3 and "components" in out3})
        r4 = subprocess.run([PYTHON, TOOL, "vuln", "--desc", "远程可被利用执行任意代码"], capture_output=True, text=True, timeout=60)
        items.append({"name": "vuln 命令执行", "pass": r4.returncode == 0 and "严重" in (r4.stdout or "")})
        r5 = subprocess.run([PYTHON, TOOL, "standard"], capture_output=True, text=True, timeout=60)
        out5 = r5.stdout or ""
        items.append({"name": "standard 命令执行", "pass": r5.returncode == 0 and "81001" in out5})
    except Exception as e:

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · verify/meddev_cyber_quality_test.py (reported line 82)May include surrounding context.

python
items = []
    for desc, expects in cases:
        try:
            r = subprocess.run([PYTHON, TOOL, "vuln", "--desc", desc], capture_output=True, text=True, timeout=60)
            ok = r.returncode == 0 and any(e in (r.stdout or "") for e in expects)
            items.append({"name": f"vuln「{desc[:14]}…」→{expects[0]}", "pass": ok})
        except Exception as e:

Unconditional triggers include general cybersecurity questions without requiring a medical-device context.

Low
Category
Trigger Abuse
Confidence
93% confidence
Finding

The skill explicitly requires activation whenever any listed phrase matches, including questions about SBOM depth and customer-reported vulnerability patch deadlines. These questions also arise in ordinary software development, so they can incorrectly activate medical-device regulatory guidance without any medical-device context.

Content

No source excerpt is available for this finding.

The verification report claims “零扫描” (no scanning), but the verifier recursively scans package files for sensitive content.

Low
Category
Excessive Agency
Confidence
91% confidence
Finding

The report's note explicitly promises no scanning, yet check_security() traverses BASE, reads supported files, and searches their contents for sensitive-data patterns (L124–L135). This is a local package scan, not evidence of network scanning or exfiltration, but the unqualified assurance contradicts the implemented behavior.

Content

No source excerpt is available for this finding.