Back to skill

Security audit

Dingtalk Csa

Security checks for vulnerabilities and agentic risk

Overview

This DingTalk storage skill is not deceptive, but it requests broad enterprise file access and includes unsafe credential and document-write examples that need review before installation.

Review before installing. Use a dedicated DingTalk app with only the minimum storage scopes needed, do not approve contact-directory permissions unless you explicitly need them, remove any token-printing commands, and only allow writes to disposable or approved folders with confirmation before overwrite operations.

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 (4)

T09 · Insecure Skill Coding Practices

Error
Location
PERMISSION_GUIDE.md:90
Finding
Access Token Exposed Through Terminal Output and Logs## Vulnerability Details **File Location**: `PERMISSION_GUIDE.md`, lines 90-96 **Vulnerability Type**: Sensitive credential disclosure **Risk Level**: High ### Vulnerable Code ```bash # 1. 获取 access_token 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\"}" | \ python3 -c "import json,sys; print(json.load(sys.stdin)['accessToken'])") echo "Token: $TOKEN" ``` ### Technical Analysis The verification instructions explicitly print the DingTalk access token to standard output. A bearer token authorizes requests based on possession alone, so it must be treated as a secret. Standard output may be retained in shell transcripts, CI/CD logs, agent conversation histories, terminal recordings, support bundles, or centralized logging systems. Although the token has a limited lifetime, disclosure creates an immediate opportunity for unauthorized API access. The JSON-processing pipeline shown here is not remote code execution: it sends an authentication request to DingTalk and parses the response with local Python. The security issue is the subsequent disclosure of the resulting token. ### Attack Path 1. An administrator follows the permission-verification instructions. 2. DingTalk returns an access token associated with the application's approved scopes. 3. `echo "Token: $TOKEN"` writes the complete bearer token to standard output. 4. The output is captured in an agent transcript, CI log, terminal recording, or support artifact. 5. A party with access to that output extracts the token. 6. Before expiration, that party submits DingTalk API requests using the `x-acs-dingtalk-access-token` header. ### Impact Assessment An attacker can exercise every DingTalk permission represented by the exposed token until it expires or is revoked. Depending on the application's approved scopes, this may inc ...[truncated 261 chars]
Remediation
## Remediation Suggestions - Remove `echo "Token: $TOKEN"` and never print the complete token. - Report only a non-sensitive status message such as `Access token acquired successfully`. - Configure command tracing so secret-bearing commands are not recorded; avoid `set -x` around authentication operations. - Redact bearer tokens from agent transcripts, CI output, diagnostics, and support bundles. - Keep tokens only in process memory or an appropriately protected secret store. - Limit token lifetime and approved application scopes, and rotate the AppSecret if token or credential disclosure is suspected.

T09 · Insecure Skill Coding Practices

