Back to skill

Security audit

Tencent Cloud Lighthouse

Security checks for vulnerabilities and agentic risk

Overview

This skill is mostly aligned with Tencent Lighthouse administration, but it handles cloud credentials and remote server changes in ways that deserve careful review before installation.

Install only if you are comfortable giving the agent real Tencent Cloud authority. Do not paste OAuth verification codes into third-party chats, restrict credential files to your user account, confirm every billable or mutating action, avoid the `curl | sudo bash` deployment pattern, pin packages and Docker images, and replace broad `0.0.0.0/0` firewall rules with the narrowest CIDR that works.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • 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 (6)

T03 · Remote Payload Retrieval and Execution

Error
Location
references/application-deployment.md:38
Finding

Unverified Remote Script Executed with Root Privileges

Content
View full analysis
\ --InstanceIds '["lhins-xxx"]' \ --Content "curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash - && sudo yum install -y nodejs" ``` ### Technical Analysis The deployment workflow downloads a mutable shell script from an external URL and pipes it directly into a root shell. The payload is not pinned to a specific immutable version, inspected, hash-verified, or authenticated with a vendor signing key before execution. Although installing Node.js is consistent with application deployment, executing remotely retrieved content directly as root exceeds the minimum privilege necessary. The external script can change after the Skill has been reviewed, making the effective privileged payload unauditable. ### Attack Path 1. An attacker compromises the external script host, its publishing process, or another component of the delivery chain. 2. The user asks the Agent to prepare a Node.js deployment. 3. The Agent follows the documented TAT command. 4. The target instance downloads the attacker-controlled script. 5. `sudo bash` executes the script with root privileges. 6. The attacker can install malware, steal application secrets, alter services, create accounts, or establish persistence. ### Impact Assessment Successful exploitation provides arbitrary root-level code execution on each targeted Lighthouse instance. The attacker can access all local files and credentials available to root, modify the operating system, compromise deployed applications, pivot through accessible networks, and install persistent services. ]]>
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
script/tccli-oauth-helper.sh:251
Finding

OAuth Credentials Stored Without Enforced Restrictive Permissions

Content
View full analysis
"$cred_path" <
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
script/tccli-oauth-helper.sh:205
Finding

OAuth State Mismatch Does Not Abort Authentication

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
script/tccli-oauth-helper.sh:91
Finding

Unvalidated Profile Name Enables Path Traversal and Arbitrary File Overwrite

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
references/application-deployment.md:84
Finding

Deployment Workflow Exposes Application Port to the Entire Internet by Default

Content
View full analysis
\ --InstanceId lhins-xxx \ --FirewallRules '[{"Protocol":"TCP","Port":"3000","CidrBlock":"0.0.0.0/0","Action":"ACCEPT","FirewallRuleDescription":"App port"}]' ``` ``` ### Technical Analysis The example deployment workflow opens TCP port 3000 to `0.0.0.0/0`, allowing connections from every IPv4 address. It does not first establish whether public access is required or whether the deployed application has authentication, transport encryption, production hardening, or a safe public endpoint. This exceeds least privilege when access could be restricted to a trusted client CIDR, private network, load balancer, VPN, or reverse proxy. The general firewall guide recommends opening only required ports, but the deployment workflow itself presents unrestricted exposure as the standard example. ### Attack Path 1. The user deploys an application that listens on port 3000. 2. The Agent follows the documented firewall command. 3. The Lighthouse firewall immediately permits global inbound access. 4. Internet scanners discover the service. 5. An attacker accesses an unauthenticated endpoint or exploits a vulnerability in the application or development server. ### Impact Assessment The immediate impact is Internet-wide exposure of the deployed service. Subsequent privileges depend on the application vulnerability and runtime account. Exploitation may expose application data, environment variables, credentials, or provide code execution inside the application or container. ]]>
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
SKILL.md:45
Finding

Third-Party Dependencies Are Installed Without Version or Integrity Pinning

Content
View full analysis
\ --InstanceIds '["lhins-xxx"]' \ --Content "cd /opt/myapp && npm install && npm run build" \ --Timeout 300 ``` ### Technical Analysis `pip install tccli` resolves a mutable current release from the configured Python package index without a pinned version or expected hash. The metadata installer likewise specifies the package name but not a reviewed version. The application workflow uses `npm install` without requiring a reviewed lockfile or `npm ci`. NPM installation can execute dependency lifecycle scripts, meaning a compromised or unexpectedly updated dependency may execute code on the managed instance during installation. The audit found no evidence that `tccli` itself is malicious. The risk arises from mutable, unverified dependency resolution and package lifecycle execution. ### Attack Path 1. A dependency account, package release process, package registry, or transitive dependency is compromised. 2. A malicious package version becomes the version selected by the unpinned installation command. 3. The Agent follows the Skill's installation or deployment instructions. 4. `pip` or `npm` downloads the altered package. 5. Installation hooks or subsequently imported code execute in the local environment or on the remote Lighthouse instance. 6. The malicious package accesses files, tokens, application secrets, or the privileges of the installing account. ### Impact Assessment For local `tccli` installation, malicious package code obtains the privileges of the user running `pip` and may access local cloud credentials. For remote ...[truncated 227 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Rogue AgentSelf-Modification, Session Persistence
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
Findings (38)

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The skill is presented as a Lighthouse management skill, but it also performs generic Tencent Cloud authentication and local credential lifecycle handling through OAuth helper scripts and tccli configure. That mismatch hides sensitive credential acquisition/storage behavior from the declared purpose, which can mislead operators and cause users to authorize broader access than expected.

