build-zoom-team-chat-app

100Critical

The skill is critically insecure, exhibiting SQL injection, SSRF vulnerabilities, unconstrained network access, and insecure secret handling while failing to pin dependencies or declare necessary security capabilities.

Threat Analysis

AI Agent Traps ↗Scanned 6/30/2026
Content InjectionPerceptionclean
Semantic ManipulationReasoningclean
Cognitive StateMemory & Learning1 finding
SystemicMulti-Agent Dynamicsclean
Human-in-the-LoopHuman Overseerclean
HygienePackaging & Manifest6 findings

Skill Info

Nameanthropics/knowledge-work-plugins/build-zoom-team-chat-app
Registrygithub
Version4fc672a0eb8b
PURLpkg:github/anthropics/knowledge-work-plugins@4fc672a0eb8b?skill=build-zoom-team-chat-app
Stars22,195
Installs1,100

Install

This skill has been flagged as potentially malicious. Review the findings below before installing.
GitHub
GitHub
1,100 installs
Skills.sh
Skills.shDocs
npx skills add https://github.com/anthropics/knowledge-work-plugins

Assessments (5)

AI Agent Traps ↗
Environment secret flows to a network sink (JS/TS)criticaldata exfiltrationAML.T0025AML.T0024LLM02:2025

Environment secret flows to a network sink (JS/TS)

95% confidenceline 27
taint source (line 27): process.env.ZOOM_BOT_JID → sink: fetch('https://api.zoom.us/v2/im/chat/messages', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${accessToken}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    robot_jid: process.env.ZOOM_BOT_JID,
    to_jid: payload.toJid,           // From webhook
    account_id: payload.accountId,   // From webhook
    content: {
      head: {
        text: 'Build Notification',
        sub_head: { text: 'CI/CD Pipeline' }
      },
      body: [
        { type: 'message', text: 'Deployment successful!' },
        {
          type: 'fields',
          items: [
            { key: 'Branch', value: 'main' },
            { key: 'Commit', value: 'abc123' }
          ]
        },
        {
          type: 'actions',
          items: [
            { text: 'View Logs', value: 'view_logs', style: 'Primary' },
            { text: 'Dismiss', value: 'dismiss', style: 'Default' }
          ]
        }
      ]
    }
  })
})
Insecure webhook verification patternhighcommand executionAML.T0050AML.T0053AML.T0072LLM05:2025LLM06:2025

The provided webhook verification example uses string concatenation for the message payload, which can lead to signature bypass if the JSON serialization is non-deterministic or if the input is manipulated. [severity raised to high: this vector is independently flagged by both deterministic and LLM analysis (ADR-0065 corroboration).]

85% confidenceline 348
const message = `v0:${req.headers['x-zm-request-timestamp']}:${JSON.stringify(req.body)}`;
Credential exposure via documentationlowcredential theftAML.T0055AML.T0037LLM02:2025

The skill encourages users to manage multiple sensitive credentials (Client Secret, Secret Token, Bot JID) in environment variables, which are often logged or exposed in CI/CD environments if not handled with strict secret management.

70% confidence
Required Credentials table in SKILL.md
Outbound network request primitive in skill code — can transmit data externallylowdata exfiltrationAML.T0025AML.T0024LLM02:2025

Outbound network request primitive in skill code — can transmit data externally

95% confidenceline 5
fetch('https://api.zoom.us/v2/chat/users/me/messages', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${accessToken}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    message: 'Hello from CI/CD pipeline!',
    to_channel: 'CHANNEL_ID'
  })
})
Outbound network request primitive in skill code — can transmit data externallylowdata exfiltrationAML.T0025AML.T0024LLM02:2025

Outbound network request primitive in skill code — can transmit data externally (seen 2 times in this file at lines 7, 20)

95% confidenceline 7
fetch('https://zoom.us/oauth/token', {
    method: 'POST',
    headers: {
      'Authorization': `Basic ${credentials}`,
      'Content-Type': 'application/x-www-form-urlencoded'
    },
    body: 'grant_type=client_credentials'
  })
User input is used to construct a URL for a server-side HTTP request. This could allow an attacker to make requests to internal services or cloud metadata endpoints (Server-Side Request Forgery). Validate URLs against an allowlist of permitted hosts and schemes.lowvulnAML.T0053AML.T0049LLM06:2025LLM05:2025

User input is used to construct a URL for a server-side HTTP request. This could allow an attacker to make requests to internal services or cloud metadata endpoints (Server-Side Request Forgery). Validate URLs against an allowlist of permitted hosts and schemes.

