Back to skill

Security audit

Antom Copilot

Security checks for vulnerabilities and agentic risk

Overview

The skill’s reporting workflow is mostly coherent, but it handles merchant and email credentials too broadly and sends the merchant token to a different API host than the documentation names.

Review this skill before installing. Use it only if you trust the actual Antom API host in the code, can store merchant and SMTP credentials securely, and are comfortable with report data being sent by email. Prefer scoped and revocable merchant tokens, an app-specific SMTP password, restrictive permissions on ~/antom/conf.json, TLS-only SMTP, and careful recipient review before sending reports.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
Findings (5)

T09 · Insecure Skill Coding Practices

Error
Location
payment_success_rate_expert/scripts/query_antom_psr_data.py:17
Finding

Merchant Authentication Token Is Transmitted to an Undisclosed API Endpoint

Content
View full analysis
Remediation
View remediation

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
payment_success_rate_expert/scripts/query_antom_psr_data.py:49
Finding

Query and Report Operations Access Credentials Beyond Their Functional Requirements

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
payment_success_rate_expert/scripts/send_psr_report.py:134
Finding

SMTP Authentication Can Be Performed over an Unencrypted Connection

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:20
Finding

Reusable Merchant and SMTP Secrets Are Stored in a Plaintext Configuration File

Content
View full analysis
Remediation
View remediation

T08 · Insecure Dependencies

Note
Location
payment_success_rate_expert/requirements.txt:1
Finding

Third-Party Dependencies Are Installed with Open-Ended Version Constraints and No Integrity Verification

Content
View full analysis
=2.25.0 # 能力二:analyse_and_gen_report.py matplotlib>=3.3.0 reportlab>=3.6.0 numpy>=1.19.0 ``` The instructions recommend direct installation: ```bash pip install requests ``` ```bash pip install matplotlib reportlab numpy ``` They also recommend resolving the unpinned requirements file: ```markdown Use `pip install -r requirements.txt` for batch installation ``` ### Technical Analysis The listed package names are established packages, and the audit found no typosquatting or attacker-controlled package source. The weakness is that every installation may resolve to different future versions and transitive dependencies. Python packages can execute code during installation and whenever they are imported. If a package release, transitive dependency, package-index account, or resolution path is compromised, users may install code that was never covered by the Skill audit. The absence of hashes also prevents verification that downloaded artifacts match reviewed artifacts. ### Attack Path 1. A user follows the instructions at a later date. 2. `pip` resolves the broad `>=` constraints to versions available at that time. 3. A compromised, malicious, or unexpectedly incompatible package or transitive dependency is selected. 4. Package code executes during installation or when the Skill imports it. 5. The package inherits the process's access to payment data and, in some workflows, merchant or SMTP credentials. This is a supply-chain exposure rather than evidence that any currently named dep ...[truncated 417 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (25)

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The skill presents itself as a general Antom assistant, yet behavior includes sending outbound email via SMTP using stored credentials and operating on local files. Combining hidden messaging capability with local secret access materially raises abuse potential, since the skill could exfiltrate reports or sensitive business data under the guise of routine assistance.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The skill presents itself as a general Antom assistant, yet behavior includes sending outbound email via SMTP using stored credentials and operating on local files. Combining hidden messaging capability with local secret access materially raises abuse potential, since the skill could exfiltrate reports or sensitive business data under the guise of routine assistance.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

The skill presents itself as a general Antom assistant, yet behavior includes sending outbound email via SMTP using stored credentials and operating on local files. Combining hidden messaging capability with local secret access materially raises abuse potential, since the skill could exfiltrate reports or sensitive business data under the guise of routine assistance.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
87% confidence
Finding

The skill advertises broad Antom assistance but declares no explicit tool scope while documentation indicates use of local configuration files, network access to the Antom portal/API, and outbound email. Missing permission boundaries increases the chance the skill can access files, secrets, or network resources without clear user expectation or platform enforcement.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The description is broad enough to invite activation for almost any Antom-related request, despite the skill appearing to have narrower payment-success-rate and reporting functionality. Overbroad invocation increases the likelihood that sensitive actions occur in contexts where the user did not intend to invoke a privileged reporting or data-access workflow.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

