T03 · Remote Payload Retrieval and Execution
- Location
references/setup-guide.md:8- Finding
Remote Installer Downloaded and Executed Without Integrity Verification
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill mostly does what it says, but its file-packaging and setup instructions can expose users to unintended local file upload or unverified remote code execution.
Review before installing. Use Homebrew or another trusted package manager for uv instead of the curl/PowerShell installer commands, use a dedicated .env.govilo containing only the Govilo key and seller address, and upload only directories you created or have checked for symlinks. Avoid running this on untrusted repositories or extracted archives until symlink handling and temporary-file creation are fixed.
references/setup-guide.md:8Remote Installer Downloaded and Executed Without Integrity Verification
scripts/packager.py:40Directory Packaging Follows Symbolic Links and Can Upload Files Outside the Selected Directory
scripts/packager.py:44Predictable Non-Atomic Temporary Archive Creation
pyproject.toml:5Unpinned Runtime and Build Dependencies Allow Non-Reproducible Code Resolution
The skill advertises sensitive remote behavior involving file uploads, presigned URLs, API-key usage, and monetization workflows, but the analyzed content does not substantiate those actions and instead appears centered on local packaging/validation. This mismatch is dangerous because users and reviewers may authorize secret access and file handling under false assumptions, masking dead code, incomplete implementation, or substituted behavior in other files.
Code or instructions that leak agent conversation context to external services, potentially exposing sensitive user interactions.
| 809108003 | 401 | api key has expired |
| 809108005 | 429 | daily api key usage limit exceeded |
| 809108006 | 429 | api key rate limit exceeded |
| 809104001 | 404 | upload session not found |
| 809104002 | 410 | upload session expired |
| 809104003 | 404 | file not found |
Code or instructions that leak agent conversation context to external services, potentially exposing sensitive user interactions.
| 809108003 | 401 | api key has expired |
| 809108005 | 429 | daily api key usage limit exceeded |
| 809108006 | 429 | api key rate limit exceeded |
| 809104001 | 404 | upload session not found |
| 809104002 | 410 | upload session expired |
| 809104003 | 404 | file not found |
The | sh shell-chaining pattern is a direct arbitrary-command execution sink for whatever data is returned by the remote endpoint. If an attacker can influence the downloaded content or the transport path, they can execute malicious commands immediately, potentially stealing Govilo API keys, wallet-related data, or other local secrets used by this skill.
### Install uv
# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
The skill explicitly requires environment variables and describes network-based upload/API operations, but it does not declare any tool scope such as permissions or allowed-tools. That creates an authorization gap where the runtime may permit broader env or network access than reviewers and users expect, increasing the chance of secret exposure or unintended outbound requests.
The reference explicitly documents authenticated API calls and raw ZIP uploads to an external Govilo service, but provides no warning that user files and metadata will be transmitted off-platform. In the context of an agent skill that automates uploads, this omission increases the risk of users or downstream agents sending sensitive data to a third party without informed consent.
The setup guide instructs users to execute installer scripts fetched directly from the internet without any warning or verification step. Even if the upstream source is legitimate, this pattern creates a supply-chain risk: a compromised host, CDN, DNS path, or installer script could lead to arbitrary code execution on the user's machine.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
return body["data"]
def presign(self, seller_address: str) -> dict:
resp = requests.post(
f"{self._base_url}/api/v1/bot/uploads/presign",
headers=self._headers,
json={"seller_address": seller_address},
The presign method sends the user-provided seller_address to a remote API via requests.post, but the file contains no confirmation prompt, logging, or explanatory comment disclosing that this data is transmitted externally. Because this is a code file, outbound transmission of user or system data should have some visible disclosure unless clearly covered elsewhere in the skill description.
The upload method reads a local zip file and transmits its contents to upload_url using an HTTP PUT request. There is no confirmation prompt, user-facing log, or inline documentation warning that local file contents will be sent off-system, which is a safety-relevant operation for code files.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
price: str,
description: str = "",
) -> dict:
resp = requests.post(
f"{self._base_url}/api/v1/bot/items",
headers=self._headers,
json={
The project declares requests without any version constraint, so dependency resolution may install a release affected by known vulnerabilities. In this skill's context, requests is likely used for Govilo API calls and presigned upload flows, so a vulnerable or unexpectedly changed HTTP client could expose credentials, mishandle redirects/auth, or introduce supply-chain instability in a network-facing workflow.
Dependency has known vulnerabilities (CVEs). Using packages with unpatched security flaws exposes the environment to known exploits.
The command curl ... | sh fetches a remote script and immediately executes it, giving that remote content full code execution privileges in the user's shell. In a setup guide for a developer tool, this is more dangerous because users are likely to run it verbatim, often in trusted local environments that may contain credentials or source code.
### Install uv
# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
No suspicious patterns detected.