Back to skill

Security audit

Steam Community Inventory

Security checks for vulnerabilities and agentic risk

Overview

The skill is a simple Steam inventory helper, but it asks users to extract and export a live Steam session cookie without adequately warning or scoping that credential use.

Install only if you are comfortable giving the skill access to an authenticated Steam web session. Prefer public, unauthenticated inventory requests when possible; if you use STEAM_COOKIES, treat steamLoginSecure like a password, avoid pasting it into shared logs or terminals, unset it after use, and sign out/revoke sessions if it may have been exposed.

Vulnerability Patterns
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:20
Finding

Steam Session Cookie Unnecessarily Required and Exposed Through Command-Line Arguments

Content
View full analysis
Application tab > Cookies > `https://steamcommunity.com` - Copy the value of the `steamLoginSecure` cookie 3. Set environment variables: ```bash export STEAM_ID="your-steamid64" export STEAM_COOKIES="steamLoginSecure=your-cookie-value" ``` ``` The credential is subsequently expanded into `curl` command-line arguments: ```bash curl -s "https://steamcommunity.com/inventory/$STEAM_ID/$APP_ID/2?l=english&count=2000" \ -H "Cookie: $STEAM_COOKIES" | jq '.' ``` The same pattern is repeated for CS2 inventory retrieval, item summaries, item details, and paginated requests: ```bash curl -s "https://steamcommunity.com/inventory/$STEAM_ID/730/2?l=english&count=2000" \ -H "Cookie: $STEAM_COOKIES" | jq '.' curl -s "https://steamcommunity.com/inventory/$STEAM_ID/730/2?l=english&count=2000" \ -H "Cookie: $STEAM_COOKIES" | jq '[.descriptions[] | {market_hash_name, type}]' curl -s "https://steamcommunity.com/inventory/$STEAM_ID/730/2?l=english&count=2000" \ -H "Cookie: $STEAM_COOKIES" | jq '{assets: [.assets[] | {assetid, classid, instanceid, amount}], total: .total_inventory_count}' curl -s "https://steamcommunity.com/inventory/$STEAM_ID/730/2?l=english&count=2000&start_assetid=$LAST_ASSET_ID" \ -H "Cookie: $STEAM_COOKIES" | jq '.' ``` ### Technical Analysis The Skill instructs users to manually extract the sensitive `steamLoginSecure` authentication cookie and supply it to every inventory request. Shell expansion of `$STEAM_COOKIES` places the credential in the argument list passed to `curl` ...[truncated 2525 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (2)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill explicitly instructs the user to extract a live Steam session cookie (steamLoginSecure) from browser developer tools and store it in an environment variable, but it does not warn that this cookie is effectively an authentication credential. If exposed through shell history, logs, process listings, or downstream tooling, an attacker could reuse the session to access the user's Steam account context and inventory-related actions permitted by that session.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
98% confidence
Finding

Multiple example requests include the query parameter l=english, which forces English-language responses. This is a natural-language locale constraint and the document does not provide an opt-in, alternative locale guidance, or a justification for requiring English.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.