Error
Location
PERMISSION_GUIDE.md:110
Finding
Destructive Document Overwrite Used as a Permission Test## Vulnerability Details **File Location**: `PERMISSION_GUIDE.md`, lines 110-115 **Vulnerability Type**: Unsafe destructive verification operation **Risk Level**: High ### Vulnerable Code ```bash # 4. 测试文档写入(验证 Storage.File.Write) echo "=== 测试文档写入 ===" curl -s -X POST "https://api.dingtalk.com/v1.0/doc/suites/documents/YOUR_DOC_ID/overwriteContent?operatorId=YOUR_UNION_ID" \ -H "x-acs-dingtalk-access-token: $TOKEN" \ -H 'Content-Type: application/json' \ -d '{"content": "# Test", "dataType": "markdown"}' | python3 -m json.tool ``` ### Technical Analysis The recommended permission test invokes `overwriteContent`, which replaces the entire content of the selected document. The instructions do not require the document to be disposable, confirm that it is inside the configured write allowlist, create a backup, or request user confirmation. This conflicts with the Skill's stated safety model, which requires write operations to be limited to preapproved folders. A placeholder does not prevent an operator or agent from substituting the identifier of an existing production document. ### Attack Path 1. An administrator attempts to verify `Storage.File.Write`. 2. The administrator or agent substitutes an existing document identifier for `YOUR_DOC_ID`. 3. The command calls the document-wide `overwriteContent` endpoint. 4. DingTalk replaces the existing document body with `# Test`. 5. Existing content is lost or requires restoration from version history or backup. An attacker who can influence the substituted document ID could deliberately direct the test at a sensitive document accessible to the application. ### Impact Assessment The operation can alter or destroy the complete contents of any document that the token and specified operator are authorized to modify. The affected scope is not constrained by the documentation's nominal write-path allowlist because the example performs no allowlist validation. Cons ...[truncated 123 chars]
Remediation
## Remediation Suggestions - Do not use a document-wide overwrite operation as a general permission test. - Create a new disposable test document inside a dedicated, preapproved test folder and delete or archive it after verification. - Validate the target `spaceId`, parent folder, and document path against `ALLOWED_WRITE_PATHS` before every write. - Require explicit user confirmation before any overwrite operation. - Prefer a non-mutating permission or metadata query when the API provides one. - If a write is required, append a uniquely marked test entry rather than replacing existing content. - Document backup and recovery procedures and verify that version history is available before destructive operations.

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
references/permissions.md:28
Finding
Storage Setup Guide Encourages Unnecessary Contact-Directory Permissions## Vulnerability Details **File Location**: `references/permissions.md`, lines 28-55 **Vulnerability Type**: Excessive application permissions **Risk Level**: Medium ### Vulnerable Code ```markdown ### ❌ 待开通的权限 | # | 权限名称 | 权限标识 | 用途 | 优先级 | |---|---------|---------|------|--------| | 7 | 钉盘下载信息读 | Storage.DownloadInfo.Read | 下载文件到本地 | 🔴 高 | | 8 | 通讯录用户详情读 | qyapi_get_member | 获取用户详细信息 | 🟡 中 | | 9 | 通讯录部门列表读 | qyapi_get_department_list | 获取部门列表 | 🟡 中 | | 10 | 个人用户信息读 | Contact.User.Read | 新版API读取用户信息 | 🟡 中 | | 11 | 钉盘基础权限(旧版) | qyapi_cspace_base | 旧版自定义空间API | ⚪ 低 | ## 📝 开通流程 ### 方式一:一键申请链接(推荐) 直接访问以下链接,逐个点击申请: 1. **Storage.DownloadInfo.Read** https://open-dev.dingtalk.com/appscope/apply?content=YOUR_APP_KEY%23Storage.DownloadInfo.Read 2. **qyapi_get_member** https://open-dev.dingtalk.com/appscope/apply?content=YOUR_APP_KEY%23qyapi_get_member 3. **qyapi_get_department_list** https://open-dev.dingtalk.com/appscope/apply?content=YOUR_APP_KEY%23qyapi_get_department_list 4. **Contact.User.Read** https://open-dev.dingtalk.com/appscope/apply?content=YOUR_APP_KEY%23Contact.User.Read 5. **qyapi_cspace_base**(可选,旧版API) https://open-dev.dingtalk.com/appscope/apply?content=YOUR_APP_KEY%23qyapi_cspace_base ``` ### Technical Analysis The guide recommends applying for contact-directory scopes, including access to user details, department lists, and personal user information. These scopes are not required by the documented storage-space, file, document, upload, or download API workflows. Presenting these scopes in a recommended sequence encourages administrators to grant access beyond the Skill's principal storage functionality. This violates least-privilege design and broadens the effect of any AppSecret or access-token compromise. The legacy `qyapi_cspace_base` scope also should not be granted unless a specific legacy workflow requires it. ### Attack Path 1. An admin ...[truncated 888 chars]
Remediation
## Remediation Suggestions - Remove `qyapi_get_member`, `qyapi_get_department_list`, and `Contact.User.Read` from the standard storage setup. - Move directory access into a separate, explicitly opt-in feature section. - For each optional scope, document the exact feature, endpoint, returned data, and privacy implications. - Request a directory scope only when the user explicitly enables a workflow that requires it. - Do not recommend the legacy `qyapi_cspace_base` scope unless an identified legacy endpoint is actively used. - Periodically review and revoke unused scopes in the DingTalk administration console. - Use separate applications or credentials for storage and directory functions when practical to reduce the compromise radius.

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
references/permission-list-share.md:37
Finding
Administrator-Facing Checklist Recommends Excessive Directory Access## Vulnerability Details **File Location**: `references/permission-list-share.md`, lines 37-45 **Vulnerability Type**: Excessive application permissions **Risk Level**: Medium ### Vulnerable Code ```markdown ### 🟡 中优先级(建议开通) | # | 权限名称 | 权限标识 | 用途 | 一键申请链接 | |---|---------|---------|------|-------------| | 2 | 通讯录用户详情读 | qyapi_get_member | 获取用户手机号、邮箱等详细信息 | [点击申请](https://open-dev.dingtalk.com/appscope/apply?content=YOUR_APP_KEY%23qyapi_get_member) | | 3 | 通讯录部门列表读 | qyapi_get_department_list | 获取组织架构部门列表 | [点击申请](https://open-dev.dingtalk.com/appscope/apply?content=YOUR_APP_KEY%23qyapi_get_department_list) | ### ⚪ 低优先级(可选) | # | 权限名称 | 权限标识 | 用途 | 一键申请链接 | |---|---------|---------|------|-------------| | 4 | 企业钉盘基础权限 | qyapi_cspace_base | 旧版自定义空间API(新版API已覆盖大部分功能) | [点击申请](https://open-dev.dingtalk.com/appscope/apply?content=YOUR_APP_KEY%23qyapi_cspace_base) | ``` ### Technical Analysis The administrator-facing checklist recommends permissions that expose employee phone numbers, email addresses, department lists, and organizational structure even though the primary Skill workflows concern cloud storage and documents. Because this checklist is designed to be shared directly with administrators and includes one-click application links, it increases the likelihood that unnecessary scopes will be approved without feature-specific review. The legacy storage scope is also offered despite the document acknowledging that newer APIs cover most functions. Permissions should not be granted solely for possible compatibility. ### Attack Path 1. The checklist is sent to an enterprise administrator. 2. The administrator follows the suggested application links and approves the directory scopes. 3. The application receives access beyond what its normal storage operations require. 4. An attacker compromises the AppSecret or a bearer token. 5. The attacker queries contact or department data using the unnecessarily granted ...[truncated 383 chars]
Remediation
## Remediation Suggestions - Remove directory permissions from the default administrator checklist. - Provide separate checklists for core storage functionality and optional directory-integrated functionality. - Label optional permissions as disabled by default and require a documented business justification. - Explain that `qyapi_get_member` may expose phone numbers, email addresses, and other employee data. - Omit `qyapi_cspace_base` unless a verified legacy integration depends on it. - Require periodic scope review and revoke permissions that are not actively used. - Apply organizational approval and privacy review before enabling access to contact-directory data.
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
  • Rogue AgentSelf-Modification, Session Persistence
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
Findings (40)

