T09 · Insecure Skill Coding Practices
- Location
monitor.js:21- Finding
Hard-Coded Feishu Recipient and Ignored Runtime Configuration
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill mostly matches its Binance/X monitoring purpose, but it hard-codes a Feishu recipient and ignores the documented recipient configuration, so alerts may go to an unintended account.
Before installing, replace the hard-coded targetUser values in monitor.js, x-monitor.js, config.json, and config.example.json with a recipient you control, or require the scripts to load and validate config.json. Avoid the documented cron pkill restart; use one clearly scoped lifecycle manager and document how to stop or remove it. Confirm you are comfortable sending monitored Binance/X content through Jina AI and Feishu-related notification handling.
monitor.js:21Hard-Coded Feishu Recipient and Ignored Runtime Configuration
README.md:437Persistent Cron Recommendation Uses Overbroad Process Matching
monitor.js:65Unbounded HTTP Response Buffering and Missing Network Safety Controls
Referenced artifact was not completely inspected
| `monitor.js` | 主监控脚本 |
Referenced artifact was not completely inspected
| `monitor.js` | 主监控脚本 |
Skill manipulates agent memory, state, or stored context. Memory corruption can alter personality, override safety rules, or cause unpredictable behavior.
const tweetIds = Object.keys(state.seenTweets);
if (tweetIds.length > 200) {
tweetIds.slice(0, tweetIds.length - 200).forEach(id => {
delete state.seenTweets[id];
});
}
The README explicitly states that monitored Binance/X content is fetched via Jina AI and delivered via Feishu, but it does not clearly warn users that monitored content and related metadata may be transmitted to third-party services. In a monitoring skill, this matters because users may assume content stays local except for notifications, while the design depends on external processors.
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
sudo systemctl start binance-monitor
# 查看状态
sudo systemctl status binance-monitor
# 查看日志
sudo journalctl -u binance-monitor -f
The entire skill description and operating instructions are presented in Chinese, with no indication that other languages are supported or that the locale restriction is intentional and justified. Per the policy, forcing a specific language without user opt-in or documented justification is a natural-language policy violation.
The skill describes continuous polling of Binance/X and immediate delivery to Feishu, but it does not clearly warn users that content and metadata are transmitted to external services. This can mislead users about privacy exposure, especially if monitored content, recipient identifiers, timestamps, or logs are sensitive in their environment.
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
# 使用 nohup
nohup node monitor.js > monitor.log 2>&1 &
# 或使用 screen
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
# 使用 nohup
nohup node monitor.js > monitor.log 2>&1 &
# 或使用 screen
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
# 使用 nohup
nohup node monitor.js > monitor.log 2>&1 &
# 或使用 screen
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
# 使用 nohup
nohup node monitor.js > monitor.log 2>&1 &
# 或使用 screen
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
# 使用 nohup
nohup node monitor.js > monitor.log 2>&1 &
# 或使用 screen
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
sudo systemctl enable binance-monitor sudo systemctl start binance-monitor
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
sudo systemctl enable binance-monitor sudo systemctl start binance-monitor
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
sudo systemctl enable binance-monitor sudo systemctl start binance-monitor
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
sudo systemctl enable binance-monitor sudo systemctl start binance-monitor
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
sudo systemctl enable binance-monitor sudo systemctl start binance-monitor
Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.
sudo systemctl enable binance-monitor sudo systemctl start binance-monitor
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
sudo systemctl enable binance-monitor sudo systemctl start binance-monitor
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
sudo systemctl enable binance-monitor sudo systemctl start binance-monitor
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
const OKX_ANNOUNCE_URL = 'https://www.okx.com/api/v5/support/announcements';
// 示例:Bybit 公告 const BYBIT_ANNOUNCE_URL = 'https://api.bybit.com/spot/v1/announcement';
### 添加其他通知渠道
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
const OKX_ANNOUNCE_URL = 'https://www.okx.com/api/v5/support/announcements';
// 示例:Bybit 公告 const BYBIT_ANNOUNCE_URL = 'https://api.bybit.com/spot/v1/announcement';
### 添加其他通知渠道
The file presents its description and runtime messages in Chinese, including the stated purpose and multiple console outputs, without any indication that the user can choose another language or that the skill is intentionally limited to Chinese-speaking users. This is a natural-language locale constraint that appears hard-coded rather than optional.
The file’s natural-language description and user-facing messages are written in Chinese and present the skill as a Binance notification sender without any indication that language is configurable or optional. Under the stated policy, forcing a specific language or locale without user opt-in is a natural-language policy violation unless clearly justified as region-specific.
The script's user-facing comments and runtime messages are written in Chinese throughout, including errors, status, and usage guidance. For a general-purpose startup script, this imposes a specific language on users without any opt-in, fallback, or documented region-specific justification.