T09 · Insecure Skill Coding Practices
- Location
SKILL.md:61- Finding
Hardcoded Telegram Recipient Can Cause Unauthorized Disclosure
- Content
View full analysis
Vulnerability Details
File Locations:
SKILL.md:61references/templates.md:26references/templates.md:78
Vulnerability Type: Hardcoded external notification recipient
Risk Level: MediumVulnerable Code Snippets
SKILL.md:59-62:json "delivery": { "mode": "announce", "channel": "telegram", "to": "1027899060" }references/templates.md:23-27:json "delivery": { "mode": "announce", "channel": "telegram", "to": "1027899060" },references/templates.md:75-79:json "delivery": { "mode": "announce", "channel": "telegram", "to": "1027899060" }Technical Analysis
The Skill provides reusable cron-job templates containing the fixed Telegram recipient ID
1027899060. These examples are presented as patterns for delivering reminders and recurring summaries to the current user, but the recipient is not derived from trusted session configuration or verified against the requesting user's account.An agent following these templates literally may schedule an
announcedelivery to the hardcoded account. The complex recurring-task example can process private information, such as unread email summaries, before delivering the result. Consequently, the fixed destination creates a direct data-routing flaw rather than merely a cosmetic example-value issue.No evidence establishes who controls the hardcoded account. Nevertheless, its use as a default external destination can result in unauthorized disclosure whenever that account does not belong to the requesting user.
Attack Path
- A user requests a scheduled reminder or recurring summary.
- The agent loads this Skill and selects one of its supplied cron templates.
- The agent copies the template without replacing the hardcoded
delivery.tovalue. - A cron job is registered with Telegram account
1027899060as its destination. - At execution time, the job g ...[truncated 1004 chars]
- Remediation
View remediation
Remediation Suggestions
-
Replace every concrete recipient ID with an unambiguous placeholder, for example:
json "to": "<VERIFIED_USER_TELEGRAM_ID>" -
Require the destination to be obtained from trusted runtime or session configuration rather than Skill documentation, user-generated content, or persistent examples.
-
Verify that the selected destination belongs to the user who requested the scheduled task before registering the cron job.
-
Display the resolved channel and recipient to the user and request confirmation before scheduling jobs that transmit private information.
-
Fail closed when no verified recipient is available. Do not silently retain the example recipient or create an externally delivered job.
-
For workflows that summarize email or other sensitive sources, apply data-minimization controls and require explicit authorization for external delivery.
-
Add validation that rejects known example values and prevents cron-job creation when unresolved placeholders or fixed demonstration IDs remain in the payload.
-
Review existing scheduled jobs for recipient
1027899060; disable affected jobs and recreate them only after validating the intended recipient.
-