External Script Fetching

High
Category
Supply Chain
Content
# 2. 测试空间列表(验证 Storage.Space.Read)
echo "=== 测试空间列表 ==="
curl -s -X GET "https://api.dingtalk.com/v1.0/drive/spaces?unionId=YOUR_UNION_ID&spaceType=org&maxResults=10" \
  -H "x-acs-dingtalk-access-token: $TOKEN" | python3 -m json.tool

# 3. 测试文件列表(验证 Storage.File.Read)
Confidence
90% confidence
Finding
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.

External Script Fetching

High
Category
Supply Chain
Content
# 3. 测试文件列表(验证 Storage.File.Read)
echo "=== 测试文件列表 ==="
curl -s -X POST "https://api.dingtalk.com/v1.0/storage/spaces/YOUR_SPACE_ID/dentries/listAll" \
  -H "x-acs-dingtalk-access-token: $TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"unionId": "YOUR_UNION_ID"}' | python3 -m json.tool
Confidence
90% confidence
Finding
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.

External Script Fetching

High
Category
Supply Chain
Content
# 4. 测试文档写入(验证 Storage.File.Write)
echo "=== 测试文档写入 ==="
curl -s -X POST "https://api.dingtalk.com/v1.0/doc/suites/documents/YOUR_DOC_ID/overwriteContent?operatorId=YOUR_UNION_ID" \
  -H "x-acs-dingtalk-access-token: $TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"content": "# Test", "dataType": "markdown"}' | python3 -m json.tool
Confidence
90% confidence
Finding
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.

Credential Access

High
Category
Privilege Escalation
Content
## 🔑 认证

所有 API 调用需要 access token,通过以下方式获取:

```bash
curl -X POST 'https://api.dingtalk.com/v1.0/oauth2/accessToken' \
Confidence
76% confidence
Finding
The skill requires obtaining and using a high-value access token backed by AppKey/AppSecret, while also declaring very broad read access ('read any accessible space'). Even though the document warns against hardcoding secrets, compromise or mishandling of the token would grant substantial access to enterprise files and documents, making credential handling a real security concern in this context.

External Script Fetching

High
Category
Supply Chain
Content
## Step 1: Get Upload Credentials

```bash
curl -X POST "https://api.dingtalk.com/v2.0/storage/spaces/files/{parentDentryUuid}/uploadInfos/query?unionId={unionId}" \
  -H "x-acs-dingtalk-access-token: {TOKEN}" \
  -H 'Content-Type: application/json' \
  -d '{
