Dingtalk File Send

Security checks across malware telemetry and agentic risk

Overview

This skill is a DingTalk file-sending helper that does what it claims, but users should verify the file, account, and recipient before use.

Install only if you want the agent to send local files through DingTalk using configured DingTalk credentials. Before each use, confirm the exact file path, the DingTalk account binding, and the recipient user ID, especially for confidential documents.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (9)

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The skill is explicitly designed to upload local files and send them, along with recipient identifiers, to DingTalk, but the user-facing guidance does not clearly warn about that external transmission. This creates a meaningful consent and data-handling risk because users may trigger the skill without understanding that local content and metadata leave the machine and are stored/processed by a third-party service.

External Transmission

Medium
Category
Data Exfiltration
Content
### Step 2: Get Access Token

```bash
ACCESS_TOKEN=$(curl -s -X POST "https://api.dingtalk.com/v1.0/oauth2/accessToken" \
  -H "Content-Type: application/json" \
  -d "{\"appKey\":\"$APP_KEY\",\"appSecret\":\"$APP_SECRET\"}" | jq -r '.accessToken')
Confidence
96% confidence
Finding
curl -s -X POST "https://api.dingtalk.com/v1.0/oauth2/accessToken" \ -H "Content-Type: application/json" \ -d

External Transmission

Medium
Category
Data Exfiltration
Content
userIds: [$userId]
  }')

SEND_RESULT=$(curl -s -X POST "https://api.dingtalk.com/v1.0/robot/oToMessages/batchSend" \
  -H "Content-Type: application/json" \
  -H "x-acs-dingtalk-access-token: $ACCESS_TOKEN" \
  -d "$PAYLOAD")
Confidence
98% confidence
Finding
curl -s -X POST "https://api.dingtalk.com/v1.0/robot/oToMessages/batchSend" \ -H "Content-Type: application/json" \ -H "x-acs-dingtalk-access-token: $ACCESS_TOKEN" \ -d

External Transmission

Medium
Category
Data Exfiltration
Content
FILE_EXT="${FILE_NAME##*.}"

# Get access token
ACCESS_TOKEN=$(curl -s -X POST "https://api.dingtalk.com/v1.0/oauth2/accessToken" \
  -H "Content-Type: application/json" \
  -d "{\"appKey\":\"$APP_KEY\",\"appSecret\":\"$APP_SECRET\"}" | jq -r '.accessToken')
Confidence
96% confidence
Finding
curl -s -X POST "https://api.dingtalk.com/v1.0/oauth2/accessToken" \ -H "Content-Type: application/json" \ -d

External Transmission

Medium
Category
Data Exfiltration
Content
--arg userId "$USER_ID" \
  '{robotCode:$robotCode,msgKey:$msgKey,msgParam:({mediaId:$mediaId,fileName:$fileName,fileType:$fileType}|tojson),userIds:[$userId]}')

SEND_RESULT=$(curl -s -X POST "https://api.dingtalk.com/v1.0/robot/oToMessages/batchSend" \
  -H "Content-Type: application/json" \
  -H "x-acs-dingtalk-access-token: $ACCESS_TOKEN" \
  -d "$PAYLOAD")
Confidence
98% confidence
Finding
curl -s -X POST "https://api.dingtalk.com/v1.0/robot/oToMessages/batchSend" \ -H "Content-Type: application/json" \ -H "x-acs-dingtalk-access-token: $ACCESS_TOKEN" \ -d

External Transmission

Medium
Category
Data Exfiltration
Content
### Step 2: Get Access Token

```bash
ACCESS_TOKEN=$(curl -s -X POST "https://api.dingtalk.com/v1.0/oauth2/accessToken" \
  -H "Content-Type: application/json" \
  -d "{\"appKey\":\"$APP_KEY\",\"appSecret\":\"$APP_SECRET\"}" | jq -r '.accessToken')
Confidence
96% confidence
Finding
https://api.dingtalk.com/

External Transmission

Medium
Category
Data Exfiltration
Content
userIds: [$userId]
  }')

SEND_RESULT=$(curl -s -X POST "https://api.dingtalk.com/v1.0/robot/oToMessages/batchSend" \
  -H "Content-Type: application/json" \
  -H "x-acs-dingtalk-access-token: $ACCESS_TOKEN" \
  -d "$PAYLOAD")
Confidence
98% confidence
Finding
https://api.dingtalk.com/

External Transmission

Medium
Category
Data Exfiltration
Content
FILE_EXT="${FILE_NAME##*.}"

# Get access token
ACCESS_TOKEN=$(curl -s -X POST "https://api.dingtalk.com/v1.0/oauth2/accessToken" \
  -H "Content-Type: application/json" \
  -d "{\"appKey\":\"$APP_KEY\",\"appSecret\":\"$APP_SECRET\"}" | jq -r '.accessToken')
Confidence
96% confidence
Finding
https://api.dingtalk.com/

External Transmission

Medium
Category
Data Exfiltration
Content
--arg userId "$USER_ID" \
  '{robotCode:$robotCode,msgKey:$msgKey,msgParam:({mediaId:$mediaId,fileName:$fileName,fileType:$fileType}|tojson),userIds:[$userId]}')

SEND_RESULT=$(curl -s -X POST "https://api.dingtalk.com/v1.0/robot/oToMessages/batchSend" \
  -H "Content-Type: application/json" \
  -H "x-acs-dingtalk-access-token: $ACCESS_TOKEN" \
  -d "$PAYLOAD")
Confidence
98% confidence
Finding
https://api.dingtalk.com/

VirusTotal

66/66 vendors flagged this skill as clean.

View on VirusTotal