Telling users the assistant can handle all Antom-related queries and operations creates an overly expansive trust boundary. In context, the skill has access to merchant configuration and reporting workflows, so broad activation language may cause users to disclose secrets or trigger actions outside the skill's safe, intended scope.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The documentation tells users to ask the copilot for a merchant token while also warning that the token should be kept secure. This contradiction normalizes requesting or exposing a credential through the assistant, increasing the risk of secret disclosure, accidental logging, or misuse of a token that can authenticate to merchant APIs.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill describes capabilities that transmit payment success rate data to an external endpoint and can email generated reports, but it does not prominently warn users that payment-related operational data and recipient information may leave the local environment. This lack of disclosure can lead to unintentional sharing of sensitive business data, especially when the skill is invoked automatically or by non-expert users.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The statement that the skill is 'automatically called by the antom_copilot main skill based on user intent' is overly broad and does not define clear trigger conditions, approval gates, or scope limits. In a skill that can pull payment-related data and send emails, vague auto-invocation increases the risk of unintended execution, surprise data transmission, or report sending without sufficiently explicit user confirmation.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The script validates and requires SMTP/email credentials even though it never uses them for its stated function of querying payment success rate data. Unnecessary access to unrelated secrets expands the script's privilege scope, increases the chance of secret exposure through future changes, debugging, or misuse, and is inconsistent with least-privilege design.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The script silently accesses a configuration structure containing sensitive SMTP credentials as part of normal execution without any user-facing need or disclosure. Even if the credentials are not transmitted here, collecting and validating unrelated secrets creates unnecessary secret exposure risk and makes the skill harder to trust and audit.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
80% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · payment_success_rate_expert/scripts/query_antom_psr_data.py (reported line 119)May include surrounding context.

python
try:
        print(f"Fetching data from Antom, date range: {date_range}...")
        response = requests.post(API_ENDPOINT, headers=headers, json=payload, timeout=30)
        response.raise_for_status()
        
        result = response.json()

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The code reads SMTP credentials from a local config file and uses them to authenticate to an external mail server, giving the skill outbound communication ability with privileged local secrets. Even if intended for automation, this expands the trust boundary beyond intent analysis/delegation and increases the risk of credential misuse, unauthorized sending, and data leakage if the skill is triggered unexpectedly or modified.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

This script has the capability to send external emails with locally generated report attachments to arbitrary recipients supplied via CLI. In the context of a skill described as a central assistant/delegator, that is a materially broader side effect that can enable unauthorized data exfiltration or accidental disclosure of sensitive merchant reporting data if invoked by an untrusted workflow or user.

Content

No source excerpt is available for this finding.

Vague Triggers

Low
Category
Not specified by scanner
Confidence
83% confidence
Finding

Automatic intent-based delegation is described without clear thresholds or constraints, which can cause the skill to activate or route tasks too broadly. While less severe than hidden capabilities, vague activation rules can still lead to unintended processing of sensitive merchant data or initiation of report workflows.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
89% confidence
Finding

This requirements file contains natural-language comments in Chinese describing the skill components, with no indication that language choice is optional or justified by a region-specific constraint. Under the policy, forcing a specific language without user opt-in can be a locale/language policy violation.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
93% confidence
Finding

Using requests>=2.25.0 allows any newer version to be installed, making builds non-reproducible and potentially pulling in a vulnerable or behavior-changing release. In a skill that likely performs network access, an unexpected dependency version can increase exposure to known library flaws or break security assumptions.

Content

Scanner excerpt · payment_success_rate_expert/requirements.txt (reported line 4)May include surrounding context.

text
# Payment Success Rate Expert - Python Dependencies

# 能力一:query_antom_psr_data.py
requests>=2.25.0

# 能力二:analyse_and_gen_report.py
matplotlib>=3.3.0

