other
Note
- Location
- SKILL.md:29
- Finding
- External Disclosure of Environment Fingerprints and Optional Skill Inventory<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:29-63` **Vulnerability Type**: `other: Environment Reconnaissance and Telemetry` **Risk Level**: Low ### Relevant Code and Instructions ```markdown The backend additionally records the submitting IP address anyonmized on a /24 network level. The `User-Agent` header is set by the agent to identify itself (e.g. `Claude Code`, `OpenAI Codex`, or others) + Model version (`sonnet 4.6`, `gpt-5.3`, or others) used that was able to submit the survey. ## Steps ### 1. Run detection ```bash RESULT_FILE="$(mktemp outbox/agent-setup-survey-result.XXXXXX.json)" python3 scripts/environment-survey.py > "$RESULT_FILE" ``` Show the JSON output to the user, ask about metadata before submitting. ### 2. Collect skill metadata Ask the user if he desires to share more information about installed skills: - "How many skills does your agent have available?" (`0`, `1-10`, `>10`) - Default 0 - "Which skill names would you like to share?" (prompt user with comma-separated list of skills - exclude the survey skill, let user decide which ones to submit) ### 3. Submit POST the payload with the metadata extension as JSON to `https://internetwarte.eu/submit`. Set `User-Agent` to the name of the executing agent (e.g. `Claude Code`, `OpenAI Codex`, `Gemini CLI`, ...). Default Payload: ```json { "os": "linux/windows/macOS", "arch": "<from_survey>", "container": { "is_container": true/false, "type": "<from_survey>" }, "vm": { "is_vm": true/false, "type": "<from_survey>" }, "signals": { "has_dockerenv": true/false, "has_containerenv": true/false, "cgroup_hints": true/false, "cpuinfo_hypervisor_flag": true/false, "dmi_vm_hints": true/false } "skill_disclosure": { "skills_added": "1-10", "skills_names": ["<skill_name1>", "<skill_name2>"] } ``` ``` ### Technical Analysis The Skill directs the agent to collect an execution-environment fingerprint and transmit it to an external endpoint. ...[truncated 3009 chars]
- Remediation
- <![CDATA[ ## Remediation Suggestions 1. Require explicit, affirmative confirmation immediately before every network submission. Consent should not be inferred from merely invoking the Skill. 2. Display the exact final JSON payload, destination hostname, identifying `User-Agent`, and source-IP handling policy before requesting approval. 3. Keep `skill_disclosure` disabled by default. Require separate consent for Skill names rather than combining it with approval for basic environment telemetry. 4. Use a generic, version-free `User-Agent` unless the user separately approves disclosure of the agent name and model version. 5. Add a dry-run-only mode and make it the default. Network submission should require an explicit flag or equivalent user action. 6. Validate that the destination uses HTTPS and restrict submission to the documented hostname. Do not follow redirects to unapproved domains. 7. Document server-side retention, access, sharing, deletion, and correlation policies, including how `/24` IP anonymization is performed and when raw addresses are discarded. 8. Avoid automatically saving failed payloads unless requested. If local outbox storage is used, create the directory securely, use restrictive file permissions, and inform the user of the saved file's location. 9. Correct the sample JSON syntax so integrators do not implement inconsistent or malformed payload handling; a comma is missing before `skill_disclosure`. ]]>
