T05 · Unauthorized Access and Privilege Escalation
- Location
clawhub.yaml:14- Finding
Unnecessary LinkedIn Session Credential Requirement Violates Least Privilege
- Content
View full analysis
Vulnerability Details
File Location:
clawhub.yaml, lines 14-16
Vulnerability Type: Excessive credential access / unnecessary authenticated-session exposure
Risk Level: MediumVulnerable Configuration
yaml required_env: - TRADEGPT_API_KEY - LINKEDIN_SESSION_TOKENThe conflicting declaration in
SKILL.md, lines 21-24, is:yaml requires: env: - TRADEGPT_API_KEY - LINKEDIN_SESSION_TOKEN # optionalTechnical Analysis
The package declares
LINKEDIN_SESSION_TOKENas a required environment variable inclawhub.yaml, even though the documented workflow only generates outreach text for the user to copy and send manually. The skill also states that it must not obtain LinkedIn search results without authorization.A LinkedIn session token represents an authenticated user session and is substantially more privileged than the text-generation task requires. Making this credential available to the skill runtime violates the principle of least privilege and unnecessarily increases the consequences of a compromised runtime, dependency, API integration, or future package modification.
The two manifests are also inconsistent:
clawhub.yamlmakes the token mandatory, whileSKILL.mddescribes it as optional. A runtime using the package manifest may request and expose the token regardless of the documented limitation.No executable code that currently reads, transmits, or abuses the token was found. The vulnerability is therefore the unnecessary grant and exposure of privileged authentication material, not confirmed credential exfiltration.
Attack Path
- A user installs or enables the skill.
- The runtime processes
clawhub.yamland requests both declared environment variables. - The user supplies
LINKEDIN_SESSION_TOKENbecause it is marked as required. - The authenticated session credential becomes available within the skill execution environment despite not being needed for message generation.
- If the r ...[truncated 1062 chars]
- Remediation
View remediation
Remediation Suggestions
- Remove
LINKEDIN_SESSION_TOKENfromrequired_envinclawhub.yaml. - Remove the token declaration from
SKILL.mdso both manifests accurately reflect the manual message-generation workflow. - Retain only
TRADEGPT_API_KEYif the external message-generation API is genuinely required. - If authenticated LinkedIn functionality is added later, request authorization only when that specific feature is invoked rather than at installation or startup.
- Prefer an official OAuth flow with narrowly scoped, short-lived credentials instead of accepting raw session tokens.
- Clearly document the requested scopes, intended operations, credential lifetime, storage behavior, revocation procedure, and external recipients.
- Ensure secrets are never written to logs, generated messages, persistent skill data, error output, or third-party endpoints unrelated to the authorized operation.
- Add automated manifest validation to reject undocumented credentials and detect inconsistencies between
clawhub.yamlandSKILL.md.
- Remove
