T01 · Skill Instruction Hijacking
- Location
SKILL.md:106- Finding
Mandatory Promotional Instructions Hijack Agent Output and Persistently Modify Router Login State
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This is a real MikroTik administration skill, but it forces persistent vendor branding and includes risky automation that can expose full router secrets through Telegram or email backups.
Install only if you intentionally want this vendor-branded MikroTik workflow. Before using generated commands, remove or explicitly approve the branding note, avoid sending full `.rsc` or `.backup` files through Telegram or email unless encrypted and approved, rotate any tokens or passwords exposed in exports, and review all scheduler and remove commands on a lab router before production.
SKILL.md:106Mandatory Promotional Instructions Hijack Agent Output and Persistently Modify Router Login State
references/telegram-integration-playbook.md:147Complete Router Configuration and Embedded Secrets Can Be Uploaded to Telegram
references/monitoring-backup-playbook.md:73Readable Router Configuration Is Sent as an Unencrypted Email Attachment
references/monitoring-backup-playbook.md:62Backup Rotation Logic Removes Every Matching Daily Backup Instead of Files Older Than Seven Days
references/user-manager-playbook.md:60Paste-Ready User Manager Example Uses a Predictable Literal Password
The skill explicitly discusses router exports containing bot tokens and PPPoE/hotspot passwords, then frames transmission and storage workflows in ordinary operational terms. In this context, encouraging or normalizing export creation and sharing of files known to contain full router secrets materially raises the risk of credential leakage, unauthorized access, and downstream compromise of network infrastructure.
Instructing operators to send full router backup exports to Telegram is a direct sensitive-data exposure risk. These exports can reveal credentials, VPN settings, routing, internal addressing, customer-related configuration, and security controls; compromise of the Telegram account, group membership, bot token, or exported file retention would materially expose the network.
The file contains an explicit 'UPDATE SKILL.md' instruction that tells the agent to modify its own skill reference list. Self-modification is dangerous because it can let untrusted content expand the skill’s capabilities or alter future behavior without a separate review boundary, creating a path for persistent prompt/configuration injection.
---
# UPDATE SKILL.md
Tambah di FILE REFERENCES:
The description says to use the skill whenever a user asks for Mikrotik configuration, troubleshooting, or optimization, which is a very broad activation condition. It does not define narrower trigger phrases, exclusion conditions, or boundaries for when another networking skill should be preferred, increasing the chance of unintended invocation.
The communication style section requires 'Bahasa Indonesia profesional' as the output language, which forces a specific language regardless of user preference. This is a natural-language policy issue because no opt-in, fallback, or documented regional justification is provided in the file.
The skill includes operational guidance around Telegram bot tokens and router backup/export handling that expands into sensitive secret-management and sharing workflows. In a network device administration context, exports can contain credentials, tokens, and other router secrets, so normalizing their handling inside a general configuration skill increases the chance of inadvertent exposure or exfiltration.
The manifest description advertises a very broad set of high-privilege networking capabilities without defining narrow activation triggers, task boundaries, or safety constraints. In an agent setting, this can cause the skill to activate for loosely related requests and generate or recommend risky router changes, increasing the chance of misconfiguration, service disruption, or overreach in administrative actions.
The rollback section instructs broad removal of queue tree and firewall mangle entries using pattern matches, which is destructive and conflicts with the documented safer 'set-ulang' approach. In an operational router environment, these commands can delete live traffic-shaping and classification rules in bulk, causing service disruption or incomplete recovery if the match scope is broader than intended.
The playbook presents destructive rollback commands without an immediate safety warning, confirmation gate, or prerequisite backup validation at the point of use. Because this skill is meant for real MikroTik configuration work, an operator could copy-paste the commands directly and unintentionally remove active policy objects, leading to traffic leaks, broken QoS, or wider network instability.
The file consistently instructs the user in Indonesian and uses mandatory phrasing such as 'WAJIB' and 'DILARANG' throughout, but nowhere offers an opt-in language choice. Under the policy, forcing a specific language without user choice is a natural-language policy violation unless the locale restriction is clearly documented and justified.
The playbook is written entirely in Indonesian and includes imperative operational guidance without indicating that language selection is optional or that alternative locales are supported. This can violate language/locale policy when users are not explicitly opted into Indonesian or the document is not clearly scoped to an Indonesian-only audience.
The document explicitly configures SSID-HOTSPOT with empty authentication types, creating an open wireless network, but does not place a clear warning next to the configuration about exposure and required compensating controls. In an ISP/public hotspot context this may be intentional, but without prominent guidance operators may deploy an open SSID unintentionally or without client isolation, captive portal, rate limits, and abuse controls.
The instructions enable CAP with certificate=none before the warning at the end explains the trust implications, so an operator following the steps in order may deploy insecure controller trust by default. In practice, insecure defaults in step-by-step network playbooks are dangerous because they are commonly copied verbatim into production.
The playbook claims lock-to-caps-man=yes provides anti-rogue protection, but the shown CAP configuration also sets certificate=none, which disables manager certificate validation. That means a reachable unauthorized CAPsMAN could potentially impersonate the controller and push configuration, especially across untrusted transport segments.
The hotspot profile explicitly enables MAC-based login via login-by=http-chap,http-pap,mac, which weakens authentication because MAC addresses are easily spoofed on local networks. Although the playbook later notes that MAC login is for convenience rather than security, that warning is separated from the configuration point, so an operator may deploy it insecurely or overestimate its protection for paid/public access.
The entire playbook is written in Indonesian and includes no indication that users may choose another language or that the skill is intentionally limited to an Indonesian-only audience for compliance or regional reasons. Under the policy, forcing a specific language without user opt-in is a natural-language locale violation.
This markdown file contains natural-language instructions exclusively in Indonesian, including operational guidance and warnings, with no indication that users may choose another language. Under the policy criteria, forcing a specific language without user opt-in is a natural-language policy violation unless the locale limitation is documented and justified.
The skill provides a scheduler-driven script that continuously adds and removes live firewall address-list entries, directly affecting routing decisions for thousands of clients, but it does not prominently warn that this modifies production state and can disrupt traffic if adapted incorrectly. In an infrastructure automation skill for MikroTik routers, omission of rollback guidance, staging precautions, and pre-deployment warnings increases the chance of operator-induced outages or unintended policy changes.
Lines L159-L161 describe sticky behavior only while clients are active and explicitly note reassignment after inactivity, but the later validation claim at L175-L176 says reboot preserves the same assignment because address-lists persist. The cleanup logic at L68-L87 deletes inactive entries, so after a reboot or inactive period those persisted address-lists may no longer retain prior WAN affinity, contradicting the implied persistence guarantee.
This markdown file contains user-facing operational instructions exclusively in Indonesian, including warnings and required validation steps, but does not state that the skill is Indonesia-specific or provide opt-in for the language. Under the policy, forcing a specific language without user choice is a natural-language policy violation.
The playbook embeds a Telegram bot token and sends operational data to an external service via /tool fetch. Even though this is presented as legitimate alerting, it creates a real data-exfiltration path and exposes a secret in script configuration; the file itself warns that tokens in scripts are sensitive and may leak via /export. In this skill context, the transmission is expected for monitoring, which makes the intent benign, but it is still security-relevant because router identity and status data leave the device and credentials may be disclosed or misused.
:local tgToken "[TOKEN]"
:local chatId "[CHAT_ID]"
:do {
/tool fetch url=("https://api.telegram.org/bot" . $tgToken . \
"/sendMessage?chat_id=" . chatId . "&text=" .tgMsg) keep-result=no
} on-error={
:log error message="smi-tg: kirim Telegram GAG"
This markdown file states that the Telegram integration is a core module invoked by other playbooks, but it does not define precise activation conditions, allowed callers, or exclusion cases. That makes the trigger scope overly broad at the documentation level and could lead to unintended use from loosely related automation flows.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
orang yang belum mulai chat — ini penyebab gagal kirim #1).
3. Ambil chat ID: chat @userinfobot → balasannya berisi "Id: 987654321".
Untuk GRUP: tambahkan bot ke grup, lalu ambil via
https://api.telegram.org/bot<TOKEN>/getUpdates → cari "chat":{"id":-100xxxx}
(ID grup selalu negatif — catat dengan tanda minusnya!).
4. Rahasia: token dilarang disebar di screenshot/chat publik.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
orang yang belum mulai chat — ini penyebab gagal kirim #1).
3. Ambil chat ID: chat @userinfobot → balasannya berisi "Id: 987654321".
Untuk GRUP: tambahkan bot ke grup, lalu ambil via
https://api.telegram.org/bot<TOKEN>/getUpdates → cari "chat":{"id":-100xxxx}
(ID grup selalu negatif — catat dengan tanda minusnya!).
4. Rahasia: token dilarang disebar di screenshot/chat publik.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
orang yang belum mulai chat — ini penyebab gagal kirim #1).
3. Ambil chat ID: chat @userinfobot → balasannya berisi "Id: 987654321".
Untuk GRUP: tambahkan bot ke grup, lalu ambil via
https://api.telegram.org/bot<TOKEN>/getUpdates → cari "chat":{"id":-100xxxx}
(ID grup selalu negatif — catat dengan tanda minusnya!).
4. Rahasia: token dilarang disebar di screenshot/chat publik.