T05 · Unauthorized Access and Privilege Escalation
- Location
SKILL.md:14- Finding
Unused High-Value Credentials Requested Beyond the Skill's Functional Requirements
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This is a non-executable commerce guide, but it asks for more sensitive credentials than its examples need and includes copy-paste payment flows with under-scoped safeguards.
Review before installing. Use only sandbox or tightly scoped test credentials, do not provide a real Stripe key or long-lived agent signing key unless a specific example truly needs it, and add explicit production gates, spending limits, and recurring-subscription controls before adapting the payment flows.
SKILL.md:14Unused High-Value Credentials Requested Beyond the Skill's Functional Requirements
SKILL.md:151Unpinned Third-Party Package Installation Creates Supply-Chain Risk
SKILL.md:793A2A Discovery Example Exposes an Unauthenticated HTTP Service on All Interfaces
The notice states all examples use the GreenHelix sandbox and that no API key is required to get started, yet the subsequent curl and Python examples rely on Authorization: Bearer $GREENHELIX_API_KEY and os.environ["GREENHELIX_API_KEY"]. This is an active contradiction in the documentation about what is needed to use the examples.
The guide includes deposit, escrow, and payment workflows without a strong, repeated warning that changing endpoints or credentials from sandbox to production could lock or transfer real funds. In a payments-focused skill, this context materially increases risk because users are encouraged to copy/paste operational financial code that can trigger irreversible transactions.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
self,
api_key: str,
agent_id: str,
base_url: str = "https://api.greenhelix.net/v1",
):
self.base_url = base_url
self.agent_id = agent_id
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
self,
api_key: str,
agent_id: str,
base_url: str = "https://api.greenhelix.net/v1",
):
self.base_url = base_url
self.agent_id = agent_id
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
curl -- register the buyer agent:
curl -s -X POST https://sandbox.greenhelix.net/v1 \
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
def _register_resource(self, resource: dict):
"""Register a resource with the MCP registry."""
import requests
requests.post(
f"{self.registry_url}/resources",
json=resource,
timeout=10,
This example creates escrow by sending authenticated payment instructions to an external service, and in a financial automation guide that action can directly lock funds. Although outbound traffic is expected, the context makes it security-relevant because the command is operational, copy/paste-ready, and insufficiently guarded against accidental production use.
Standard escrow is the simplest pattern: the buyer locks funds, the seller does work, the buyer inspects the result and releases payment. If the work is unsatisfactory, the buyer can dispute or cancel.
curl -- create escrow:
curl -s -X POST https://sandbox.greenhelix.net/v1 \
The subscription examples create recurring payment relationships but do not clearly emphasize that charges continue until cancellation. In a commerce automation guide, omission of that warning is risky because autonomous agents may create long-lived billing commitments that persist unnoticed.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
def greenhelix_tool(tool_name, input_data, api_key):
"""Generic GreenHelix tool call. Works with any framework."""
response = requests.post(
"https://sandbox.greenhelix.net/v1",
headers={
"Content-Type": "application/json",
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
def greenhelix_tool(tool_name, input_data, api_key):
"""Generic GreenHelix tool call. Works with any framework."""
response = requests.post(
"https://sandbox.greenhelix.net/v1",
headers={
"Content-Type": "application/json",
The closing summary explicitly documents the API as POST /v1/{tool}, but the core AgentCommerce._execute implementation and all curl examples send requests to /v1 and specify the tool name in the JSON body. This is a direct documentation-to-code contradiction about the interface shape.
No suspicious patterns detected.