Back to skill

Security audit

Qinglong Skills

Security checks for vulnerabilities and agentic risk

Overview

The skill is a disclosed QingLong panel controller, but it gives an agent broad administrative control and handles long-lived credentials too loosely for automatic installation without review.

Install only if you intend to let the agent administer your QingLong panel. Use HTTPS, restrict the QingLong API to trusted hosts, create a least-privileged API application, avoid granting system/dependencies/scripts scopes unless needed, do not use token show in shared logs, and rotate the client secret if it may have been sent over HTTP or captured in logs.

Vulnerability Patterns
  • 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
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
Findings (5)

T09 · Insecure Skill Coding Practices

Error
Location
scripts/ql.sh:57
Finding

API Client Secret Exposed in URL Query Parameters and Potentially Transmitted over Plaintext HTTP

Content
View full analysis
&1) || \ die "Failed to connect to QingLong at ${QL_URL}" ``` The setup documentation explicitly presents HTTP as a valid panel URL: ```markdown | `QINGLONG_URL` | Panel base URL (e.g. `http://192.168.1.100:5700`) | ``` ### Technical Analysis The authentication request places both the client ID and client secret in the URL query string. Query strings are commonly captured by reverse-proxy access logs, HTTP server logs, observability platforms, network debugging tools, and monitoring infrastructure. The script also accepts an arbitrary user-configured URL without requiring HTTPS. When the documented HTTP configuration is used, the client secret, returned access token, bearer tokens, API responses, environment-variable values, scripts, logs, and administrative commands can all cross the network without transport encryption. Sending authentication information to the user-selected QingLong panel is necessary for the declared functionality. However, transmitting a long-lived secret in a query string and permitting plaintext HTTP exceed secure minimum requirements. ### Attack Path 1. A user follows the documentation and configures an HTTP QingLong URL, or places the panel behind a reverse proxy that records complete URLs. 2. The script sends a request containing `client_secret` in the URL query string. 3. A network observer, proxy administrator, local diagnostic tool, or access-log reader captures the URL. 4. The attacker extracts the client ID and secret. 5. The att ...[truncated 731 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/ql.sh:57
Finding

Bearer Token Stored and Displayed in Plaintext Without Enforced File Permissions

Content
View full analysis
&1) || \ die "Failed to connect to QingLong at ${QL_URL}" local code code=$(echo "$response" | jq -r '.code // 0' 2>/dev/null) if [[ "$code" != "200" ]]; then local msg msg=$(echo "$response" | jq -r '.message // "Unknown error"' 2>/dev/null) die "Auth failed (code ${code}): ${msg}" fi local token expiration token=$(echo "$response" | jq -r '.data.token') expiration=$(echo "$response" | jq -r '.data.expiration') echo "{\"token\":\"${token}\",\"expiration\":${expiration}}" > "$TOKEN_CACHE_FILE" echo "$token" } ``` ```bash handle_token() { local action="${1:-get}"; shift 2>/dev/null || true case "$action" in get|refresh) rm -f "$TOKEN_CACHE_FILE" local token token=$(fetch_new_token) success "Token refreshed: ${token:0:16}..." ;; show) if [[ -f "$TOKEN_CACHE_FILE" ]]; then cat "$TOKEN_CACHE_FILE" | jq . else info "No cached token" fi ;; ``` ### Technical Analysis The script creates the token cache directory and token file without explicitly setting restrictive permissions. Their effective modes therefore depend on the invoking process's umask and on whether the directory already exists. The `token show` action prints the complete cached token. In an AI-agent environment, command output may be retained in conversation records, gateway logs, terminal capture, or telemetry. Even `token refresh` reveals the fir ...[truncated 1096 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
references/setup.md:26
Finding

Long-Lived API Client Secret Persisted in Plaintext Configuration Files

Content
View full analysis
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
references/setup.md:55
Finding

Unpinned Package Execution Through npx Creates a Supply-Chain Risk

