T09 · Insecure Skill Coding Practices
- Location
config.json:2- Finding
Hardcoded DeBox API Credential in Distributed Configuration
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill mostly matches its DeBox community purpose, but it ships a real-looking API key and has unsafe profile-image network and file handling that should be reviewed before use.
Review and remove the bundled config.json API key before installing, use your own key through a safer secret mechanism, avoid running this CLI with elevated privileges, and be careful using profile/image features on other people's user IDs or wallets because they send identifiers to DeBox and may write files locally.
config.json:2Hardcoded DeBox API Credential in Distributed Configuration
scripts/debox-community.js:715Unrestricted Remote Avatar Retrieval Enables Blind HTTPS Requests and Resource Exhaustion
scripts/debox-community.js:721Predictable Project-Local Temporary File Permits Symlink Overwrite and Concurrent-Run Corruption
The documented purpose is community verification and analytics, but the detected behavior includes downloading arbitrary external images, reading local files, and writing generated output files. This broader IO surface materially changes the trust model: external fetches can enable SSRF-style abuse or tracking, and local file read/write capabilities can expose or alter user data beyond what the description suggests.
Referenced artifact was not completely inspected
node scripts/debox-community.js profile --user-id "abc123"
Referenced artifact was not completely inspected
node scripts/debox-community.js profile --user-id "abc123"
Referenced artifact was not completely inspected
node scripts/debox-community.js profile --user-id "abc123"
Referenced artifact was not completely inspected
node scripts/debox-community.js profile --user-id "abc123"
Referenced artifact was not completely inspected
node scripts/debox-community.js profile --user-id "abc123"
Referenced artifact was not completely inspected
node scripts/debox-community.js profile --user-id "abc123"
Referenced artifact was not completely inspected
node scripts/debox-community.js profile --user-id "abc123"
Referenced artifact was not completely inspected
node scripts/debox-community.js profile --user-id "abc123"
Referenced artifact was not completely inspected
node scripts/debox-community.js profile --user-id "abc123"
Referenced artifact was not completely inspected
node scripts/debox-community.js profile --user-id "abc123"
Referenced artifact was not completely inspected
node scripts/debox-community.js profile --user-id "abc123"
The lockfile pins sharp to 0.34.5, and the static analysis indicates known upstream vulnerabilities in bundled/native image-processing components such as libvips/libheif. Image parsing libraries are a common attack surface: if this skill ever processes untrusted images, an attacker could trigger crashes, denial of service, or potentially memory-corruption paths in native code.
The package explicitly depends on sharp 0.34.5, which is flagged as inheriting vulnerabilities from native image-processing libraries such as libvips and libheif. In a skill that may process community-related media or user-supplied images, vulnerable native parsers can expose the runtime to crafted-file attacks such as crashes, memory corruption, or potentially code execution/denial of service.
The skill documentation instructs use of an environment variable for an API key, but the manifest declares no explicit tool scope or permissions despite relying on environment access. In an agent ecosystem, undeclared capability requirements reduce transparency and can cause the skill to receive broader runtime access than users expect, increasing the chance of secret exposure or misuse.
The setup instructions recommend exporting the API key directly in the shell and storing it in a local config file, but provide no warning about shell history, file permissions, or secret leakage from checked-in config files. This can lead to accidental credential disclosure and unauthorized API use if users follow the documentation naively.
The skill advertises personal data reporting and profile lookup, including nickname, wallet address, level, and praise data, without any privacy warning, consent guidance, or data-handling limitations. In the DAO/NFT context, these identifiers can be correlated across on-chain and platform activity, creating deanonymization and profiling risk even if the data is obtainable via the API.
The tutorial instructs users to place the DeBox API key in a plaintext config.json file without any warning about local credential exposure, accidental commits, or insecure file permissions. If that file is read by other local users, included in backups, or committed to source control, the API key can be stolen and abused to access the DeBox API under the victim’s account.
The tutorial promotes a personal social data report and image-generation feature that goes beyond the declared community-management and eligibility-verification scope. This kind of scope expansion increases privacy risk because operators may collect, process, or share user profile and engagement data for purposes users and integrators would not reasonably expect from the skill metadata alone.
The /group/is_join documentation enables wallet-address-based membership checks without any warning about privacy, user consent, or disclosure obligations. Because wallet addresses can be linked to DAO/NFT participation and identity, this capability can be used to deanonymize or profile users' community affiliations.
The documented /user/info endpoint exposes user profile data, including wallet linkage, that is not reflected in the skill's stated capabilities. This creates a scope mismatch that can enable unexpected collection or enrichment of user identity data, increasing privacy and misuse risk because downstream users may not realize the skill can perform profile lookups.
The per-moment like inspection endpoints reveal interaction-level social activity that is not described in the manifest. Undisclosed social-graph and engagement inspection can be abused for profiling, surveillance, or eligibility decisions beyond the user's reasonable expectations.
Multiple commands send wallet addresses, user IDs, and group identifiers to the DeBox API over the network. The file documents command purposes, but it does not clearly disclose to users that invoking these commands shares personal or account-linked data with an external service.
The manifest frames the skill as a DeBox community/DAO/NFT membership verification and analytics tool, covering group info, membership checks, voting/lottery stats, praise data, and eligibility validation. The profile command adds a separate capability to render a personal report image and save it to an arbitrary local path, which goes beyond the stated verification/query scope.
The code downloads a remote avatar URL from API-controlled user data and fetches it server-side with https.get, then writes it to a local temporary file for image processing. This creates an SSRF-style/network pivot risk and unnecessary local processing surface because a remote endpoint can influence what host is contacted and what content is fetched.