x-daily-report
Skill performs undeclared credential-based API access with a hardcoded API key and reads a Feishu access token from environment variables, while SKILL.md explicitly claims 'zero cost, no API needed' for the free scraper and makes no mention of credential requirements or external API calls.
Why this conclusion was reached
3/4 dimensions flagged4 undeclared or violating capabilities were inferred.
1 high-risk artifacts or egress signals were extracted.
The report includes 6 attack-chain steps and 3 severe findings.
Dependencies are present but no obvious high-risk issue stands out.
Attack Chain
Entry · SKILL.md:7
reconnaissance · scripts/x-scraper-free.js:82
Escalation · scripts/x-monitor.js:11
reconnaissance · scripts/x-monitor.js:14
Exfiltration · scripts/x-monitor.js:5
Persistence · SKILL.md:48
What drove the risk score up
scripts/x-monitor.js line 11 exposes X_API_KEY = 'THp2c1V4bW5JQVJ1S09IY1BzN1NubDoxaXJpUQ' with comment '已自动获取' (auto-obtained), and SKILL.md never mentions any API key requirement
x-monitor.js line 8 reads process.env.FEISHU_ACCESS_TOKEN without declaring environment:READ in allowed tools or documenting the Feishu integration in SKILL.md
SKILL.md declares '零成本运行:无需X开发者账号' but the API mode (x-monitor.js) requires hardcoded credentials; free-mode credential access via Chrome browser cookies is also absent from SKILL.md
Feishu API (https://open.feishu.cn) and X API calls are not mentioned anywhere in SKILL.md
Most important evidence
Hardcoded X API Key with 'auto-obtained' comment
scripts/x-monitor.js line 11 hardcodes X_API_KEY = 'THp2c1V4bW5JQVJ1S09IY1BzN1NubDoxaXJpUQ' with the comment '已自动获取' (auto-obtained), implying the credential was harvested without user consent. The secret portion is partially masked as '••••••••••1ibiPw' but still in plaintext in source. SKILL.md declares '零成本运行:无需X开发者账号' (zero cost, no X developer account needed), which directly contradicts this.
scripts/x-monitor.js:11 SKILL.md claims zero-cost no-API mode but code requires credentials
SKILL.md advertises '✅ 零成本运行:支持免费无API爬虫模式,无需X开发者账号' and '自动登录:复用浏览器已登录的X会话,无需输入账号密码'. However, x-monitor.js (the alternative entry point) uses hardcoded credentials, and even the free scraper accesses Chrome browser cookies without declaring this in SKILL.md. The Feishu/Bitable integration and external API calls are entirely absent from SKILL.md.
SKILL.md:1 Undeclared Feishu API access with hardcoded App Token
scripts/x-monitor.js lines 5-8 hardcode BITABLE_APP_TOKEN, BITABLE_TABLE_ID, and the Feishu API base URL. The code reads process.env.FEISHU_ACCESS_TOKEN for authorization. This Feishu integration is not declared anywhere in SKILL.md. The hardcoded app token could allow enumeration or data access if the token is valid and permissions are broad.
scripts/x-monitor.js:5 Browser cookie access declared only in skill-card.md, absent from SKILL.md
scripts/x-scraper-free.js line 82 calls scraper.useCookiesFromBrowser('chrome') to reuse an authenticated Chrome X/Twitter session. skill-card.md mentions this as a 'known risk', but SKILL.md — the primary user-facing documentation — does not mention it at all. This creates a documentation gap where most users will be unaware of the browser session access.
scripts/x-scraper-free.js:82 Unpinned npm dependencies with wildcard version ranges
package.json declares '@the-convocation/twitter-scraper': '^0.22.1' and 'axios': '^1.6.0'. The caret (^) allows minor/patch updates. This introduces supply chain risk: a compromised package update could be automatically pulled and executed with full filesystem and network permissions.
package.json:12 Undeclared file write operations
Both scripts write generated reports to disk (x-daily-report-*.md) using Node.js writeFile. SKILL.md mentions '生成行业趋势报告' and file output is implied by '结构化日报', but the actual file write operations and the local storage path are not explicitly documented as filesystem:WRITE operations.
scripts/x-scraper-free.js:183 x-monitor.js uses mock/simulated data that could mask real credential usage
x-monitor.js getAccountTweets() function generates mock tweet data and has a comment '模拟 X API 调用,实际使用时替换为真实 API 请求'. While this may be intentional for testing, the combination of mock data + hardcoded credentials means real credential usage is unclear. The API key is present but the function doesn't make real X API calls in the current code, which is deceptive about the actual data source.
scripts/x-monitor.js:33 Declared capability vs actual capability
scripts/x-monitor.js:8,14 — axios.get/post to Feishu API and X API; scripts/x-scraper-free.js — uses twitter-scraper which makes network requests to X.com scripts/x-monitor.js:14 — reads process.env.FEISHU_ACCESS_TOKEN; SKILL.md does not declare any environment variable access scripts/x-scraper-free.js:183, scripts/x-monitor.js:178 — writeFile saves .md report to disk; SKILL.md does not declare file write operations SKILL.md documents 'node scripts/x-scraper-free.js' and 'node scripts/x-monitor.js' bash invocations; in line with allowed-tools mapping (Bash→shell:WRITE) scripts/x-scraper-free.js:82 — scraper.useCookiesFromBrowser('chrome') accesses Chrome browser cookies for X session authentication; declared only in skill-card.md, not in SKILL.md Suspicious artifacts and egress
API_KEY = 'THp2c1V4bW5JQVJ1S09IY1BzN1NubDoxaXJpUQ' scripts/x-monitor.js:11
https://open.feishu.cn/open-apis scripts/x-monitor.js:8
https://clawhub.ai/user/kongxiaodan20001201-alt skill-card.md:7
https://clawhub.ai/kongxiaodan20001201-alt/x-daily-report skill-card.md:29
Dependencies and supply chain
| Package | Version | Source | Known vuln | Notes |
|---|---|---|---|---|
| @the-convocation/twitter-scraper | ^0.22.1 | npm | No | Wildcard range ^0.22.1 allows updates; accesses Chrome browser cookies for X authentication (declared only in skill-card.md, not SKILL.md) |
| axios | ^1.6.0 | npm | No | Wildcard range ^1.6.0 allows updates; used for Feishu API calls with undeclared credentials |
File composition
scripts/x-monitor.js scripts/x-scraper-free.js SKILL.md skill-card.md package.json