Back to skill

Security audit

通义晓蜜 - 智能外呼

Security checks for vulnerabilities and agentic risk

Overview

The skill matches its outbound-calling purpose, but it handles real phone campaigns, cloud credentials, and personal contact data with logging and environment-file behavior that users should review carefully.

Install only if you are comfortable giving the skill Alibaba Cloud OutboundBot authority to create resources and place real outbound calls. Use least-privileged credentials, run it from a clean directory without unrelated .env files, confirm every call list before execution, and avoid passing full CRM or candidate records in metadata unless logs are protected and redacted.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • 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
Findings (2)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/bundle.js:83320
Finding

Sensitive recipient and CRM data is exposed in process output

Content
View full analysis
{ console.log("\n\u2705 \u4EFB\u52A1\u6267\u884C\u6210\u529F"); console.log("\n\u7ED3\u679C:"); console.log(JSON.stringify(result, null, 2)); process.exit(0); }).catch((error) => { console.error("\n\u274C \u4EFB\u52A1\u6267\u884C\u5931\u8D25:", error.message); process.exit(1); }); ``` ### Technical Analysis The returned `taskInput` contains complete telephone numbers and may contain candidate names, evaluation scores, CRM attributes, campaign data, and arbitrary caller-supplied metadata. Serializing the complete result with `JSON.stringify` writes all of this data to standard output without redaction or field-level filtering. Standard output is commonly retained by CI systems, agent execution transcripts, container logging drivers, orchestration platforms, terminal recording systems, and centralized monitoring services. These systems may have wider access permissions and longer retention periods than the original task data. The exposure is not limited to telephone numbers because the parsing logic preserves full source objects under fields such as `metadata.candidates` and spreads arbitrary metadata into the task object. ### Attack Path ...[truncated 1362 chars]
Remediation
View remediation

T05 · Unauthorized Access and Privilege Escalation

Note
Location
scripts/bundle.js:82686
Finding

Automatic environment-file discovery reads configuration outside the Skill directory

Content
View full analysis
Remediation
View remediation
` rather than searching parent directories. 3. Restrict automatic loading to a fixed file within the Skill root. Resolve the canonical path and verify that it remains inside the expected directory before reading it. 4. Parse only the required keys instead of importing an entire file: - `ALIYUN_OUTBOUND_BOT_ACCESS_KEY_ID` - `ALIYUN_OUTBOUND_BOT_ACCESS_KEY_SECRET` 5. Reject symbolic links or paths that resolve outside the approved configuration directory. 6. Avoid logging the full environment-file path where workspace layout is considered sensitive. 7. Add tests that execute the Skill beneath a parent directory containing an unrelated `.env` file and verify that the parent file is not read. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • YARA SignaturesMalware Match, Webshell Match, Cryptominer Match
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (37)

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The most serious mismatch is the apparent ability to read cloud credentials from environment and local files, query the ECS metadata service at 100.100.100.200 for role credentials, make arbitrary credential-refresh network requests, enumerate local network identifiers, and perform AES operations. In a skill advertised merely as outbound calling, these capabilities are highly sensitive because they can enable credential theft, lateral movement, host fingerprinting, and stealthy data handling far beyond the stated task.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The most serious mismatch is the apparent ability to read cloud credentials from environment and local files, query the ECS metadata service at 100.100.100.200 for role credentials, make arbitrary credential-refresh network requests, enumerate local network identifiers, and perform AES operations. In a skill advertised merely as outbound calling, these capabilities are highly sensitive because they can enable credential theft, lateral movement, host fingerprinting, and stealthy data handling far beyond the stated task.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The most serious mismatch is the apparent ability to read cloud credentials from environment and local files, query the ECS metadata service at 100.100.100.200 for role credentials, make arbitrary credential-refresh network requests, enumerate local network identifiers, and perform AES operations. In a skill advertised merely as outbound calling, these capabilities are highly sensitive because they can enable credential theft, lateral movement, host fingerprinting, and stealthy data handling far beyond the stated task.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The most serious mismatch is the apparent ability to read cloud credentials from environment and local files, query the ECS metadata service at 100.100.100.200 for role credentials, make arbitrary credential-refresh network requests, enumerate local network identifiers, and perform AES operations. In a skill advertised merely as outbound calling, these capabilities are highly sensitive because they can enable credential theft, lateral movement, host fingerprinting, and stealthy data handling far beyond the stated task.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The most serious mismatch is the apparent ability to read cloud credentials from environment and local files, query the ECS metadata service at 100.100.100.200 for role credentials, make arbitrary credential-refresh network requests, enumerate local network identifiers, and perform AES operations. In a skill advertised merely as outbound calling, these capabilities are highly sensitive because they can enable credential theft, lateral movement, host fingerprinting, and stealthy data handling far beyond the stated task.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The most serious mismatch is the apparent ability to read cloud credentials from environment and local files, query the ECS metadata service at 100.100.100.200 for role credentials, make arbitrary credential-refresh network requests, enumerate local network identifiers, and perform AES operations. In a skill advertised merely as outbound calling, these capabilities are highly sensitive because they can enable credential theft, lateral movement, host fingerprinting, and stealthy data handling far beyond the stated task.