Unverifiable Dependency: requests has 16 known advisory(ies) (CVE-2014-1830 (Exposure of Sensitive Information to an Unauthorized Actor in Requests); CVE-2024-47081 (Requests vulnerable to .netrc credentials leak via malicious URLs); CVE-2024-35195 (Requests `Session` object does not verify requests after making first request wi) +13 more), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
95% confidence
Finding

The manifest does not pin requests, so the project cannot demonstrate that installed versions avoid known advisories. Because requests is commonly used for outbound HTTP and credential-bearing sessions, unverifiable versions may expose sensitive data or TLS/authentication assumptions depending on the resolved release.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
92% confidence
Finding

An unpinned matplotlib dependency permits uncontrolled version drift across environments. While this library is typically less security-sensitive than network-facing components, unreviewed upgrades can still introduce vulnerable transitive behavior, parsing issues, or execution-time instability.

Content

Scanner excerpt · payment_success_rate_expert/requirements.txt (reported line 7)May include surrounding context.

text
requests>=2.25.0

# 能力二:analyse_and_gen_report.py
matplotlib>=3.3.0
reportlab>=3.6.0
numpy>=1.19.0

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
97% confidence
Finding

reportlab>=3.6.0 is risky because ReportLab has had serious issues including RCE/SSRF classes of vulnerabilities, and the unpinned spec makes it impossible to know what will actually be installed. If this skill generates reports from user-influenced content, dependency drift could directly expose a dangerous parsing/rendering surface.

Content

Scanner excerpt · payment_success_rate_expert/requirements.txt (reported line 8)May include surrounding context.

text
# 能力二:analyse_and_gen_report.py
matplotlib>=3.3.0
reportlab>=3.6.0
numpy>=1.19.0

# 能力三:send_psr_report.py

Unverifiable Dependency: reportlab has 8 known advisory(ies) (CVE-2023-33733 (Reportlab vulnerable to remote code execution); CVE-2020-28463 (Server-side Request Forgery (SSRF) via img tags in reportlab); CVE-2019-19450 (ReportLab vulnerable to remote code execution via paraparser) +5 more), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
98% confidence
Finding

ReportLab has a history of high-impact issues, including code execution and SSRF-related flaws, and the unpinned dependency means the actual installed version cannot be verified as safe. In a reporting skill that likely processes generated document content, this context makes the issue more dangerous because document rendering is directly part of intended functionality.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
90% confidence
Finding

numpy>=1.19.0 allows arbitrary newer releases, reducing reproducibility and making it harder to assess whether deployed environments include affected versions. The direct security risk is usually lower than for network or document-processing libraries, but supply-chain and vulnerable-version exposure still exist.

Content

Scanner excerpt · payment_success_rate_expert/requirements.txt (reported line 9)May include surrounding context.

text
# 能力二:analyse_and_gen_report.py
matplotlib>=3.3.0
reportlab>=3.6.0
numpy>=1.19.0

# 能力三:send_psr_report.py
# 仅使用Python标准库,无需额外依赖

Unverifiable Dependency: numpy has 16 known advisory(ies) (CVE-2014-1859 (Numpy arbitrary file write via symlink attack); CVE-2021-41495 (NumPy NULL Pointer Dereference); CVE-2021-33430 (NumPy Buffer Overflow (Disputed)) +13 more), but the manifest does not pin a version, so it is unknown whether the installed release is affected

Low
Category
Supply Chain
Confidence
88% confidence
Finding

Because NumPy is not pinned, it is unclear whether deployments use a version affected by known advisories. Although the package is generally less exposed than HTTP or document-rendering libraries in this skill, unverifiable dependency state still weakens supply-chain assurance and patch management.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
93% confidence
Finding

This code emits a warning string containing Chinese text ('时出错') inside otherwise English-language user-facing CLI output. That forces a specific language/locale presentation without user opt-in, which fits the natural-language locale policy violation category.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The module docstring and CLI description present this script as generating a payment success rate PDF report, but the implementation also persists a separate executive summary text file to disk. Writing an extra artifact is a broader behavior than the stated report-generation description and is not mentioned in the documentation.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.