Content

No source excerpt is available for this finding.

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
Use `script/tccli-oauth-helper.sh` for non-interactive OAuth login:

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
Use `script/tccli-oauth-helper.sh` for non-interactive OAuth login:

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

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

md
Use `script/tccli-oauth-helper.sh` for non-interactive OAuth login:

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
Use `script/tccli-oauth-helper.sh` for non-interactive OAuth login:

Chaining Abuse

High
Category
Tool Misuse
Confidence
97% confidence
Finding

Piping curl output directly into sudo bash is especially dangerous because untrusted network content is immediately executed with elevated privileges. In the Lighthouse skill context, that means a single remote command can grant full host compromise with minimal visibility or validation.

Content

Scanner excerpt · references/application-deployment.md (reported line 41)May include surrounding context.

md
# Install runtime if needed (example: Node.js)
tccli tat RunCommand --region <region> \
  --InstanceIds '["lhins-xxx"]' \
  --Content "curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash - && sudo yum install -y nodejs"

# Or for Docker-based deployment
tccli tat RunCommand --region <region> \

Chaining Abuse

High
Category
Tool Misuse
Confidence
97% confidence
Finding

Piping curl output directly into sudo bash is especially dangerous because untrusted network content is immediately executed with elevated privileges. In the Lighthouse skill context, that means a single remote command can grant full host compromise with minimal visibility or validation.

Content

Scanner excerpt · references/application-deployment.md (reported line 41)May include surrounding context.

md
# Install runtime if needed (example: Node.js)
tccli tat RunCommand --region <region> \
  --InstanceIds '["lhins-xxx"]' \
  --Content "curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash - && sudo yum install -y nodejs"

# Or for Docker-based deployment
tccli tat RunCommand --region <region> \

Chaining Abuse

High
Category
Tool Misuse
Confidence
75% confidence
Finding

Tool calls are chained to bypass individual safety checks or escalate capabilities beyond what any single tool call would allow.

Content

Scanner excerpt · references/application-deployment.md (reported line 46)May include surrounding context.

Or for Docker-based deployment

tccli tat RunCommand --region
--InstanceIds '["lhins-xxx"]'
--Content "sudo yum install -y docker && sudo systemctl start docker && sudo systemctl enable docker"

text

## Step 3: Deploy the Application

Chaining Abuse

High
Category
Tool Misuse
Confidence
75% confidence
Finding

Tool calls are chained to bypass individual safety checks or escalate capabilities beyond what any single tool call would allow.

Content

Scanner excerpt · references/application-deployment.md (reported line 57)May include surrounding context.

Or for Docker-based deployment

tccli tat RunCommand --region
--InstanceIds '["lhins-xxx"]'
--Content "sudo yum install -y docker && sudo systemctl start docker && sudo systemctl enable docker"

text

## Step 3: Deploy the Application

Missing User Warnings

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The script explicitly tells the user they may send the OAuth verification code to an AI assistant, but that code decodes to sensitive authentication data such as access tokens and related OAuth fields. Encouraging transmission of authentication material to a third party dramatically increases the chance of credential disclosure, account takeover, and misuse beyond Lighthouse.

Content

No source excerpt is available for this finding.

Ssd 3

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

Advising users to share OAuth verification material with an AI assistant is dangerous because the verification blob contains sensitive authentication data that can be used to obtain cloud credentials. In the context of a cloud-management skill, this turns the skill itself into a social-engineering channel for credential exfiltration.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
94% confidence
Finding

