T05 · Unauthorized Access and Privilege Escalation
- Location
scripts/scan.js:16- Finding
API Credential Transmitted to an Undeclared Network Destination
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This news-analysis skill does what it claims broadly, but it sends a required API key to an undeclared service and fetches unvalidated article URLs that could reach unintended systems.
Review carefully before installing. Use only a narrowly scoped, revocable API key; assume the key and scraped article snippets are sent to api.heybossai.com despite the declared api.skillboss.com permission. Run it only in a network-restricted environment if possible, because feed-controlled article links can cause the script to request unexpected URLs, including private-network targets. Treat generated briefings as untrusted summaries, especially because one monitor entry is hardcoded mock data.
scripts/scan.js:16API Credential Transmitted to an Undeclared Network Destination
scripts/scan.js:44Feed-Controlled Article URLs Permit Server-Side Request Forgery
scripts/scan.js:126Untrusted Article Content Is Inserted Directly into LLM Instructions
package.json:9Floating Dependency Versions and Missing Lockfile Make Installation Unreproducible
Referenced artifact was not completely inspected
SKILLBOSS_API_KEY=your_key node scripts/scan.js --report
Referenced artifact was not completely inspected
SKILLBOSS_API_KEY=your_key node scripts/monitor.js --report
Without declared permissions the skill's intent is opaque and cannot be validated.
The script reads an API key from the environment and uses it to send aggregated scraped news content to a third-party LLM service. While the skill description mentions LLM-powered analysis, there is no evidence of minimization, user consent, or controls over what scraped content is forwarded, creating an external data-sharing risk and expanding the skill's trust boundary.
The code is explicitly configured to communicate with an external service endpoint, extending processing outside the local skill runtime. In this skill's context, the danger is not the mere presence of a URL but the unguarded exfiltration path it enables for collected content and the dependence on a third-party processor.
const parser = new Parser();
const SKILLBOSS_API_KEY = process.env.SKILLBOSS_API_KEY;
const API_BASE = 'https://api.heybossai.com/v1';
async function pilot(body) {
const r = await axios.post(
The code injects a hardcoded entertainment scandal item labeled as a monitored event, even though it is not sourced from a real feed. This undermines integrity of the briefing output and could mislead downstream agents or users into acting on fabricated intelligence presented alongside legitimate reporting.
The script sends compiled article snippets and titles to an external LLM endpoint without any user-facing disclosure at runtime or clear indication in the code path that external sharing occurs. Even if the content is public news, undisclosed third-party transmission can violate user expectations, policy requirements, or data-handling constraints in agent environments.
This skill collects article content from external sites and sends the aggregated text to a third-party API endpoint for LLM analysis. That creates a real external transmission path where scraped content, links, and potentially sensitive or internal-only data fetched from attacker-controlled URLs could be disclosed to an external service without validation, minimization, or explicit consent.
const parser = new Parser();
const SKILLBOSS_API_KEY = process.env.SKILLBOSS_API_KEY;
const API_BASE = 'https://api.heybossai.com/v1';
async function pilot(body) {
const r = await axios.post(
This instruction forces the output to be delivered as "Makima from Chainsaw Man" with a mandated tone ("cold, precise, strategic") rather than offering a user choice. That is a natural-language policy concern because the skill imposes a stylistic/persona constraint by default instead of making it optional or clearly justified.
The manifest uses a caret range for axios, which allows newer minor/patch releases to be installed without explicit review. This creates a supply-chain risk because builds may become non-reproducible and could unexpectedly pull a vulnerable or malicious release if the dependency ecosystem is compromised.
"test": "echo \"Error: no test specified\" && exit 1"
},
"dependencies": {
"axios": "^1.6.0",
"cheerio": "^1.0.0-rc.12",
"rss-parser": "^3.13.0"
},
Axios is reported to have multiple known advisories, and because the manifest does not pin a specific version, it is not possible to verify whether the installed release is affected. Given this skill's likely use of external HTTP requests for news and intelligence gathering, any axios flaw affecting SSRF, credential handling, or response integrity could be more relevant than in an offline utility.
The rss-parser dependency is also specified with a caret range, so the resolved package version may change over time. In a skill that aggregates external news content, dependency drift increases supply-chain exposure and makes it harder to verify exactly what code is executed.
"dependencies": {
"axios": "^1.6.0",
"cheerio": "^1.0.0-rc.12",
"rss-parser": "^3.13.0"
},
"keywords": ["intelligence", "news", "ai", "makima"],
"author": "Makima",
The script reads SKILLBOSS_API_KEY from the environment to authenticate outbound requests. Although this is common practice, there is no nearby comment, docstring, or user-facing documentation warning that the skill depends on a credential and will use it for remote API access.
No suspicious patterns detected.