Back to skill

Security audit

同花顺CRM伪码批量查询

Security checks across malware telemetry and agentic risk

Overview

This skill is purpose-built for CRM lookup, but it handles enterprise credentials, client private keys, and customer-linked data in ways that need careful review before installation.

Install only if this is an approved internal workflow and users are authorized to query the listed CRM accounts. Prefer an implementation that uses managed mTLS credentials without exporting private keys, validates TLS normally, avoids passwords in command lines or URLs, writes outputs only when explicitly requested, and cleans up cookie jars and sensitive files.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • 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 (22)

Lp3

Medium
Category
MCP Least Privilege
Confidence
93% confidence
Finding
The skill invokes shell commands and writes output files, but it declares no permissions or constraints. This creates a transparency and governance gap: an agent may execute filesystem and shell-capable actions without the user or platform being clearly informed, increasing the chance of unsafe execution and secret exposure.

Context-Inappropriate Capability

Medium
Confidence
92% confidence
Finding
The document goes beyond describing CRM pseudo-code lookup and includes instructions to export a client certificate from the macOS keychain, extract the matching private key, and write both to disk. That materially expands the skill from a narrow query workflow into credential material handling, increasing the risk of credential theft, impersonation, and reuse outside the intended CRM task.

Context-Inappropriate Capability

Low
Confidence
78% confidence
Finding
The instructions tell users to add a root certificate as trusted in the system keychain, which is a broader trust-store modification than the skill's immediate data-retrieval purpose requires. Expanding system trust increases the blast radius of mistakes or misuse and can weaken host security if the trust anchor is wrong, outdated, or later abused.

Context-Inappropriate Capability

Medium
Confidence
99% confidence
Finding
The script invokes curl with -k, which disables TLS server certificate verification even though the tool handles CRM authentication and sensitive customer data. That permits man-in-the-middle interception or spoofing of the CRM endpoint, undermining both password confidentiality and trust in returned pseudo-code data.

Context-Inappropriate Capability

High
Confidence
99% confidence
Finding
The script's purpose is to extract and write a client certificate plus private key to a PEM file, which is far more sensitive than the declared CRM pseudocode lookup functionality. In the context of a CRM lookup skill, bundling credential-export capability materially increases the chance of credential theft, reuse, or unintended lateral access if the file is exposed.

Context-Inappropriate Capability

Medium
Confidence
97% confidence
Finding
The instructions direct the user to trust a root CA, export identities from Keychain, and manipulate certificate material with security/openssl tooling. That capability exceeds the stated business task and creates a path to expose reusable authentication credentials outside the protected keystore boundary.

Vague Triggers

Medium
Confidence
83% confidence
Finding
The trigger conditions include broad natural-language phrases like '给我伪码' plus any provided userid list, which could cause the skill to activate in contexts the user did not intend. Because the skill performs authenticated CRM access and retrieves customer contact-derived identifiers, accidental invocation can expose sensitive enterprise data.

Missing User Warnings

Medium
Confidence
86% confidence
Finding
The document includes password-bearing GET and POST examples that place credentials directly in command lines and request parameters, which can leak through shell history, process listings, logs, browser/proxy tooling, and copied documentation. In this skill context, those credentials unlock an internal CRM containing customer-linked sensitive data, so disclosure could enable unauthorized access and scraping.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The certificate export instructions explicitly describe extracting a client certificate and corresponding private key and writing them to files, but do not emphasize that this key material is highly sensitive. Once exported to disk, the private key becomes easier to copy, exfiltrate, back up unintentionally, or misuse to impersonate the user in the mTLS-protected CRM.

Missing User Warnings

Medium
Confidence
98% confidence
Finding
The CRM password is placed directly into a URL query string during authentication. Query parameters are commonly exposed through process listings, logs, proxies, browser or tool history, and intermediary monitoring, making credential leakage substantially more likely.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The script writes user identifiers and pseudo-codes to a local plaintext file by default, creating persistent sensitive data on disk without access controls or an explicit warning. On shared systems or endpoints with backups, sync agents, or loose permissions, this can lead to unintended disclosure of customer information.

Missing User Warnings

Medium
Confidence
99% confidence
Finding
The script writes the selected certificate and its matching private key in plaintext PEM form to an arbitrary output path, with defaults under /tmp. This creates immediate exposure to local compromise, accidental sharing, backup leakage, or later reuse by an attacker to impersonate the user to the CRM or other systems trusting the certificate.

Ssd 3

High
Confidence
95% confidence
Finding
This section directly instructs how to access customer detail pages and extract telephone pseudo-codes from contact fields at scale. Even if the values are 'pseudo-codes,' they are customer-linked sensitive contact artifacts, and the skill is purpose-built for bulk collection, which increases privacy, misuse, and unauthorized-surveillance risk if access controls are weak or credentials are shared.

Credential Access

High
Category
Privilege Escalation
Content
security add-trusted-cert -r trustRoot -k ~/Library/Keychains/login.keychain-db /tmp/hexin_ca.pem

# 导出身份为 PKCS12(会弹出系统对话框,点击"始终允许")
security export -k ~/Library/Keychains/login.keychain-db -t identities -f pkcs12 -P "temppass" -o /tmp/client_cert.p12

# 从 PKCS12 提取个人证书+私钥
python3 scripts/extract_cert.py --email <your_email> --p12 /tmp/client_cert.p12 --output /tmp/my_cert.pem
Confidence
98% confidence
Finding
Keychain

Credential Access