Content

No source excerpt is available for this finding.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 27)May include surrounding context.

md
node scripts/bundle.js taskInput.json

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 34)May include surrounding context.

md
node scripts/bundle.js taskInput.json

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 460)May include surrounding context.

md
node scripts/bundle.js taskInput.json

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 463)May include surrounding context.

md
node scripts/bundle.js taskInput.json

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 474)May include surrounding context.

md
node scripts/bundle.js taskInput.json

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 482)May include surrounding context.

md
node scripts/bundle.js taskInput.json

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 505)May include surrounding context.

md
node scripts/bundle.js taskInput.json

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 512)May include surrounding context.

md
node scripts/bundle.js taskInput.json

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 587)May include surrounding context.

md
node scripts/bundle.js taskInput.json

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 615)May include surrounding context.

md
node scripts/bundle.js taskInput.json

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 635)May include surrounding context.

md
node scripts/bundle.js taskInput.json

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 655)May include surrounding context.

md
node scripts/bundle.js taskInput.json

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 700)May include surrounding context.

md
node scripts/bundle.js taskInput.json

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 709)May include surrounding context.

md
node scripts/bundle.js taskInput.json

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 716)May include surrounding context.

md
node scripts/bundle.js taskInput.json

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 719)May include surrounding context.

md
node scripts/bundle.js taskInput.json

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 797)May include surrounding context.

md
node scripts/bundle.js taskInput.json

YARA rule 'agent_skill_mcp_tool_poisoning_metadata': MCP/tool metadata poisoning indicators in tool schemas or skill manifests [agent_skills]

High
Category
YARA Match
Confidence
80% confidence
Finding

YARA rule matched a hack tool or exploit indicator (offensive tools, reconnaissance, privilege escalation, or exploit frameworks).

Content

Scanner excerpt · scripts/bundle.js (reported line 1302)May include surrounding context.

js
_this;
        }
        return BaseError2;
      })(Error)
    );
    exports2.BaseError = BaseError;
    var ResponseError = (
      /** @class */
      (function(_super) {
        __extends(ResponseError2, _super);
        function ResponseError2(map) {
          var _this = _super.call(this, map) || this;
          _this.name = "ResponseError";
          _this.data = map.data;
          _this.description = map.description;
          _this.retryAfter = map.retryAfter;
          _this.accessDeniedDetail = map.accessDeniedDetail;
          if (_this.data && _this.data.statusCode) {
            _this.statusCode = Number(_this.data.statusCode);
          }
          return _this;
        }
        return ResponseError2;
      })(BaseError)
    );
    exports2.ResponseError = ResponseError;
    var UnretryableError = (
      /** @class */
      (function(_super) {
        __extends(UnretryableError2, _super);
        function UnretryableError2(message) {
          var _this = _super.call

Cloud Metadata Access

High
Category
Server-Side Request Forgery
Confidence
85% confidence
Finding

Code accesses a cloud instance metadata endpoint (e.g. 169.254.169.254). A single request can return temporary IAM credentials, making this a high-value SSRF target for credential theft.

Content

Scanner excerpt · scripts/bundle.js (reported line 20357)May include surrounding context.

js
var utils = __importStar(require_utils());
    var http_1 = require_http();
    var config_1 = __importDefault(require_config());
    var SECURITY_CRED_URL = "http://100.100.100.200/latest/meta-data/ram/security-credentials/";
    var RsaKeyPairCredential = class extends session_credential_1.default {
      constructor(publicKeyId, privateKeyFile) {
        if (!publicKeyId) {

Static analysis

No suspicious patterns detected.