T09 · Insecure Skill Coding Practices
- Location
lib/client.js:57- Finding
Unrestricted Network Destination for Sensitive API Traffic
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This appears to be a legitimate Shuzhi API integration, but it needs review because it handles contracts, identity data, credentials, and remote deletion actions with weak scoping and disclosure safeguards.
Install only if you trust the Shuzhi service and can protect the workspace. Use test credentials where possible, do not commit config.json with real secrets, verify baseUrl before each run, avoid passing ID-card numbers or phone numbers directly on the command line, and treat terminal output/logs as sensitive. Review remote delete commands carefully because they act on service-side records.
lib/client.js:57Unrestricted Network Destination for Sensitive API Traffic
config.json:1API Credentials Are Designed to Be Stored in a Plaintext Project Configuration File
scripts/sign/workflow.js:442Electronic-Signature Workflow Prints Personal Information to Terminal Logs
Referenced artifact was not completely inspected
node scripts/sign/workflow.js --contract "合同文件路径" --signers '[{"signerNo":"甲方","type":"enterprise",...}]'
Referenced artifact was not completely inspected
node scripts/sign/workflow.js --contract "合同文件路径" --signers '[{"signerNo":"甲方","type":"enterprise",...}]'
Referenced artifact was not completely inspected
node scripts/sign/workflow.js --contract "合同文件路径" --signers '[{"signerNo":"甲方","type":"enterprise",...}]'
Referenced artifact was not completely inspected
node scripts/sign/workflow.js --contract "合同文件路径" --signers '[{"signerNo":"甲方","type":"enterprise",...}]'
Referenced artifact was not completely inspected
node scripts/sign/sign-flow.js create --file params.json
Referenced artifact was not completely inspected
node scripts/sign/sign-flow.js create --file params.json
Referenced artifact was not completely inspected
node scripts/sign/sign-flow.js create --file params.json
Referenced artifact was not completely inspected
node scripts/sign/sign-flow.js create --file params.json
Referenced artifact was not completely inspected
node scripts/sign/sign-flow.js create --file params.json
Referenced artifact was not completely inspected
node scripts/sign/sign-flow.js create --file params.json
The skill documents network-capable operations against external APIs but does not declare any explicit tool scope, permissions, or allowed-tools boundaries. In an agent setting, this can cause overbroad execution authority or unclear consent around outbound requests, especially because the skill handles legal documents, identity data, and evidence-related workflows.
The automated evidence section asks for URLs, batch identifiers, and evidence metadata for remote collection, but does not explicitly tell the user that this information will be sent to an external service. That omission weakens informed consent and can expose confidential case details or targets to third-party processing without clear notice.
The e-signature workflow collects highly sensitive personal and enterprise identity data, including ID-card numbers and phone numbers, but does not clearly warn users about privacy risks, retention, sharing, or transmission to an external service. In this context, silent collection and handling of regulated identity data increases the risk of privacy violations, excessive disclosure, and noncompliant processing.
The skill simultaneously forbids self-computation of evidenceHash and later prescribes a fixed computation formula. This direct conflict is dangerous because developers may either compute a value when they should not, or hesitate and produce inconsistent evidence records, affecting downstream legal or audit reliability.
The certificate field mapping is internally contradictory: it labels blockchainHash as one source while the note says to use a different field. That inconsistency can lead implementers to bind the wrong blockchain value into legally significant certificates, undermining integrity, traceability, and later verification.
This JSON includes multiple natural-language labels and descriptions such as product names, statuses, and endpoint descriptions entirely in Chinese. Because the file provides no documented locale restriction, fallback, or user opt-in, it appears to impose a specific language by default, which matches the language/locale policy violation category.
Comments and user-visible error text in this file are written exclusively in Chinese, including the initialization and credential error messages. Under the locale policy rule, hard-coding a single language without opt-in or documented regional justification can be a policy violation.
This code sends arbitrary request payloads to a remote endpoint using fetch, and the request is authenticated with appKey/appSecret-derived headers. While the comments describe the function as a unified request method, there is no user-facing warning, confirmation, or visible logging here to disclose that data provided in body will be transmitted over the network.
The upload function serializes caller-provided business data and sends it via a network request to the 'chain' upload API. Although there is a code comment describing the function, there is no user-facing warning, confirmation, or explicit disclosure that potentially sensitive data will be transmitted to an external blockchain-related service.
This module creates and manages remote evidence-collection tasks via multiple request(...) calls, which likely transmit task data and identifiers to an external service. Although the file has brief technical docstrings, it does not include any user-facing warning, confirmation, or disclosure about sending potentially sensitive evidentiary data over the network.
The enterprise.delete method performs a deletion through a remote request, but this file contains no confirmation step, warning, or user-facing disclosure that the operation is destructive. For safety-critical operations, the code should provide some visible indication or rely on documented warnings elsewhere.
The person.create method sends a user's name and ID card number via a network request, which is sensitive personal data. Although the parameters are documented, there is no confirmation prompt, user-facing log, or explicit warning in this file that personal identity information will be transmitted to an external signing service.
The person.delete method invokes a remote delete action with no confirmation prompt, logging, or explanatory warning in the code. Because deletion may be irreversible, users should be explicitly informed before the action is taken.
The enterpriseSeal.delete method issues a remote deletion request but does not contain any confirmation, warning comment intended for users, or visible disclosure of the destructive effect. This creates a risk of accidental irreversible removal of seal data.
The personSeal.delete method deletes a personal signature/seal via a network request without any visible confirmation or warning in the code. Since signature artifacts are sensitive and deletions may be hard to undo, this should be disclosed to the user.
No suspicious patterns detected.