Content
View full analysis
Remediation
View remediation
...`. 2. Publish and verify package integrity metadata or checksums where the installation mechanism permits it. 3. Prefer an installation channel that resolves an immutable reviewed release or commit. 4. Avoid branch names, floating tags, and unversioned executable dependencies in installation instructions. 5. Document the exact expected publisher, package name, version, and checksum. 6. Review and pin the installer's transitive dependencies through a lockfile in maintained deployment workflows. ]]>

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
SKILL.md:27
Finding

High-Impact Administrative Operations Are Not Protected by Explicit Confirmation Requirements

Content
View full analysis
` to fetch the latest log and surface the error. ``` ```bash scripts/ql.sh system info # System info scripts/ql.sh system config # System config scripts/ql.sh system check-update # Check updates scripts/ql.sh system reload # Reload scripts/ql.sh system command-run --command "task test.js" # Run command scripts/ql.sh system auth-reset --username admin --password newpass ``` ### Relevant Implementation ```bash command-run) local command="" while [[ $# -gt 0 ]]; do case "$1" in --command) command="$2"; shift 2 ;; *) shift ;; esac done [[ -z "$command" ]] && die "--command is required" api PUT "/system/command-run" --data "{\"command\":\"$(echo "$command" | sed 's/"/\\"/g')\"}" ;; ``` ```bash auth-reset) local username="" password="" while [[ $# -gt 0 ]]; do case "$1" in --username) username="$2"; shift 2 ;; --password) password="$2"; shift 2 ;; *) shift ;; esac ...[truncated 2263 chars]
Remediation
View remediation
Vulnerability Patterns
  • System Prompt LeakageDirect Leakage, Indirect Extraction, Tool-Based Exfiltration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • 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
Findings (75)

Direct Prompt Extraction

High
Category
System Prompt Leakage
Confidence
80% confidence
Finding

Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.

Content

Scanner excerpt · README.md (reported line 165)May include surrounding context.

claude-code --context SKILL.md "帮我查看青龙面板有哪些定时任务"

text

**Method 2: Copy instructions into your prompt**

Tell Claude Code:

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
Control your [QingLong (青龙)](https://github.com/whyour/qinglong) scheduled task panel via REST API using `scripts/ql.sh`.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
Control your [QingLong (青龙)](https://github.com/whyour/qinglong) scheduled task panel via REST API using `scripts/ql.sh`.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
Control your [QingLong (青龙)](https://github.com/whyour/qinglong) scheduled task panel via REST API using `scripts/ql.sh`.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
Control your [QingLong (青龙)](https://github.com/whyour/qinglong) scheduled task panel via REST API using `scripts/ql.sh`.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
Control your [QingLong (青龙)](https://github.com/whyour/qinglong) scheduled task panel via REST API using `scripts/ql.sh`.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
Control your [QingLong (青龙)](https://github.com/whyour/qinglong) scheduled task panel via REST API using `scripts/ql.sh`.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
Control your [QingLong (青龙)](https://github.com/whyour/qinglong) scheduled task panel via REST API using `scripts/ql.sh`.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
Control your [QingLong (青龙)](https://github.com/whyour/qinglong) scheduled task panel via REST API using `scripts/ql.sh`.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
Control your [QingLong (青龙)](https://github.com/whyour/qinglong) scheduled task panel via REST API using `scripts/ql.sh`.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
Control your [QingLong (青龙)](https://github.com/whyour/qinglong) scheduled task panel via REST API using `scripts/ql.sh`.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
Control your [QingLong (青龙)](https://github.com/whyour/qinglong) scheduled task panel via REST API using `scripts/ql.sh`.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
Control your [QingLong (青龙)](https://github.com/whyour/qinglong) scheduled task panel via REST API using `scripts/ql.sh`.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
Control your [QingLong (青龙)](https://github.com/whyour/qinglong) scheduled task panel via REST API using `scripts/ql.sh`.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
Control your [QingLong (青龙)](https://github.com/whyour/qinglong) scheduled task panel via REST API using `scripts/ql.sh`.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
Control your [QingLong (青龙)](https://github.com/whyour/qinglong) scheduled task panel via REST API using `scripts/ql.sh`.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
Control your [QingLong (青龙)](https://github.com/whyour/qinglong) scheduled task panel via REST API using `scripts/ql.sh`.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
Control your [QingLong (青龙)](https://github.com/whyour/qinglong) scheduled task panel via REST API using `scripts/ql.sh`.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
Control your [QingLong (青龙)](https://github.com/whyour/qinglong) scheduled task panel via REST API using `scripts/ql.sh`.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
Control your [QingLong (青龙)](https://github.com/whyour/qinglong) scheduled task panel via REST API using `scripts/ql.sh`.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
Control your [QingLong (青龙)](https://github.com/whyour/qinglong) scheduled task panel via REST API using `scripts/ql.sh`.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
Control your [QingLong (青龙)](https://github.com/whyour/qinglong) scheduled task panel via REST API using `scripts/ql.sh`.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
Control your [QingLong (青龙)](https://github.com/whyour/qinglong) scheduled task panel via REST API using `scripts/ql.sh`.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
Control your [QingLong (青龙)](https://github.com/whyour/qinglong) scheduled task panel via REST API using `scripts/ql.sh`.

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
Control your [QingLong (青龙)](https://github.com/whyour/qinglong) scheduled task panel via REST API using `scripts/ql.sh`.

Static analysis

No suspicious patterns detected.