Back to skill

Security audit

语音交互技能-feishu&qq-byLi

Security checks for vulnerabilities and agentic risk

Overview

The skill’s main Feishu voice features are coherent, but it includes unsafe install/runtime code and a manual repair script that can modify another OpenClaw extension.

Review before installing. Do not run fix-debug-leak.sh unless you intentionally want this package to alter a QQBot extension and have a tested backup. Prefer official dependency/model sources, avoid running installers as root, restrict .env permissions to 600, use least-privilege Feishu credentials, and treat TTS text/audio paths as unsafe until the Python heredoc interpolation bugs are fixed.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
Findings (6)

T03 · Remote Payload Retrieval and Execution

Error
Location
scripts/install.sh:127
Finding
Unverified Remote Shell Installer Download and Execution<![CDATA[ ## Vulnerability Details **File Location**: `scripts/install.sh:127-134`; duplicated in `scripts/install-with-model-choice.sh:127-134` **Vulnerability Type**: Remote payload retrieval and execution **Risk Level**: High ### Vulnerable Code ```bash UV_INSTALL_SCRIPT="/tmp/uv-install-$$.sh" if curl -LsSf https://astral.sh/uv/install.sh -o "$UV_INSTALL_SCRIPT"; then if head -1 "$UV_INSTALL_SCRIPT" | grep -qE '^#!(/bin/sh|/bin/bash|/usr/bin/env)'; then chmod +x "$UV_INSTALL_SCRIPT" if sh "$UV_INSTALL_SCRIPT"; then ``` ### Technical Analysis Both installers download a mutable shell script from an external URL and execute it without verifying a pinned cryptographic hash or publisher signature. Downloading the payload to a file instead of piping it directly to a shell does not eliminate the underlying supply-chain risk. The shebang check only confirms that the response superficially resembles a script. A malicious payload can include a valid shebang and then execute arbitrary commands. The remote installation of `uv` is ancillary dependency setup rather than a core part of voice processing. Automatically executing mutable remote code therefore grants more trust than is necessary. ### Attack Path 1. An attacker compromises the remote installation endpoint, its delivery infrastructure, or a relevant trust dependency. 2. The attacker returns a modified script beginning with an accepted shebang such as `#!/bin/sh`. 3. The installer downloads the script to `/tmp/uv-install-$$.sh`. 4. The shebang check succeeds. 5. `sh "$UV_INSTALL_SCRIPT"` executes the attacker's code. 6. The payload gains all privileges available to the user running the installer. If installation is performed as root, the payload executes with root privileges. ### Impact Assessment Successful exploitation permits arbitrary local command execution, persistence installation, credential theft, modification of OpenClaw components, and access to all files available to the ...[truncated 92 chars]
Remediation
<![CDATA[ ## Remediation Suggestions - Do not execute a mutable installation script fetched at runtime. - Prefer an operating-system package or a version-pinned release artifact. - Pin the exact `uv` version. - Verify the artifact using a hard-coded SHA-256 digest obtained through a trusted release process. - Where available, verify a publisher signature against a bundled trusted public key. - Download using a securely created temporary file, such as one returned by `mktemp`. - Abort installation if any integrity verification fails. - Apply the same remediation to both installer scripts. - Avoid instructing users to run the entire Skill installer as root. ]]>

T09 · Insecure Skill Coding Practices

Error
Location
scripts/tts-voice.sh:42
Finding
Python Code Injection Through TTS Text and Output Path Interpolation<![CDATA[ ## Vulnerability Details **File Location**: `scripts/tts-voice.sh:42-60` **Vulnerability Type**: Python code injection through an unquoted generated heredoc **Risk Level**: High ### Vulnerable Code ```bash "$VENV_PYTHON" << EOF import asyncio import edge_tts import sys import logging async def main(): TEXT = """$TEXT""" OUTPUT = "$OUTPUT" try: communicate = edge_tts.Communicate(TEXT, "zh-CN-XiaoxiaoNeural") await communicate.save(OUTPUT) print(OUTPUT, flush=True) ``` ### Technical Analysis The script embeds the first command-line argument and output path directly into generated Python source. Shell quoting applied when assigning `TEXT="$1"` does not make the later Python interpolation safe. A value containing Python string terminators can escape the intended string literal and introduce arbitrary Python statements. TTS text may originate from an AI response influenced by an external user, making the text field a realistic trust-boundary input. For example, a value following this structure can terminate the triple-quoted literal and introduce another statement: ```text abc"""; __import__("os").system("id > /tmp/tts-injection"); # ``` The output path is also inserted into a double-quoted Python string and can be abused if a caller controls it. ### Attack Path 1. An attacker supplies or influences text that will be passed to `tts-voice.sh`. 2. The text contains a triple-quote terminator followed by Python statements. 3. Bash expands `$TEXT` into the heredoc. 4. Python parses the expanded heredoc as source code rather than data. 5. The injected statement executes before or during TTS synthesis. 6. The attacker obtains command execution with the privileges of the OpenClaw or Skill process. ### Impact Assessment Exploitation can read Feishu credentials from the environment or `.env` file, access OpenClaw configuration, modify files writable by the Agent, execute network requests, and run arbitrary operati ...[truncated 134 chars]
Remediation
<![CDATA[ ## Remediation Suggestions - Use a quoted heredoc containing no variable interpolation: ```bash "$VENV_PYTHON" - "$TEXT" "$OUTPUT" <<'PY' import asyncio import sys import edge_tts text = sys.argv[1] output = sys.argv[2] async def main(): communicate = edge_tts.Communicate(text, "zh-CN-XiaoxiaoNeural") await communicate.save(output) asyncio.run(main()) PY ``` - Treat TTS text as untrusted even when it originates from an AI-generated response. - Validate the output path and restrict it to an approved temporary or output directory. - Use `tempfile` for automatically generated output files. - Add regression tests containing quotes, triple quotes, backslashes, newlines, and Python-like payloads. ]]>

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/fast-whisper-fast.sh:65
Finding
Python Code Injection Through Audio and Model Configuration Values<![CDATA[ ## Vulnerability Details **File Location**: `scripts/fast-whisper-fast.sh:65-84` **Vulnerability Type**: Python code injection through generated source **Risk Level**: Medium ### Vulnerable Code ```bash "$VENV_PYTHON" << EOF import sys import logging from faster_whisper import WhisperModel try: model = WhisperModel("$WHISPER_MODEL", device="cpu", compute_type="int8", download_root="$MODEL_DIR") segments, info = model.transcribe("$AUDIO_FILE", language="zh") for segment in segments: print(segment.text.strip(), flush=True) ``` ### Technical Analysis `WHISPER_MODEL`, `MODEL_DIR`, and `AUDIO_FILE` are inserted directly into Python string literals in an unquoted heredoc. A quote, newline, backslash sequence, or Python statement in any of these values can change the generated program. `WHISPER_MODEL` and `MODEL_DIR` may be loaded from `.env`, while `AUDIO_FILE` is supplied as a command-line argument. Although typical platform-generated media paths may not contain hostile syntax, the script itself accepts arbitrary existing paths and does not enforce a trusted base directory or safe filename policy. ### Attack Path 1. An attacker or compromised local integration creates an audio file whose path contains Python string-breaking syntax, or alters `.env` values such as `WHISPER_MODEL`. 2. The crafted path or configuration value passes the file-existence or configuration checks. 3. Bash interpolates the value into the Python heredoc. 4. The Python interpreter parses the injected content as executable source. 5. The injected code runs with the Skill process privileges. ### Impact Assessment An attacker able to control the relevant path or configuration can execute arbitrary commands, read environment credentials, alter model or Skill files, and access other resources available to the OpenClaw account. Exploitability is lower than the TTS issue because normal Feishu media handling may assign trusted filenames, but the standalone sc ...[truncated 30 chars]
Remediation
<![CDATA[ ## Remediation Suggestions - Use a quoted heredoc and pass all values through `sys.argv` or environment variables. - Do not construct Python source from paths or configuration values. - Validate `WHISPER_MODEL` against an explicit allowlist such as `tiny`, `base`, `small`, and `medium`. - Resolve and validate audio paths using `realpath`. - If only platform media files should be processed, require the resolved path to remain under an approved media directory. - Validate model and virtual-environment directories before use. - Add tests with filenames containing quotes, newlines, backslashes, and shell or Python metacharacters. ]]>

T08 · Insecure Dependencies

Warning
Location
scripts/install.sh:190
Finding
Unpinned Python Packages and Unverified Model Mirrors<![CDATA[ ## Vulnerability Details **File Location**: `scripts/install.sh:190-213`; duplicated in `scripts/install-with-model-choice.sh:216-247` **Vulnerability Type**: Non-reproducible dependency installation from mutable package sources **Risk Level**: Medium ### Vulnerable Code ```bash export HF_ENDPOINT=https://hf-mirror.com run_with_retry 3 "uv pip install faster-whisper -p $VENV_DIR" 3 || { uv pip install faster-whisper -p "$VENV_DIR" \ --index-url https://pypi.tuna.tsinghua.edu.cn/simple } run_with_retry 3 "uv pip install edge-tts -p $VENV_DIR" 3 || { uv pip install edge-tts -p "$VENV_DIR" \ --index-url https://pypi.tuna.tsinghua.edu.cn/simple } ``` ### Technical Analysis The installers request `faster-whisper` and `edge-tts` without exact version constraints or package hashes. This contradicts the fixed versions described in `SKILL.md` and makes the installed dependency set dependent on the state of package indexes at installation time. The code also defaults model downloads to `https://hf-mirror.com`, which the project documentation identifies as a non-official mirror. Downloaded model artifacts are not validated against trusted cryptographic digests. The fallback Python package index and model mirror may be operationally useful, but they expand the supply-chain trust boundary beyond the official sources and provide no artifact-level integrity enforcement. ### Attack Path 1. A package account, package index, mirror, or transitive dependency is compromised. 2. A malicious or unexpectedly changed package release becomes the version selected by the unpinned install command. 3. The installer retrieves and installs that package into the Skill virtual environment. 4. Malicious package code executes during installation or when imported by the Skill. 5. Alternatively, a modified model artifact is retrieved from the non-official model mirror and consumed without digest verification. ### Impact Assessment A compromised dependen ...[truncated 282 chars]
Remediation
<![CDATA[ ## Remediation Suggestions - Create and commit a lockfile containing exact package and transitive dependency versions. - Enforce package hashes during installation. - Match the documented versions of `faster-whisper` and `edge-tts`, or update the documentation and lockfile together. - Default to official package and model sources. - Make mirror use explicit and opt-in rather than the default. - Publish and verify trusted hashes for model artifacts. - Record the resolved dependency versions after installation for auditability. - Correct the `run_with_retry` calls so commands are passed as argument arrays rather than as one command string. ]]>

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
scripts/fix-debug-leak.sh:43
Finding
Cross-Extension Source Modification Outside the Skill Boundary<![CDATA[ ## Vulnerability Details **File Location**: `scripts/fix-debug-leak.sh:43-113` **Vulnerability Type**: Unauthorized modification of a separate OpenClaw extension and deletion of its state **Risk Level**: Medium ### Vulnerable Code ```bash QQBOT_DIR="/root/.openclaw/extensions/qqbot" REF_INDEX_FILE="$QQBOT_DIR/src/ref-index-store.ts" cp "$REF_INDEX_FILE" "$REF_INDEX_FILE.bak.$(date +%Y%m%d%H%M%S)" sed -i 's/const sourceHint = att.localPath ? ` (${att.localPath})` : att.url ? ` (${att.url})` : "";/\/\/ .../' "$REF_INDEX_FILE" sed -i 's/parts.push(`\[语音消息${sourceHint}\]`);/parts.push(`[语音消息]`);/' "$REF_INDEX_FILE" GATEWAY_FILE="$QQBOT_DIR/src/gateway.ts" cp "$GATEWAY_FILE" "$GATEWAY_FILE.bak.$(date +%Y%m%d%H%M%S)" sed -i 's/const localPath = meta.mediaLocalPath;/\/\/ .../' "$GATEWAY_FILE" sed -i 's/\.\.\.(localPath ? { localPath } : {}),/\/\/ .../' "$GATEWAY_FILE" CACHE_FILE="$HOME/.openclaw/qqbot/data/ref-index.jsonl" rm -f "$CACHE_FILE" ``` ### Technical Analysis The bundled repair script modifies the source code of a separate QQBot extension under a hard-coded root-owned path and deletes QQBot state. These operations are unrelated to the minimum permissions required for Feishu speech recognition, TTS synthesis, audio conversion, or message transmission. The modifications use brittle search-and-replace expressions without validating the target extension version, checking a source hash, confirming that each expected replacement occurred, or compiling/testing the modified extension. A partial match or upstream source change may leave the external extension corrupted or semantically inconsistent. The project discloses this behavior in `SKILL.md`, and the script is not automatically invoked. This reduces stealth and immediate exploitability, but it does not remove the least-privilege violation. ### Attack Path 1. A user follows the repair guidance and runs the script with sufficient privileges to modify `/root/.openclaw/extensions/qqbot`. 2. The ...[truncated 696 chars]
Remediation
<![CDATA[ ## Remediation Suggestions - Remove the cross-extension patch script from the audio Skill package. - Submit the privacy fix to the QQBot project and consume an officially patched release. - If a migration tool must be retained, require an explicit target directory rather than assuming `/root`. - Verify the target extension version and cryptographic hash before applying changes. - Use a versioned patch file with a dry-run step and fail unless every hunk applies exactly. - Require explicit user confirmation before changing external files or deleting state. - Never require execution as root when user-scoped OpenClaw installation is sufficient. - Validate the modified extension through compilation or a dedicated test before recommending restart. - Provide a tested rollback operation. ]]>

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/install.sh:273
Finding
Credential Configuration File Created Without Enforced Restrictive Permissions<![CDATA[ ## Vulnerability Details **File Location**: `scripts/install.sh:273-276`; duplicated in `scripts/install-with-model-choice.sh:308-313` **Vulnerability Type**: Insecure local storage permissions for sensitive configuration **Risk Level**: Medium ### Vulnerable Code ```bash if [ ! -f "${SCRIPT_DIR}/.env" ]; then cp "${SCRIPT_DIR}/.env.example" "${SCRIPT_DIR}/.env" log_ok "Configuration file created" log_warn "Edit scripts/.env and enter the actual configuration" fi ``` The alternate installer similarly creates the file and then appends configuration: ```bash cp "${SCRIPT_DIR}/.env.example" "${SCRIPT_DIR}/.env" echo "WHISPER_MODEL=$WHISPER_MODEL" >> "${SCRIPT_DIR}/.env" ``` ### Technical Analysis The installer creates `.env` using ordinary `cp` and does not enforce mode `0600` or set a restrictive umask. The user is then instructed to place `FEISHU_APP_ID` and `FEISHU_APP_SECRET` in this file. Depending on the source file mode, current umask, parent-directory permissions, and deployment environment, the resulting credential file may be readable by other local users or processes. Documentation elsewhere recommends `chmod 600`, but the executable installation workflow does not apply that protection. Runtime scripts also source this file as shell code. Consequently, write access to `.env` is equivalent to code-execution access whenever those scripts run. ### Attack Path 1. The installer creates `scripts/.env` with permissions derived from the example file and current umask. 2. The operator adds real Feishu credentials. 3. Another local account or compromised process reads the file if permissions permit. 4. The attacker uses the App ID and secret to request Feishu access tokens within the application's granted permissions. 5. If an attacker can modify the file, they can insert shell commands that execute when runtime or health-check scripts source `.env`. ### Impact Assessment Confidentiality impact includes disclosure of the Feishu ap ...[truncated 274 chars]
Remediation
<![CDATA[ ## Remediation Suggestions - Set `umask 077` before creating credential or log files. - Create `.env` atomically with mode `0600`, for example using `install -m 600`. - Ensure the containing directory is not writable by untrusted users. - Verify ownership and permissions before sourcing the file. - Prefer a platform secret store or process environment supplied by a trusted service manager. - Do not parse configuration by executing it as shell code. Use a strict key-value parser and an allowlist of accepted variable names. - Reject unexpected keys and malformed values. - Apply the same permission controls in both installer variants. ]]>
Vulnerability Patterns
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (150)

Tool Parameter Abuse

High
Category
Tool Misuse
Content
# 备份并清理引用索引缓存
mv ~/.openclaw/qqbot/data/ref-index.jsonl ~/.openclaw/qqbot/data/ref-index.jsonl.bak
# 或
rm ~/.openclaw/qqbot/data/ref-index.jsonl
```

### 2. 重启 QQBot 扩展
Confidence
85% confidence
Finding
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Tool Parameter Abuse

High
Category
Tool Misuse
Content
# 备份并清理引用索引缓存
mv ~/.openclaw/qqbot/data/ref-index.jsonl ~/.openclaw/qqbot/data/ref-index.jsonl.bak
# 或
rm ~/.openclaw/qqbot/data/ref-index.jsonl
```

### 2. 重启 QQBot 扩展
Confidence
85% confidence
Finding
Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Description-Behavior Mismatch

High
Confidence
98% confidence
Finding
The README explicitly documents a `fix-debug-leak.sh` script that modifies other OpenClaw extensions under paths like `/root/.openclaw/extensions/qqbot/`, which is outside the declared scope of a Feishu audio skill. Cross-extension source modification creates a supply-chain and integrity risk because installing or using this skill may alter unrelated components, potentially introducing persistence, breaking trust boundaries, or tampering with other agents' behavior.

Context-Inappropriate Capability

High
Confidence
97% confidence
Finding
A Feishu audio processing skill has no legitimate need to alter other installed extensions, so the documented capability is unjustified and dangerous in context. Even if framed as a debugging fix, giving the skill authority to rewrite unrelated extensions increases the blast radius from a narrow media-processing tool to a platform-wide tampering mechanism.

Credential Access

High
Category
Privilege Escalation
Content
export FEISHU_APP_SECRET="xxx"

# 4. Load environment variables
source .env
```

### Run Installation
Confidence
63% confidence
Finding
Instructing users to 'source .env' can expose secrets to the current interactive shell session and any child processes, increasing the chance of accidental leakage through shell history, debugging output, process environments, or unrelated tools launched from that shell. In a skill that also downloads models and invokes multiple scripts and services, broad environment propagation makes credential handling more fragile.

Credential Access

High
Category
Privilege Escalation
Content
vi .env

# 加载环境变量
source .env
```

**安全提示**:
Confidence
91% confidence
Finding
Advising users to 'source .env' can expose secrets to the current shell session and any child processes, increasing the chance of accidental disclosure through process inspection, debug output, shell history/workflow mistakes, or inherited environments. In multi-user or poorly isolated environments, this broadens credential exposure beyond the minimum needed.

Intent-Code Divergence

High
Confidence
98% confidence
Finding
The document makes a materially misleading security/privacy claim by stating the skill does not collect voice content or chat records, while elsewhere it acknowledges transmitting text to Edge TTS, sending voice messages via Feishu, and storing temporary audio files locally. This can cause operators to deploy the skill under false assumptions about data handling, leading to privacy, compliance, and consent failures.

Credential Access

High
Category
Privilege Escalation
Content
- 不会意外提交到版本控制
- 每个用户独立配置

### 备选:使用 .env 文件

```bash
# 创建 .env 文件
Confidence
60% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
- 不会意外提交到版本控制
- 每个用户独立配置

### 备选:使用 .env 文件

```bash
# 创建 .env 文件
Confidence
60% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
- 不会意外提交到版本控制
- 每个用户独立配置

### 备选:使用 .env 文件

```bash
# 创建 .env 文件
Confidence
60% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
- 不会意外提交到版本控制
- 每个用户独立配置

### 备选:使用 .env 文件

```bash
# 创建 .env 文件
Confidence
60% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
- 不会意外提交到版本控制
- 每个用户独立配置

### 备选:使用 .env 文件

```bash
# 创建 .env 文件
Confidence
60% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
- 不会意外提交到版本控制
- 每个用户独立配置

### 备选:使用 .env 文件

```bash
# 创建 .env 文件
Confidence
60% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
- 不会意外提交到版本控制
- 每个用户独立配置

### 备选:使用 .env 文件

```bash
# 创建 .env 文件
Confidence
60% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
- 不会意外提交到版本控制
- 每个用户独立配置

### 备选:使用 .env 文件

```bash
# 创建 .env 文件
Confidence
60% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
- 不会意外提交到版本控制
- 每个用户独立配置

### 备选:使用 .env 文件

```bash
# 创建 .env 文件
Confidence
60% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
- 不会意外提交到版本控制
- 每个用户独立配置

### 备选:使用 .env 文件

```bash
# 创建 .env 文件
Confidence
60% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
- 不会意外提交到版本控制
- 每个用户独立配置

### 备选:使用 .env 文件

```bash
# 创建 .env 文件
Confidence
60% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
- 不会意外提交到版本控制
- 每个用户独立配置

### 备选:使用 .env 文件

```bash
# 创建 .env 文件
Confidence
60% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
- 不会意外提交到版本控制
- 每个用户独立配置

### 备选:使用 .env 文件

```bash
# 创建 .env 文件
Confidence
60% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
- 不会意外提交到版本控制
- 每个用户独立配置

### 备选:使用 .env 文件

```bash
# 创建 .env 文件
Confidence
60% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
- 不会意外提交到版本控制
- 每个用户独立配置

### 备选:使用 .env 文件

```bash
# 创建 .env 文件
Confidence
60% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
- 不会意外提交到版本控制
- 每个用户独立配置

### 备选:使用 .env 文件

```bash
# 创建 .env 文件
Confidence
60% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
- 不会意外提交到版本控制
- 每个用户独立配置

### 备选:使用 .env 文件

```bash
# 创建 .env 文件
Confidence
60% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
- 不会意外提交到版本控制
- 每个用户独立配置

### 备选:使用 .env 文件

```bash
# 创建 .env 文件
Confidence
60% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Static analysis

No suspicious patterns detected.