T03 · Remote Payload Retrieval and Execution
- Location
install.sh:5- Finding
Remote Unix Installer Is Executed Directly from a Mutable Branch
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This restaurant customer-service skill is mostly coherent, but its installers add unattended daily updates from a mutable GitHub branch and recommend direct remote script execution.
Review the installer before using this skill. Avoid the one-line remote execution commands, and do not install the default auto-update cron job or Windows Scheduled Task unless you accept unattended future changes from the GitHub repository. Prefer a pinned release or reviewed local copy, and remove any existing daily update task if already installed.
install.sh:5Remote Unix Installer Is Executed Directly from a Mutable Branch
install.ps1:4Remote PowerShell Installer Is Executed Directly Through Invoke-Expression
install.sh:47Unix Installer Creates a Persistent Daily Unverified Update Job
install.ps1:41Windows Installer Creates a Persistent Daily Unverified Update Task
install.sh:13Environment-Controlled Unix Installation Path Is Embedded in a Persistent Shell Command
install.ps1:10Environment-Controlled Windows Installation Path Is Embedded in Scheduled PowerShell Source
Using curl ... | bash directly executes whatever content is returned by the remote server, turning any repository compromise, account takeover, DNS/TLS interception edge case, or content swap into immediate code execution. In this skill context, it is more dangerous because the same installer also establishes persistence via cron, so a single blind execution can lead to ongoing unattended updates.
# 稻哲纪烤羊排 Skill · 一键安装脚本
# ============================================================
# 用法(客户只需运行这一行):
# curl -sSL https://raw.githubusercontent.com/Liubuq-sys/daozheji-grill-skill/main/install.sh | bash
# ============================================================
set -e
The trigger list includes very broad everyday food terms such as '羊排' and '烧烤', which can cause the skill to activate in unrelated conversations about food rather than this specific restaurant. In an agent setting, overbroad invocation can lead to unintended takeover of responses, user confusion, and misrouting of requests, even though the content itself is not overtly harmful.
The trigger description includes broad generic terms such as dish names and category words that are not unique to this restaurant, making unintended activation likely. That can cause the skill to answer as the restaurant in unrelated conversations, producing misleading business information and weakening routing integrity.
The skill states that concrete business facts must be read from reference files in real time, yet the dialogue examples hardcode specific claims about lamb origin, egg-batter process, and cooking duration directly in the skill. This creates an instruction conflict that can cause the agent to repeat unverifiable or stale facts, undermining accuracy and potentially creating food-safety or false-advertising issues.
This section elevates references/faq.md as the authoritative source for food-safety, allergen, ingredient, and process answers, but the scenarios still embed detailed sourcing and preparation claims inline. In a restaurant-support context, conflicting food/process guidance is more dangerous because users may rely on it for allergy, dietary, or safety decisions.
The short-keyword table relies on ambiguous one-word triggers like '菜单', '价', '送', and '会员' without context checks, which can easily match unrelated user requests. In this skill, accidental triggering is especially risky because it may prompt confident, business-specific responses drawn from restaurant files even when the user meant something else.
The script forcefully deletes the existing skill directory before replacement, without confirmation, backup, or validation that the path only contains expected files. If the directory contains user changes or unexpected content, data can be lost immediately and irreversibly.
The installer creates a persistent scheduled task that will continue executing after the one-time install completes, giving the repository ongoing ability to change code on the host. This expands the trust boundary from a single installation event to indefinite remote updates, and the behavior is not clearly surfaced as a separate opt-in step.
The installer silently registers a persistent scheduled task for daily execution without prior user disclosure or consent. Hidden persistence is risky because it normalizes unattended code execution and can later deliver modified repository contents onto the machine.
The script deletes an existing target directory with rm -rf when it is not a git checkout, without prompting the user or creating a backup. This can destroy local modifications or unrelated data if the path contains unexpected contents.
The installer advertises simple install/update behavior but also silently establishes a persistent daily cron job. Undisclosed persistence changes the user's system state beyond a one-time install and can later pull and execute repository changes without renewed user review.
The installer creates a persistent cron job without obtaining prior user consent. Persistent scheduled updates expand the attack surface because future repository changes will be fetched automatically, and the user may not realize ongoing background modifications are occurring.
Reading and modifying the user's crontab to add a daily task is a form of persistence. In the context of an installer, this is risky because it causes recurring execution tied to remote repository state, enabling silent future changes to be introduced onto the host.
# 配置自动更新(追加到 crontab,不重复添加)
UPDATE_CMD="cd $SKILL_PATH && git pull --ff-only origin main 2>/dev/null || git pull --ff-only origin master 2>/dev/null"
if ! crontab -l 2>/dev/null | grep -q "daozheji-grill"; then
(crontab -l 2>/dev/null; echo "7 3 * * * $UPDATE_CMD") | crontab -
echo "自动更新已配置(每天 3:07)"
fi
This line writes a new cron entry that will execute indefinitely on a daily schedule, creating durable persistence on the system. Because the command performs git pull from a remote repository, any later compromise of that repository or branch could propagate automatically to the user's environment.
# 配置自动更新(追加到 crontab,不重复添加)
UPDATE_CMD="cd $SKILL_PATH && git pull --ff-only origin main 2>/dev/null || git pull --ff-only origin master 2>/dev/null"
if ! crontab -l 2>/dev/null | grep -q "daozheji-grill"; then
(crontab -l 2>/dev/null; echo "7 3 * * * $UPDATE_CMD") | crontab -
echo "自动更新已配置(每天 3:07)"
fi
The installation output instructs the user to trigger the skill using a fixed Chinese phrase only, and the rest of the script messaging is also exclusively in Chinese. This imposes a language requirement without user opt-in or any stated locale limitation.
The document publicly includes a Wi‑Fi password, which is an access credential and should not be broadly exposed in a reference file. Even though this appears to be a restaurant guest network, publishing the password in skill content can enable unauthorized access, password reuse abuse, and wider uncontrolled distribution beyond intended customers.
The FAQ states that children can 'completely' eat the dishes and tells caregivers to 'rest assured' even though the same document later discloses allergens such as egg, sesame, soy, and spicy ingredients. This can mislead staff or customers into treating the food as universally safe for children, increasing the risk of allergic reactions or age-inappropriate consumption.
This markdown file contains user-facing natural language only in Chinese, which can constitute a language/locale policy issue when no opt-in, alternative language, or justification is provided. The file does not indicate that the skill is region-specific or that Chinese is an intentional, documented locale restriction.
对话风格要求 AI 一律使用“热情熟络”的中文表达,并明确使用“咱家”“哥/姐”这类称呼,但文档未说明可根据用户语言偏好或正式程度进行调整。这种固定语言/语气要求可能与用户的语言或沟通偏好不一致,构成自然语言政策层面的可选择性不足。
The final instruction tells users to trigger the skill with a single Chinese phrase, implying a fixed-language activation model. There is no indication that other languages are supported, optional, or intentionally restricted for a documented regional reason.
The installer recommends fetching a script directly from the network and executing it immediately. This removes the user's opportunity to inspect the code and makes them dependent on transport integrity and the security of the hosting account and repository at execution time.
# 稻哲纪烤羊排 Skill · 一键安装脚本
# ============================================================
# 用法(客户只需运行这一行):
# curl -sSL https://raw.githubusercontent.com/Liubuq-sys/daozheji-grill-skill/main/install.sh | bash
# ============================================================
set -e
This markdown file contains user-facing skill content exclusively in Chinese, and there is no indication that the skill is region-specific or that users can opt into another language. Under the language/locale policy, forcing a specific language without user choice can be a natural-language policy violation.
The FAQ says pets are allowed without qualification, but pet access may be restricted by local health regulations, service-animal rules, or venue-specific hygiene policies. An unconditional statement could cause customer disputes, noncompliance, or unsafe expectations if animals are later refused or allowed inappropriately around food service areas.
This markdown file is entirely written in Chinese and does not indicate that the user can choose another language or locale. Under the stated policy, forcing a specific language without user opt-in is a natural-language policy concern unless the locale restriction is explicitly documented and justified.
This markdown file consists solely of Chinese-language content and does not indicate that the skill is region-specific or that users may choose another language. Under the policy rule, forcing a specific language without opt-in can be a natural-language policy violation.
No suspicious patterns detected.