T09 · Insecure Skill Coding Practices
- Location
SKILL.md:16- Finding
Unrestricted TALLY_URL Can Redirect Sensitive Accounting Operations
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 16-30
Vulnerability Type: Server-side request redirection and sensitive data exposure
Risk Level: HighVulnerable Code
yaml requires: env: - TALLY_URL metadata: openclaw: requiredEnv: - TALLY_URL bins: - curl - tallyca - scribe primaryCredential: TALLY_URLmarkdown Connect to a **locally running** TallyPrime instance via its **XML-over-HTTP** interface. All requests are HTTP POST to `$TALLY_URL` (commonly `http://localhost:9000`) with an XML body.Technical Analysis
The Skill describes TallyPrime as a local service, but it does not require or validate that
TALLY_URLresolves to a loopback address. The value is accepted from the environment and used as the destination for requests containing accounting data.Report requests can expose vouchers, ledger names, balances, outstanding receivables and payables, GST information, company names, party identifiers, and addresses. Write requests can contain similarly sensitive data and can create, alter, or cancel accounting records.
Because the destination is unrestricted, a malicious or mistakenly configured environment can redirect these requests to an external server. Plain HTTP also provides no transport confidentiality or endpoint authentication when a non-loopback destination is used.
Attack Path
- An attacker, compromised launcher, or unsafe deployment configuration sets
TALLY_URLto an attacker-controlled HTTP endpoint. - The user asks the Skill to retrieve a financial report or post an accounting entry.
- The Agent constructs an XML request containing company and accounting information.
- The request is sent to the attacker-controlled endpoint instead of local TallyPrime.
- The attacker captures the financial data and may return a forged Tally-like response to conceal the redirection.
This path ...[truncated 614 chars]
- An attacker, compromised launcher, or unsafe deployment configuration sets
- Remediation
View remediation
Remediation Suggestions
- Parse and validate
TALLY_URLbefore every request. - Permit only
localhost,127.0.0.1, and IPv6 loopback by default. - Resolve hostnames and reject destinations that resolve to public, private LAN, link-local, multicast, or cloud metadata addresses unless remote access was explicitly authorized.
- Restrict the port to the expected TallyPrime integration port or an explicit administrator-controlled allowlist.
- Require explicit user or administrator approval before using any non-loopback endpoint.
- Require HTTPS with certificate verification and authentication for approved remote Tally deployments.
- Do not follow redirects to unapproved hosts.
- Fail closed when URL parsing, hostname resolution, or endpoint validation is inconclusive.
- Avoid logging complete XML bodies because they may contain financial and personal information.
- Parse and validate
