Back to skill

Security audit

cyber-events-log-abstract

Security checks for vulnerabilities and agentic risk

Overview

This skill appears intended for security-event reporting, but it embeds an XDR API key, disables TLS verification, and saves sensitive raw event data locally.

Review this skill carefully before installing. It should not be used as published unless the exposed XDR API key has been revoked and replaced with a user-provided secret, TLS verification is enabled, the XDR destination is configurable and authorized, and raw data retention is documented or disabled by default.

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 (3)

T09 · Insecure Skill Coding Practices

Error
Location
security_report.py:15
Finding

Hard-Coded XDR API Credential

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
security_report.py:45
Finding

TLS Certificate Verification Disabled for Authenticated XDR Requests

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
security_report.py:103
Finding

Security Event Totals and Trends Use Aggregate Record Counts Instead of Event Counts

Content
View full analysis
first_count * 1.2: trend = "上升" elif last_count < first_count * 0.8: trend = "下降" else: trend = "波动" peak_time, peak_event_count = max(time_record_counter.items(), key=lambda x: x[1]) avg_event_count = int(sum(time_record_counter.values()) / len(time_record_counter)) return { "trend": trend, "timeBuckets": len(sorted_times), "peakTime": peak_time, "peakEventCount": peak_event_count, "avgEventCount": avg_event_count, "severityDistribution": severity_counter.most_common(3), "focusObjectDistribution": object_counter.most_common(), ...[truncated 2325 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Behavioral ASTexec() Call, eval() Call, Dynamic Import
Findings (16)

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The declared purpose says the skill summarizes security events, but the behavior includes actively querying external or internal security platforms and, per the finding, authenticating with hardcoded credentials and accessing undeclared resources. That mismatch is dangerous because it conceals privileged data access behind an innocuous summary skill, reducing informed consent and increasing the chance of unauthorized collection or credential exposure.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The skill executes another Python script as a subprocess, which introduces code-execution capability beyond simple summary generation. In this context, that is more dangerous because a summarization skill should not need shell-mediated execution of auxiliary scripts, and compromise of the sibling script or execution path could lead to unintended code execution.

Content

No source excerpt is available for this finding.

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
96% confidence
Finding

This is a true tool-parameter abuse issue because user-controlled or runtime-derived data is interpolated into a shell command. Even though argparse enforces int for the CLI path, shell=True remains a fragile and unnecessary execution pattern that can become exploitable through future code changes, alternate call paths, or path/argument manipulation.

Content

Scanner excerpt · run_abstract.py (reported line 30)May include surrounding context.

python
# 执行命令
    import subprocess
    result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
    
    if result.returncode != 0:
        raise Exception(f"执行安全报告脚本失败: {result.stderr}")

Context-Inappropriate Capability

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The code globally disables TLS warnings and then connects with certificate verification disabled, which allows interception or spoofing of the XDR API connection. Because this code handles security-event data and API authentication, a man-in-the-middle attacker could tamper with results or capture credentials and sensitive telemetry.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

A hardcoded API key is embedded directly in the source and used automatically for requests. If the file is shared, logged, committed, or reused by another system, the credential can be extracted and used to access the XDR API, potentially exposing sensitive security-event data or enabling further abuse depending on the API's permissions.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
92% confidence
Finding

The skill declares no explicit tool or permission scope, yet its instructions direct execution of local Python scripts, network access to XDR data sources, and report/output file generation. In an agent environment, this overbroad undeclared capability increases the risk of unintended shell execution, filesystem writes, and network access without policy visibility or user consent.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The file describes the skill entirely in Chinese and the reporting template mandates a fixed Chinese output structure, but it does not indicate that language selection is optional or user-controlled. This can violate language/locale policy when users have not opted into Chinese-only responses.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

The trigger phrases are broad enough to match common requests for security summaries, which can cause the skill to activate in contexts where the user did not intend this specific workflow. Because the skill may execute scripts and fetch security data, accidental invocation has greater consequences than a normal text-only skill.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

This Python file hard-codes Chinese-language docstrings, CLI descriptions, exceptions, headings, and status messages throughout the skill. That creates a language-policy issue because the skill mandates a specific language for interaction and output without any user opt-in, locale selection, or stated region-specific justification.

Content

No source excerpt is available for this finding.

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
95% confidence
Finding

The code builds a shell command string and executes it with shell=True, even though part of the command includes a runtime parameter (days). This creates command-injection risk if the parameter validation is ever weakened, bypassed, or influenced indirectly, and it is unnecessary because the script path and arguments can be passed safely as an argument list.

Content

Scanner excerpt · run_abstract.py (reported line 30)May include surrounding context.

python
# 执行命令
    import subprocess
    result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
    
    if result.returncode != 0:
        raise Exception(f"执行安全报告脚本失败: {result.stderr}")

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill claims to generate concise summaries, but it also writes raw security event data to persistent local storage. Raw security logs often contain sensitive operational details, internal IPs, incident metadata, and potentially regulated data, so this expands the data exposure surface beyond the stated function.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill is described as a summarization/reporting utility, but it also initiates direct remote collection from an internal XDR endpoint. This expands its privileges and data-access scope beyond passive summarization, increasing the risk of unauthorized data retrieval, unexpected network access, and misuse in environments where users may assume only local processing occurs.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The skill performs an external network request that transmits security-event query parameters and retrieves sensitive event data without any explicit user-facing disclosure. In the context of a summarization skill, this is riskier because users may reasonably expect analysis of supplied data rather than silent remote collection from an internal security platform.

Content

No source excerpt is available for this finding.

Unsafe Defaults

Medium
Category
Tool Misuse
Confidence
99% confidence
Finding

Using verify=False disables server certificate validation for this specific HTTPS request, making the connection vulnerable to man-in-the-middle attacks. Since the request includes an API key and accesses security telemetry, an attacker on the network path could intercept credentials, observe queries, or alter returned event data.

Content

Scanner excerpt · security_report.py (reported line 49)May include surrounding context.

python
API_URL,
        headers=HEADERS,
        params=params,
        verify=False,
        timeout=120
    )
    response.raise_for_status()

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The manifest description states the skill is specifically for generating security incident summary reports in Chinese, using Chinese-only phrasing without indicating user opt-in or alternative language support. This creates a natural-language locale policy concern because it appears to enforce a specific language by default rather than offering a choice or documenting a region-specific justification.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Low
Category
Not specified by scanner
Confidence
85% confidence
Finding

The stated purpose is to generate a concise abstract report from security events, which does not inherently require writing artifacts to the user's filesystem. Persisting the report as a file is an additional operational behavior beyond the manifest's narrowly described summarization scope.

Content

No source excerpt is available for this finding.