Confidence
90% confidence
Finding
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.

Self-Modification

High
Category
Rogue Agent
Content
**conflictStrategy options:**
- `AUTO_RENAME` - Auto rename if file exists (default)
- `OVERWRITE` - Overwrite existing file

**Returns:** File entry with `id`, `uuid`, `path`, `size`, etc.
Confidence
87% confidence
Finding
Documenting a mode that overwrites an existing remote file introduces a real destructive capability. In an automation or agent context, a user misunderstanding or prompt ambiguity could cause irreversible remote file replacement, making this more dangerous than static documentation in isolation.

External Transmission

Medium
Category
Data Exfiltration
Content
# 3. 测试文件列表(验证 Storage.File.Read)
echo "=== 测试文件列表 ==="
curl -s -X POST "https://api.dingtalk.com/v1.0/storage/spaces/YOUR_SPACE_ID/dentries/listAll" \
  -H "x-acs-dingtalk-access-token: $TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"unionId": "YOUR_UNION_ID"}' | python3 -m json.tool
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The guide tells users to verify write permissions by calling an overwriteContent endpoint against an existing document, which will modify live data if copied as written. In a storage-management skill context, destructive write examples are more dangerous because users are likely to run them verbatim against production tenant resources.

External Transmission

Medium
Category
Data Exfiltration
Content
# 4. 测试文档写入(验证 Storage.File.Write)
echo "=== 测试文档写入 ==="
curl -s -X POST "https://api.dingtalk.com/v1.0/doc/suites/documents/YOUR_DOC_ID/overwriteContent?operatorId=YOUR_UNION_ID" \
  -H "x-acs-dingtalk-access-token: $TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"content": "# Test", "dataType": "markdown"}' | python3 -m json.tool
Confidence
80% confidence
Finding
Although the domain is legitimate, this line directs users to a remote overwriteContent API that changes document data. The danger in context comes from encouraging authenticated destructive writes during verification, which can overwrite real business documents.

External Transmission

Medium
Category
Data Exfiltration
Content
# 4. 测试文档写入(验证 Storage.File.Write)
echo "=== 测试文档写入 ==="
curl -s -X POST "https://api.dingtalk.com/v1.0/doc/suites/documents/YOUR_DOC_ID/overwriteContent?operatorId=YOUR_UNION_ID" \
  -H "x-acs-dingtalk-access-token: $TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"content": "# Test", "dataType": "markdown"}' | python3 -m json.tool
Confidence
80% confidence
Finding
Although the domain is legitimate, this line directs users to a remote overwriteContent API that changes document data. The danger in context comes from encouraging authenticated destructive writes during verification, which can overwrite real business documents.

Vague Triggers

Medium
Confidence
94% confidence
Finding
The skill description and trigger phrases are broad enough to activate on loosely related requests such as generic file analysis, report generation, or team collaboration. Because this skill can read any accessible DingTalk space and perform some writes, over-triggering could expose unrelated enterprise files or cause unintended actions in a sensitive storage context.

External Transmission

Medium
Category
Data Exfiltration
Content
所有 API 调用需要 access token,通过以下方式获取:

```bash
curl -X POST 'https://api.dingtalk.com/v1.0/oauth2/accessToken' \
  -H 'Content-Type: application/json' \
  -d '{"appKey": "'"$DINGTALK_APP_KEY"'", "appSecret": "'"$DINGTALK_APP_SECRET"'"}'
```
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
```bash
# 覆写整个文档(Markdown格式)
curl -X POST "https://api.dingtalk.com/v1.0/doc/suites/documents/{documentId}/overwriteContent?operatorId=<unionId>" \
  -H "x-acs-dingtalk-access-token: <TOKEN>" \
  -H 'Content-Type: application/json' \
  -d '{"content": "# Markdown Content", "dataType": "markdown"}'
Confidence
72% confidence
Finding
This endpoint performs document overwrite operations against an external service. In this skill, the documented security model says writes are limited by a whitelist, but the file only states that writes 'must' be checked and does not define any enforcement mechanism, so a triggered skill could overwrite remote documents if implementation-side checks are absent or weak.

External Transmission

Medium
Category
Data Exfiltration
Content
-d '{"content": "# Markdown Content", "dataType": "markdown"}'

# 追加内容到文档
curl -X POST "https://api.dingtalk.com/v1.0/doc/suites/documents/{documentId}/content?operatorId=<unionId>" \
  -H "x-acs-dingtalk-access-token: <TOKEN>" \
  -H 'Content-Type: application/json' \
  -d '{"content": {"type": "markdown", "content": "## New Section"}}'
Confidence
69% confidence
Finding
Appending content to external documents is a write-capable transmission that can modify enterprise records. Because the skill advertises broad read access and only policy-level write restrictions, insufficient enforcement could let an unintended activation alter remote documents in authorized tenants.

External Transmission

Medium
Category
Data Exfiltration
Content
### 5. 创建文件夹(写 ⚠️ 检查白名单)

```bash
curl -X POST "https://api.dingtalk.com/v1.0/storage/spaces/{spaceId}/dentries/{parentId}/folders" \
  -H "x-acs-dingtalk-access-token: <TOKEN>" \
  -H 'Content-Type: application/json' \
  -d '{"unionId": "<unionId>", "name": "New Folder"}'
