birthday
The birthday management skill contains undeclared network access (webhook, SMTP email) and shell execution (JS sendmail), with sensitive personal data capable of external transmission.
为什么得出这个结论
1/4 个维度触发发现 2 项声明之外的能力或越权行为。
当前没有明显的高危外联或执行信号。
没有形成明确的恶意路径。
依赖结构存在,但暂未看到明显高危告警。
风险分是怎么被拉高的
SMTP email via smtplib and webhook via urllib.request not declared in SKILL.md
child_process.spawnSync for 'which sendmail' and 'sendmail' not declared in SKILL.md
Birthday records with names, birthdates, and masked ID cards can be sent to user-configured webhook URLs
Script reads SMTP credentials from environment variables (BIRTHDAY_SMTP_*), but only for legitimate config purposes
最关键的证据
Undeclared email notification channel
SKILL.md only documents 'agent' notification channel but Python implementation includes full SMTP email support via smtplib.SMTP. Email channel requires BIRTHDAY_SMTP_HOST, BIRTHDAY_SMTP_PORT, BIRTHDAY_SMTP_USERNAME, BIRTHDAY_SMTP_PASSWORD environment variables.
scripts/birthday_manager.py:309 Undeclared webhook notification channel
Python implementation includes webhook support via urllib.request that POSTs notification data to user-configured URLs. This is not documented in SKILL.md.
scripts/birthday_manager.py:316 Undeclared shell command execution (JS)
JavaScript implementation uses child_process.spawnSync to execute 'which sendmail' and sendmail binary for email notifications. This shell:WRITE capability is not declared in SKILL.md.
scripts/birthday_manager.js:290 Environment variable access for credentials
Both scripts read SMTP credentials from environment variables (BIRTHDAY_SMTP_HOST, BIRTHDAY_SMTP_PASSWORD, etc.) via resolveConfigValue() function. This is legitimate for notification configuration but not documented.
scripts/birthday_manager.py:201 声明能力 vs 实际能力
Both scripts read/write birthdays.json for data persistence - documented Python: smtplib.SMTP, urllib.request (webhook); JS: none; SKILL.md only declares agent channel JS: child_process.spawnSync for 'which sendmail' and sendmail binary execution - not declared Scripts read SMTP config from env vars (BIRTHDAY_SMTP_*), but only for notification channel 可疑产物与外联
没有提取到明显 IOC。
依赖与供应链
| 包名 | 版本 | 来源 | 漏洞 | 备注 |
|---|---|---|---|---|
| None (pure stdlib) | N/A | Python stdlib + Node.js stdlib | 否 | No npm dependencies in package.json, no pip requirements.txt - all code uses standard library only |
文件构成
scripts/birthday_manager.py scripts/birthday_manager.js