95% confidenceline 27
taint source (line 27): process.env.ZOOM_BOT_JID → sink: fetch('https://api.zoom.us/v2/im/chat/messages', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${accessToken}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    robot_jid: process.env.ZOOM_BOT_JID,
    to_jid: payload.toJid,           // From webhook
    account_id: payload.accountId,   // From webhook
    content: {
      head: {
        text: 'Build Notification',
        sub_head: { text: 'CI/CD Pipeline' }
      },
      body: [
        { type: 'message', text: 'Deployment successful!' },
        {
          type: 'fields',
          items: [
            { key: 'Branch', value: 'main' },
            { key: 'Commit', value: 'abc123' }
          ]
        },
        {
          type: 'actions',
          items: [
            { text: 'View Logs', value: 'view_logs', style: 'Primary' },
            { text: 'Dismiss', value: 'dismiss', style: 'Default' }
          ]
        }
      ]
    }
  })
})
Outbound network request primitive in skill code — can transmit data externallylowdata exfiltrationAML.T0025AML.T0024LLM02:2025

Outbound network request primitive in skill code — can transmit data externally

95% confidenceline 2
fetch('https://api.zoom.us/v2/chat/users/me/messages', {
  method: 'POST',
  headers: { 'Authorization': `Bearer ${token}` },
  body: JSON.stringify({
    message: 'Hello!',
    to_channel: 'CHANNEL_ID'
  })
})
User-controlled input is concatenated into a SQL query string. This allows SQL injection where an attacker can modify the query structure. Use parameterized queries with placeholders ($1, ?) instead of string concatenation.criticalvulnAML.T0011.000LLM03:2025

User-controlled input is concatenated into a SQL query string. This allows SQL injection where an attacker can modify the query structure. Use parameterized queries with placeholders ($1, ?) instead of string concatenation.

95% confidenceline 4
taint source (line 2): req.headers['x-zm-request-timestamp'] → sink: message
Global/unverified dependency execution — global npm/yarn package, dotnet tool, or auto-confirmed npx run without version or integrity pinningmediumsupply chainAML.T0010AML.T0019AML.T0058LLM03:2025

Global/unverified dependency execution — global npm/yarn package, dotnet tool, or auto-confirmed npx run without version or integrity pinning

95% confidenceline 362
npm install -g
Missing allowed-tools declarationlowunauthorized tool useAML.T0053LLM06:2025

Skill executes commands, writes files, or accesses the network but declares no allowed-tools, so its tool surface cannot be reviewed or constrained.

90% confidence
Undeclared network usagelowunauthorized tool useAML.T0053LLM06:2025

Skill contains network access patterns (HTTP requests, socket connections) without declaring network capability in allowed-tools.

60% confidence
Referenced file missing from skill packagelowpolicy violation

SKILL.md links to "concepts/api-selection.md" but the file is not part of the skill package — the workflow silently degrades or the content is sourced elsewhere at runtime

90% confidence
[Choose Your API](concepts/api-selection.md)
Referenced file missing from skill packagelowpolicy violation

SKILL.md links to "concepts/environment-setup.md" but the file is not part of the skill package — the workflow silently degrades or the content is sourced elsewhere at runtime

90% confidence
[Environment Setup](concepts/environment-setup.md)
Referenced file missing from skill packagelowpolicy violation

SKILL.md links to "examples/oauth-setup.md" but the file is not part of the skill package — the workflow silently degrades or the content is sourced elsewhere at runtime

90% confidence
[OAuth Setup](examples/oauth-setup.md)
Referenced file missing from skill packagelowpolicy violation

SKILL.md links to "examples/send-message.md" but the file is not part of the skill package — the workflow silently degrades or the content is sourced elsewhere at runtime

90% confidence
[Send First Message](examples/send-message.md)
Referenced file missing from skill packagelowpolicy violation

SKILL.md links to "get-started.md" but the file is not part of the skill package — the workflow silently degrades or the content is sourced elsewhere at runtime

90% confidence
[Get Started](get-started.md)
Missing licenseinfopolicy violation

Skill does not specify a license field. Specifying a license helps users understand usage terms.

100% confidence

Badge

Skill Check badge
Markdown
[![Mondoo Skill Check](https://mondoo.com/ai-agent-security/api/badge/github/anthropics/knowledge-work-plugins/build-zoom-team-chat-app.svg)](https://mondoo.com/ai-agent-security/skills/github/anthropics/knowledge-work-plugins/build-zoom-team-chat-app)
HTML
<a href="https://mondoo.com/ai-agent-security/skills/github/anthropics/knowledge-work-plugins/build-zoom-team-chat-app"><img src="https://mondoo.com/ai-agent-security/api/badge/github/anthropics/knowledge-work-plugins/build-zoom-team-chat-app.svg" alt="Mondoo Skill Check" /></a>
Image URL
https://mondoo.com/ai-agent-security/api/badge/github/anthropics/knowledge-work-plugins/build-zoom-team-chat-app.svg

Secure your AI agents

Skills can read files, run commands, and access credentials. Mondoo helps organizations manage the security risks of AI agent skills across their entire fleet, discover and control Shadow AI usage.

  • Continuous scanning of skills across all registries
  • Policy enforcement before skills reach your agents
  • Integration with your existing security workflow

By submitting, you agree to our privacy policy.