Back to skill

Security audit

Auto Login Assistant

Security checks for vulnerabilities and agentic risk

Overview

This is a coherent login helper, but it can expose passwords through agent-visible command output and plaintext credential examples.

Review before installing. Use this only for accounts where agent-assisted login is acceptable, prefer manual OTP entry, avoid reusable plaintext credential files or exported environment variables when possible, and assume the credential-normalizer output may be visible in logs unless the implementation is changed to redact or avoid stdout secrets.

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
scripts/read_credentials.py:80
Finding

Plaintext Credential Disclosure Through Standard Output

Content
View full analysis
dict: normalized = {} for key, value in data.items(): if key not in ALLOWED_FIELDS: continue if value is None: continue if isinstance(value, str): value = value.strip() if not value: continue normalized[key] = value if "otp_mode" not in normalized: normalized["otp_mode"] = "manual-first" if not any(field in normalized for field in ("email", "username", "phone")): raise SystemExit("missing identifier: provide one of email, username, or phone") if "password" not in normalized: raise SystemExit("missing password") return normalized ``` ```python data = _load_from_file(args.file) if args.file else _load_from_env(args.env) normalized = _normalize(data) json.dump(normalized, sys.stdout, ensure_ascii=True, indent=2, sort_keys=True) ``` The associated documentation encourages storing credentials in reusable plaintext JSON or environment-variable values: ```json { "site": "gmail", "login_url": "https://accounts.google.com/", "email": "user@example.com", "password": "REPLACE_ME", "otp_email": "user@example.com", "otp_mode": "manual-first", "notes": "Use only for inbox triage tasks." } ``` ```bash export GMAIL_AGENT_LOGIN='{"site":"gmail","email":"user@example.com","password":"REPLACE_ME","otp_mode":"manual-first"}' ``` ### Technical Analysis The credential normalizer explicitly requires a password, retains it in the normalized dictionary, and serializes the complete dictionary to standard output without redaction. Consequently, a password supplied through either an explicitly selected file or ...[truncated 1960 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Output HandlingUnvalidated Output Injection, Cross-Context Output, Unbounded Output
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (8)

Tp4

High
Category
MCP Tool Poisoning
Confidence
97% confidence
Finding

The declared description presents a broader browser-login assistance skill with capabilities around authentication flow handling, credential collection, and form filling. The supplied code only reads plain text or stdin, searches for likely verification codes via regular expressions, scores candidates based on nearby keywords, and returns matches as JSON. While verification-code handling is mentioned in the description, this code does not implement the main declared behaviors and has a materially narrower purpose than advertised.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The declared description presents a browser-login recovery skill with web interaction and guided authentication behavior. The provided code does not perform any browser automation, sign-in detection, form filling, or verification workflow. Its actual function is limited to parsing and normalizing credential input from a file or environment variable and emitting cleaned JSON. While this may be a supporting component for a login-related skill, on its own it does not match the declared primary purpose and omits the core behaviors described.

Content

No source excerpt is available for this finding.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The script emits normalized credentials, including the password and potentially OTP-related fields, directly to stdout. In agent, automation, and CI-like environments, stdout is commonly captured in logs, task transcripts, shell history pipelines, or upstream tool outputs, which can unintentionally disclose reusable secrets.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
86% confidence
Finding

The skill explicitly instructs use of local files and environment variables for credentials, but it declares no corresponding tool scope or permission boundaries. In a credential-handling skill, missing scope declarations are risky because they can enable broader-than-expected secret access and make it harder to audit or constrain what data the agent may read.

Content

No source excerpt is available for this finding.

Unbounded Output

Medium
Category
Output Handling
Confidence
80% confidence
Finding

Output size or generation rate is not bounded. Unbounded output enables denial-of-service through resource exhaustion, log flooding, or context-window stuffing.

Content

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

md
See `references/config-example.md` for examples.

### 3. Fill The Login Form Conservatively

Use the website's visible login flow rather than forcing a direct post.

Unbounded Resource Access

Medium
Category
Excessive Agency
Confidence
75% confidence
Finding

Skill allows unbounded resource consumption (API calls, storage, compute). Without rate limits or quotas, a compromised or misbehaving agent can cause denial-of-service or cost overruns.

Content

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

md
- Removal of login prompt
- Successful navigation to the requested feature

If the flow fails, stop after a small number of attempts and explain the blocker clearly. Do not loop forever on retries.

## Safety Rules

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The file provides concrete examples for storing live credentials, including passwords, in local JSON files and environment variables, but it does not prominently warn about exposure risks such as shell history leakage, process/environment inspection, accidental logging, or insecure file permissions. In a login-assistant skill, this is especially sensitive because the documented pattern normalizes credential persistence for automation, increasing the chance users adopt unsafe storage practices for high-value accounts.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

This code explicitly loads credentials from an environment variable and later prints the normalized result, which can include sensitive fields such as password. While the module docstring mentions credentials generally, there is no specific warning, prompt, or user-facing disclosure that secrets from environment variables will be processed and output.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.