Confidence
74% confidence
Finding
Creating folders in remote storage changes external state and can be abused for persistence, staging, or cluttering approved spaces if activation is too permissive. The risk is heightened because the skill permits reading any accessible space while relying on a documented whitelist for writes without showing technical enforcement.

External Transmission

Medium
Category
Data Exfiltration
Content
APP_KEY="${DINGTALK_APP_KEY}"
APP_SECRET="${DINGTALK_APP_SECRET}"

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\"}" | \
  python3 -c "import json,sys; print(json.load(sys.stdin)['accessToken'])")
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
APP_KEY="${DINGTALK_APP_KEY}"
APP_SECRET="${DINGTALK_APP_SECRET}"

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\"}" | \
  python3 -c "import json,sys; print(json.load(sys.stdin)['accessToken'])")
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
python3 -c "import json,sys; print(json.load(sys.stdin)['accessToken'])")

# 测试下载权限
curl -X POST "https://api.dingtalk.com/v1.0/storage/spaces/{spaceId}/dentries/{dentryId}/downloadInfos/query?unionId={unionId}" \
  -H "x-acs-dingtalk-access-token: $TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"option": {"version": 1}}'
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
```bash
# 获取token后测试
curl -s -X POST "https://api.dingtalk.com/v1.0/storage/spaces/{spaceId}/dentries/{dentryId}/downloadInfos/query" \
  -H "x-acs-dingtalk-access-token: $TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"unionId": "YOUR_UNION_ID"}'
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
This markdown file documents a workflow that sends local file data to OSS and uses DingTalk access tokens, but it does not include any user-facing warning about privacy, data exposure, or handling sensitive files. Under the markdown criteria for SQP-2, operations affecting user data or privacy should be disclosed in the skill description.

External Transmission

Medium
Category
Data Exfiltration
Content
## Step 1: Get Upload Credentials

```bash
curl -X POST "https://api.dingtalk.com/v2.0/storage/spaces/files/{parentDentryUuid}/uploadInfos/query?unionId={unionId}" \
  -H "x-acs-dingtalk-access-token: {TOKEN}" \
  -H 'Content-Type: application/json' \
  -d '{
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
## Step 1: Get Upload Credentials

```bash
curl -X POST "https://api.dingtalk.com/v2.0/storage/spaces/files/{parentDentryUuid}/uploadInfos/query?unionId={unionId}" \
  -H "x-acs-dingtalk-access-token: {TOKEN}" \
  -H 'Content-Type: application/json' \
  -d '{
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
## Step 1: Get Upload Credentials

```bash
curl -X POST "https://api.dingtalk.com/v2.0/storage/spaces/files/{parentDentryUuid}/uploadInfos/query?unionId={unionId}" \
  -H "x-acs-dingtalk-access-token: {TOKEN}" \
  -H 'Content-Type: application/json' \
  -d '{
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
## Step 1: Get Upload Credentials

```bash
curl -X POST "https://api.dingtalk.com/v2.0/storage/spaces/files/{parentDentryUuid}/uploadInfos/query?unionId={unionId}" \
  -H "x-acs-dingtalk-access-token: {TOKEN}" \
  -H 'Content-Type: application/json' \
  -d '{
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
## Step 1: Get Upload Credentials

```bash
curl -X POST "https://api.dingtalk.com/v2.0/storage/spaces/files/{parentDentryUuid}/uploadInfos/query?unionId={unionId}" \
  -H "x-acs-dingtalk-access-token: {TOKEN}" \
  -H 'Content-Type: application/json' \
  -d '{
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Static analysis

Detected: suspicious.generated_source_template_injection

User-controlled placeholder is embedded directly into generated source code.

Critical
Code
suspicious.generated_source_template_injection
Location
references/permission-list-share.md:80