T09 · Insecure Skill Coding Practices
- Location
SKILL.md:262- Finding
Raw Task and Result Payloads Are Disclosed to the Hosted Chat Bridge
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md, lines 14–15, 262–278, and 296–297
Vulnerability Type: Privacy boundary violation and unnecessary transmission of potentially sensitive data
Risk Level: MediumVulnerable Code
text Raw task data never leaves the client — only `0x`+SHA-256 commitments are sent.text 1. POST {APP_BASE_URL}/api/v1/attestations 2. Human opens approve_url in Chrome (passkey) 3. Poll GET {APP_BASE_URL}/api/v1/attestations/{id} or GET {APP_BASE_URL}/api/v1/attestations/{id}/wait 4. status=completed → certificate_url (hosted on trust.sanctifai.com)json { "task_type": "GEN", "domain": "GEN", "task_subtype": "Chat approval", "requesting_agent": "Support bot", "taskData": { "summary": "opaque task payload" }, "resultData": { "decision": "approved" } }text Retain the exact `taskData` / `resultData` you posted (see Shared rules). The bridge approve client uses the same `sha256Hex` helper as Embedded.Technical Analysis
The global description states that raw task data never leaves the client and that only SHA-256 commitments are transmitted. However, the Chat bridge workflow directs an agent to POST the un-hashed
taskDataandresultDatafields to the hosted service athttps://bridge.trust.sanctifai.com.Hashing these fields later in the bridge approval client does not prevent the hosted bridge from receiving the original values. This creates a material mismatch between the declared privacy model and the actual Chat bridge data flow. Although the Skill separately advises users not to include personally identifiable information, an application or agent may rely on the stronger claim that raw data remains local and submit confidential business content.
Transmitting raw values also exceeds the minimum data access required for a commitment-based attestation when the commitments can be calculated locally ...[truncated 1349 chars]
- Remediation
View remediation
Remediation Suggestions
- Calculate SHA-256 commitments locally and send only
task_commitmentandresult_commitmentto the hosted bridge. - Redesign the bridge API so that possession of raw task and result payloads is not required for attestation creation.
- If raw transmission is unavoidable, restrict the “raw task data never leaves the client” claim to the surfaces for which it is accurate.
- Display a prominent disclosure and obtain explicit user approval before sending raw payloads to the bridge.
- Add client-side validation that rejects likely secrets, credentials, personal data, and other prohibited content.
- Document the bridge's data retention, logging, encryption, deletion, and access-control policies.
- Add automated tests verifying that privacy-preserving modes transmit only fixed-length commitments and never serialize raw task or result objects.
- Calculate SHA-256 commitments locally and send only