The skill advertises and instructs use of shell and network-capable operations (pip install, tccli, helper scripts, OAuth flows) but does not declare any explicit tool scope or allowed-tools boundary. That increases the chance an agent can invoke powerful local/remote actions without least-privilege controls, making accidental command execution, credential handling, or cloud changes harder to govern and audit.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The trigger set includes broad terms such as instance ID and whoami, which are common phrases that can appear outside Tencent Lighthouse workflows. Overbroad activation can cause this skill to load in unrelated contexts, increasing the risk of unintended shell/network actions, confusing task routing, or prompting for cloud credentials when the user did not intend Lighthouse administration.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The rule states that when a user asks to create, deploy, or set up something, the skill should create a new instance by default unless an existing instance is explicitly specified. In a cloud context this can directly cause billable resource creation and infrastructure changes without an explicit cost/impact warning or confirmation, especially when natural-language requests are ambiguous.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The instructions perform package installation, code retrieval, service startup, and firewall exposure to 0.0.0.0/0 without an explicit confirmation gate or warning about operational risk. In an agent skill, this increases the chance of unintended remote changes and accidental exposure of a service to the internet.

Content

No source excerpt is available for this finding.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
89% confidence
Finding

This command fetches and executes a remote setup script via sudo, giving external content root-level code execution on the Lighthouse instance. In a remote execution skill, that is particularly risky because compromise of the upstream script or transport path could fully compromise the host.

Content

Scanner excerpt · references/application-deployment.md (reported line 41)May include surrounding context.

md
# Install runtime if needed (example: Node.js)
tccli tat RunCommand --region <region> \
  --InstanceIds '["lhins-xxx"]' \
  --Content "curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash - && sudo yum install -y nodejs"

# Or for Docker-based deployment
tccli tat RunCommand --region <region> \

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · references/application-deployment.md (reported line 46)May include surrounding context.

Or for Docker-based deployment

tccli tat RunCommand --region
--InstanceIds '["lhins-xxx"]'
--Content "sudo yum install -y docker && sudo systemctl start docker && sudo systemctl enable docker"

text

## Step 3: Deploy the Application

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · references/application-deployment.md (reported line 132)May include surrounding context.

Or for Docker-based deployment

tccli tat RunCommand --region
--InstanceIds '["lhins-xxx"]'
--Content "sudo yum install -y docker && sudo systemctl start docker && sudo systemctl enable docker"

text

## Step 3: Deploy the Application

Session Persistence

Medium
Category
Rogue Agent
Confidence
80% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · references/application-deployment.md (reported line 46)May include surrounding context.

Or for Docker-based deployment

tccli tat RunCommand --region
--InstanceIds '["lhins-xxx"]'
--Content "sudo yum install -y docker && sudo systemctl start docker && sudo systemctl enable docker"

text

## Step 3: Deploy the Application

Session Persistence

Medium
Category
Rogue Agent
Confidence
65% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · references/application-deployment.md (reported line 68)May include surrounding context.

Start the application

tccli tat RunCommand --region
--InstanceIds '["lhins-xxx"]'
--Content "cd /opt/myapp && nohup npm start > /var/log/myapp.log 2>&1 &"

text

### Option B: Docker Deployment

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
83% confidence
Finding

Running a Docker container with sudo grants root-equivalent control over the host's container runtime and executes whatever image is supplied. In this skill context, an unpinned or untrusted image can lead to host compromise, cryptomining, or deployment of malicious services.

Content

Scanner excerpt · references/application-deployment.md (reported line 77)May include surrounding context.

Pull and run container

tccli tat RunCommand --region
--InstanceIds '["lhins-xxx"]'
--Content "sudo docker run -d --name myapp -p 3000:3000 --restart always "

text

### Option C: Upload Files + Run

Rp1

Medium
Category
MCP Rug Pull
Confidence
93% confidence
Finding

The Docker deployment example runs an image specified only as without requiring a pinned tag or digest. That makes deployments non-reproducible and can pull an unexpected or malicious image version later, especially dangerous because it is executed remotely via TAT with sudo on a public server.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
75% confidence
Finding

Docker image references without a specific tag (:latest is implicit) or digest (@sha256:...) can be silently replaced by a malicious image.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The document provides a concrete password reset command for a live instance without placing an explicit confirmation requirement or prominent warning adjacent to the command, even though the workflow notes elsewhere that the instance will be restarted. In an agent skill, this separation is risky because an automated assistant may surface or execute the reset path without adequately warning the user about service disruption or the sensitivity of credential changes.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The instruction to create a NEW instance by default when users ask to "create," "deploy," or "set up" is overly broad for an agent skill and can cause unintended provisioning from ambiguous natural-language requests. In this context, the skill governs billable infrastructure operations, so accidental invocation can lead to unauthorized resource creation, cost exposure, and configuration mistakes.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.