Back to skill

Security audit

ZohoProject

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly a Zoho Projects API helper, but it asks for broad credentials and includes risky write/delete operations without enough scoping or warnings.

Review before installing. Use the narrowest Zoho OAuth scopes available, omit bug-management scope unless you truly need it, avoid storing tokens in shared plaintext config, validate ZOHO_DC against official Zoho domains, and require explicit user confirmation before any task deletion or other destructive write.

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

Error
Location
SKILL.md:55
Finding

OAuth Credentials Can Be Sent to an Untrusted Host Through ZOHO_DC

Content
View full analysis
Remediation
View remediation
&2; exit 1 ;; esac ``` ]]>

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
SKILL.md:31
Finding

OAuth Setup Requests Permissions Beyond the Skill's Declared Functionality

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (8)

Credential Access

High
Category
Privilege Escalation
Confidence
90% confidence
Finding

The skill instructs storing a refreshed access token into persistent local configuration, which increases credential exposure and persistence risk. If that config store is accessible to other skills, users, logs, or backups, a stolen token could be reused to access and modify Zoho Projects data.

Content

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

Authorization: Zoho-oauthtoken $ZOHO_ACCESS_TOKEN

text

Access tokens expire **hourly**. If you get a 401, tell the user their token has expired and they need to refresh it using their refresh token (see Setup below). Store the refreshed token with:
```bash
openclaw config set skills.entries.zoho-projects.apiKey NEW_TOKEN

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

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

md
| Variable | Description |
|---|---|
| `ZOHO_ACCESS_TOKEN` | OAuth2 access token from Zoho (expires hourly) |
| `ZOHO_PORTAL_ID` | Your portal ID (get it from the List Portals call below) |
| `ZOHO_REFRESH_TOKEN` | (optional) Stored refresh token for auto-renewal |
| `ZOHO_CLIENT_ID` | (optional) OAuth client ID for token refresh |

External Script Fetching

High
Category
Supply Chain
Confidence
90% confidence
Finding

Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.

Content

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

List tasks in a project

bash
curl -s "https://projectsapi.zoho.com/api/v3/portal/$ZOHO_PORTAL_ID/projects/$PROJECT_ID/tasks" \
  -H "Authorization: Zoho-oauthtoken $ZOHO_ACCESS_TOKEN"

Optional: ?status=open&sort_column=due_date&sort_order=asc

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% 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 · SKILL.md (reported line 41)May include surrounding context.

  1. Generate a grant token (duration: 10 minutes is fine for initial setup)
  2. Exchange it for access + refresh tokens:
bash
curl -X POST "https://accounts.zoho.com/oauth/v2/token" \
  -d "grant_type=authorization_code" \
  -d "client_id=$ZOHO_CLIENT_ID" \
  -d "client_secret=$ZOHO_CLIENT_SECRET" \

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The manifest description at L003 says the skill manages Zoho Projects by listing portals/projects and handling tasks, comments, time logs, milestones, and task lists, but it does not claim project creation or project modification. The file documents POST and PATCH operations for projects, which are materially broader write capabilities than the stated description.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% 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 · SKILL.md (reported line 125)May include surrounding context.

List tasks in a project

bash
curl -s "https://projectsapi.zoho.com/api/v3/portal/$ZOHO_PORTAL_ID/projects/$PROJECT_ID/tasks" \
  -H "Authorization: Zoho-oauthtoken $ZOHO_ACCESS_TOKEN"

Optional: ?status=open&sort_column=due_date&sort_order=asc

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill exposes destructive task deletion that is not disclosed in the manifest description, increasing the chance a user or higher-level agent invokes a destructive action without informed consent. Hidden destructive capabilities are dangerous because they expand the operational surface beyond what an operator may expect.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The deletion command is destructive and the documentation does not warn that it may permanently remove project data. Without an explicit warning or confirmation requirement, accidental deletion becomes more likely, especially in an agent-driven workflow.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.