High
Category
Privilege Escalation
Content
security add-trusted-cert -r trustRoot -k ~/Library/Keychains/login.keychain-db /tmp/hexin_ca.pem

# 导出身份为 PKCS12(会弹出系统对话框,点击"始终允许")
security export -k ~/Library/Keychains/login.keychain-db -t identities -f pkcs12 -P "temppass" -o /tmp/client_cert.p12

# 从 PKCS12 提取个人证书+私钥
python3 scripts/extract_cert.py --email <your_email> --p12 /tmp/client_cert.p12 --output /tmp/my_cert.pem
Confidence
98% confidence
Finding
keychain

Credential Access

High
Category
Privilege Escalation
Content
前置条件:
  1. HexinCA 已添加为受信任根证书:
     security find-certificate -c "HexinCA" -p > /tmp/hexin_ca.pem
     security add-trusted-cert -r trustRoot -k ~/Library/Keychains/login.keychain-db /tmp/hexin_ca.pem
  2. 已从 Keychain 导出 PKCS12 (需要用户在系统弹窗中点击"始终允许"):
     security export -k ~/Library/Keychains/login.keychain-db -t identities -f pkcs12 -P "temppass" -o /tmp/client_cert.p12
Confidence
99% confidence
Finding
Keychain

Credential Access

High
Category
Privilege Escalation
Content
前置条件:
  1. HexinCA 已添加为受信任根证书:
     security find-certificate -c "HexinCA" -p > /tmp/hexin_ca.pem
     security add-trusted-cert -r trustRoot -k ~/Library/Keychains/login.keychain-db /tmp/hexin_ca.pem
  2. 已从 Keychain 导出 PKCS12 (需要用户在系统弹窗中点击"始终允许"):
     security export -k ~/Library/Keychains/login.keychain-db -t identities -f pkcs12 -P "temppass" -o /tmp/client_cert.p12
Confidence
99% confidence
Finding
keychain

Credential Access

High
Category
Privilege Escalation
Content
1. HexinCA 已添加为受信任根证书:
     security find-certificate -c "HexinCA" -p > /tmp/hexin_ca.pem
     security add-trusted-cert -r trustRoot -k ~/Library/Keychains/login.keychain-db /tmp/hexin_ca.pem
  2. 已从 Keychain 导出 PKCS12 (需要用户在系统弹窗中点击"始终允许"):
     security export -k ~/Library/Keychains/login.keychain-db -t identities -f pkcs12 -P "temppass" -o /tmp/client_cert.p12

用法: python3 extract_cert.py [--email <email>] [--p12 <path>] [--output <path>]
Confidence
98% confidence
Finding
Keychain

Credential Access

High
Category
Privilege Escalation
Content
security find-certificate -c "HexinCA" -p > /tmp/hexin_ca.pem
     security add-trusted-cert -r trustRoot -k ~/Library/Keychains/login.keychain-db /tmp/hexin_ca.pem
  2. 已从 Keychain 导出 PKCS12 (需要用户在系统弹窗中点击"始终允许"):
     security export -k ~/Library/Keychains/login.keychain-db -t identities -f pkcs12 -P "temppass" -o /tmp/client_cert.p12

用法: python3 extract_cert.py [--email <email>] [--p12 <path>] [--output <path>]
示例: python3 extract_cert.py --email <你的邮箱>@myhexin.com --p12 /tmp/client_cert.p12 --output /tmp/my_cert.pem
Confidence
99% confidence
Finding
Keychain

Credential Access

High
Category
Privilege Escalation
Content
security find-certificate -c "HexinCA" -p > /tmp/hexin_ca.pem
     security add-trusted-cert -r trustRoot -k ~/Library/Keychains/login.keychain-db /tmp/hexin_ca.pem
  2. 已从 Keychain 导出 PKCS12 (需要用户在系统弹窗中点击"始终允许"):
     security export -k ~/Library/Keychains/login.keychain-db -t identities -f pkcs12 -P "temppass" -o /tmp/client_cert.p12

用法: python3 extract_cert.py [--email <email>] [--p12 <path>] [--output <path>]
示例: python3 extract_cert.py --email <你的邮箱>@myhexin.com --p12 /tmp/client_cert.p12 --output /tmp/my_cert.pem
Confidence
99% confidence
Finding
keychain

Credential Access

High
Category
Privilege Escalation
Content
if not pem_data.strip():
    print(f"ERROR: 无法读取 PKCS12 文件 {PKCS12_FILE}")
    print("请先运行:")
    print(f'  security export -k ~/Library/Keychains/login.keychain-db -t identities -f pkcs12 -P "{PKCS12_PASS}" -o {PKCS12_FILE}')
    sys.exit(1)

# Split into individual PEM blocks
Confidence
98% confidence
Finding
Keychain

Credential Access

High
Category
Privilege Escalation
Content
if not pem_data.strip():
    print(f"ERROR: 无法读取 PKCS12 文件 {PKCS12_FILE}")
    print("请先运行:")
    print(f'  security export -k ~/Library/Keychains/login.keychain-db -t identities -f pkcs12 -P "{PKCS12_PASS}" -o {PKCS12_FILE}')
    sys.exit(1)

# Split into individual PEM blocks
Confidence
98% confidence
Finding
keychain

VirusTotal

VirusTotal findings are pending for this skill version.

View on VirusTotal

Static analysis

Detected: suspicious.exposed_secret_literal

File appears to expose a hardcoded API secret or token.

Critical
Code
suspicious.exposed_secret_literal
Location
references/auth_flow.md:38