Back to skill

Security audit

炽风

Security checks for vulnerabilities and agentic risk

Overview

The skill is openly about fan control, but it gives broad, privileged hardware-write and persistent service instructions without enough device-specific validation or recovery safeguards.

Install only if you fully understand the hardware risk and can recover firmware fan control. Avoid running the raw EC backend on unsupported machines, do not persist ec_sys write support until the exact model and registers are verified, and prefer vendor or kernel-supported fan interfaces with clear rollback steps.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
Findings (4)

T09 · Insecure Skill Coding Practices

Error
Location
blaze-fan.sh:19
Finding

Unvalidated Model-Specific EC Register Writes

Content
View full analysis
/dev/null)" = "Y" ] } detect_backend() { if ec_ready; then echo "ec" elif [ -x "$FAN_CLEVO" ]; then echo "clevo" elif [ -x "$FAN_NBFC" ]; then echo "nbfc" else die "No available fan backend" fi } ``` ```bash ec_write() { printf "\\x$(printf '%02x' "$2")" | dd of="$FAN_EC_IO" bs=1 seek=$((0x$1)) conv=notrunc 2>/dev/null || warn "EC write failed @0x$1" } set_fan() { local duty=$1 case "$BACKEND" in ec) local speed=$(( duty * 255 / 100 )) local cmd_dec=$((FAN_EC_CMD)) local i for ((i=1; i<=FAN_EC_COUNT; i++)); do ec_write "${FAN_EC_FDAT#0x}" "$i" ec_write "${FAN_EC_FBUF#0x}" "$speed" ec_write "${FAN_EC_FCMD#0x}" "$cmd_dec" done ;; clevo) "$FAN_CLEVO" "$duty" >/dev/null 2>&1 ;; nbfc) "$FAN_NBFC" set -s "$duty" >/dev/null 2>&1 ;; esac } ``` ```bash # Write 50% once to activate manual mode set_fan 50 ``` ### Technical Analysis The raw EC backend is selected solely because the EC debug interface is readable and the kernel reports that writes are enabled. These checks establish access to the controller but do not establish that the configured registers implement the ...[truncated 1724 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
blaze-fan.sh:89
Finding

Temperature Telemetry Failure Falls Back to an Unsafe Low Fan Duty

Content
View full analysis
/dev/null | awk ' /_input/ { val = $2 if (val > max) { max = val name = prev_name } } /^[a-zA-Z]/ { gsub(/-.*$/, "", $1) if ($1 != "") prev_name = $1 } END { if (max != "") printf "%s %.0f\n", name, max else print "unknown 50" } ' } ``` ```bash while true; do read -r hottest_sensor hottest_temp < <(get_hottest_temp) duty=$(calc_duty "$hottest_temp") [ -z "$duty" ] && duty=$BASE [ "$duty" -lt "$BASE" ] && duty=$BASE [ "$duty" -gt 100 ] && duty=100 set_fan "$duty" ``` ### Technical Analysis If `sensors -u` produces no matching `_input` values, fails, or changes to an unsupported output format, the parser fabricates a temperature of 50°C. With the default curve, 50°C is below `TEMP_START=60`, so `calc_duty` returns the minimum configured duty of 40%. Loss of thermal telemetry is a safety-critical condition and must not be interpreted as a normal low temperature. The implementation fails open by enforcing a relatively low manual fan duty exactly when it can no longer determine whether the system is overheating. The suppression of `sensors` diagnostics through `2>/dev/null` further obscures the reason for the failure. There is also no validation for nonnumeric, implausible, stale, or partially parsed readings. ### Attack Path 1. The service places fan control into manual mode. 2. Sensor discovery fails, the `sensors` command returns no `_input` fields, or its output becomes incompatible with the parser. 3. `get_hottest_temp` returns `unknown 50`. 4. The fan curve interprets the fabricated reading as below the acceleration thr ...[truncated 858 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
blaze-fan.service:7
Finding

Persistent Root Fan-Control Service Lacks Safe Shutdown and Failure Recovery

Content
View full analysis
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
blaze-fan.sh:55
Finding

Mutable and Unpinned AUR Package Recommendations

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (30)

Missing User Warnings

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

This section instructs users to write directly to sysfs PWM controls and later to EC registers, but does not prominently warn that incorrect values can disable thermal management, stall fans, or destabilize firmware-controlled cooling. In a fan-control skill, direct hardware writes are contextually sensitive because the likely effect of misuse is overheating, hardware damage, or system instability rather than a harmless configuration change.

Content

No source excerpt is available for this finding.

Chaining Abuse

High
Category
Tool Misuse
Confidence
90% confidence
Finding

Piping directly into sudo tee writes privileged configuration non-interactively, which lowers friction for making persistent system changes. In this skill's context, that is risky because it encourages users to enable kernel-module write support with a copy-paste pattern and without strong safeguards or rollback steps.

Content

Scanner excerpt · SKILL.md (reported line 85)May include surrounding context.

bash
# 1. 写支持参数(modprobe.d)
echo 'options ec_sys write_support=1' | sudo tee /etc/modprobe.d/ec_sys.conf

# 2. 开机自动加载(modules-load.d)
echo 'ec_sys' | sudo tee /etc/modules-load.d/ec_sys.conf

Chaining Abuse

High
Category
Tool Misuse
Confidence
88% confidence
Finding

This pipeline similarly makes boot-time module autoload persistent via a simple copy-paste command. The danger is not shell chaining alone but the combination of elevated write and permanent low-level hardware exposure in a broadly triggered skill.

Content

Scanner excerpt · SKILL.md (reported line 88)May include surrounding context.

md
echo 'options ec_sys write_support=1' | sudo tee /etc/modprobe.d/ec_sys.conf

# 2. 开机自动加载(modules-load.d)
echo 'ec_sys' | sudo tee /etc/modules-load.d/ec_sys.conf

# 3. 立即加载并验证
sudo modprobe ec_sys write_support=1

Chaining Abuse

High
Category
Tool Misuse
Confidence
97% confidence
Finding

This pipeline feeds a crafted byte directly into dd writing to the EC interface as root, making destructive hardware writes easy to execute verbatim. Because the target register is discovered heuristically, this copy-paste pattern materially increases the likelihood of damaging or unsafe misconfiguration.

Content

Scanner excerpt · SKILL.md (reported line 124)May include surrounding context.

bash
# 假设 0xCE 在风扇加速时从 0x30 变为 0xA0
# 尝试向该地址写入值
echo -n -e '\x80' | sudo dd of=/sys/kernel/debug/ec/ec0/io bs=1 seek=0xCE 2>/dev/null

写入成功且风扇变声 → 找到了可控寄存器。写回原值不变 → EC 写保护锁定,此路不通。

Chaining Abuse

High
Category
Tool Misuse
Confidence
97% confidence
Finding

The quick-reference section repeats the piped raw EC write, which is especially dangerous because concise cheat-sheet formats encourage blind copy-paste. That reduces user scrutiny and increases the chance of direct hardware miswrites affecting thermal control.

Content

Scanner excerpt · SKILL.md (reported line 351)May include surrounding context.

md
sudo watch -t -n 0.5 'xxd -s 0xC0 -l 32 /sys/kernel/debug/ec/ec0/io' 2>/dev/null

# 写 EC 寄存器(试错法)
echo -n -e '\x80' | sudo dd of=/sys/kernel/debug/ec/ec0/io bs=1 seek=0xCE 2>/dev/null

# 全量差分
sudo xxd /sys/kernel/debug/ec/ec0/io > /tmp/ec_before

Chaining Abuse

High
Category
Tool Misuse
Confidence
75% confidence
Finding

Tool calls are chained to bypass individual safety checks or escalate capabilities beyond what any single tool call would allow.

Content

Scanner excerpt · SKILL.md (reported line 360)May include surrounding context.

diff /tmp/ec_before /tmp/ec_after

ACPI 方法搜索(极少有结果)

which acpiexec && sudo acpiexec /sys/firmware/acpi/tables/DSDT 2>/dev/null | grep -i fan

text

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The trigger list is broad enough to match common complaints like heat, temperature, and cooling, which can cause this skill to auto-activate in unrelated support conversations. In context, that matters because the skill contains privileged and hardware-level instructions, so accidental invocation increases the chance of unsafe guidance being surfaced without adequate gating.

Content

No source excerpt is available for this finding.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · SKILL.md (reported line 71)May include surrounding context.

bash
# 加载模块(写支持需参数)
sudo modprobe ec_sys write_support=1

# 如果模块不存在或加载失败 → 内核未编译此模块,跳至 Step 3

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · SKILL.md (reported line 76)May include surrounding context.

bash
# 加载模块(写支持需参数)
sudo modprobe ec_sys write_support=1

# 如果模块不存在或加载失败 → 内核未编译此模块,跳至 Step 3

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · SKILL.md (reported line 91)May include surrounding context.

bash
# 加载模块(写支持需参数)
sudo modprobe ec_sys write_support=1

# 如果模块不存在或加载失败 → 内核未编译此模块,跳至 Step 3

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · SKILL.md (reported line 101)May include surrounding context.

bash
# 加载模块(写支持需参数)
sudo modprobe ec_sys write_support=1

# 如果模块不存在或加载失败 → 内核未编译此模块,跳至 Step 3

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · SKILL.md (reported line 142)May include surrounding context.

bash
# 加载模块(写支持需参数)
sudo modprobe ec_sys write_support=1

# 如果模块不存在或加载失败 → 内核未编译此模块,跳至 Step 3

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · SKILL.md (reported line 232)May include surrounding context.

bash
# 加载模块(写支持需参数)
sudo modprobe ec_sys write_support=1

# 如果模块不存在或加载失败 → 内核未编译此模块,跳至 Step 3

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · SKILL.md (reported line 233)May include surrounding context.

bash
# 加载模块(写支持需参数)
sudo modprobe ec_sys write_support=1

# 如果模块不存在或加载失败 → 内核未编译此模块,跳至 Step 3

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · SKILL.md (reported line 234)May include surrounding context.

bash
# 加载模块(写支持需参数)
sudo modprobe ec_sys write_support=1

# 如果模块不存在或加载失败 → 内核未编译此模块,跳至 Step 3

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · SKILL.md (reported line 360)May include surrounding context.

bash
# 加载模块(写支持需参数)
sudo modprobe ec_sys write_support=1

# 如果模块不存在或加载失败 → 内核未编译此模块,跳至 Step 3

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The guide recommends persisting ec_sys write support and boot-time module loading, which enables continued privileged hardware access across reboots. Without strong warnings and rollback instructions, users may leave an unsafe low-level interface permanently enabled, increasing the blast radius of mistakes or later misuse.

Content

No source excerpt is available for this finding.

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
95% confidence
Finding

This command pipeline writes configuration into /etc/modprobe.d as root to permanently enable EC write support. In context, it escalates from ad hoc diagnostics to persistent privileged hardware write capability, which can facilitate unsafe fan-control changes across reboots and make recovery harder.

Content

Scanner excerpt · SKILL.md (reported line 85)May include surrounding context.

bash
# 1. 写支持参数(modprobe.d)
echo 'options ec_sys write_support=1' | sudo tee /etc/modprobe.d/ec_sys.conf

# 2. 开机自动加载(modules-load.d)
echo 'ec_sys' | sudo tee /etc/modules-load.d/ec_sys.conf

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
94% confidence
Finding

This line persists automatic loading of the ec_sys module at boot, ensuring future sessions expose the EC interface without user review. In a skill centered on direct EC manipulation, persistent autoload increases the chance of accidental or repeated misuse and broadens the duration of risk.

Content

Scanner excerpt · SKILL.md (reported line 88)May include surrounding context.

md
echo 'options ec_sys write_support=1' | sudo tee /etc/modprobe.d/ec_sys.conf

# 2. 开机自动加载(modules-load.d)
echo 'ec_sys' | sudo tee /etc/modules-load.d/ec_sys.conf

# 3. 立即加载并验证
sudo modprobe ec_sys write_support=1

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
99% confidence
Finding

This command performs a raw byte write into EC memory using dd as root, based on heuristic inference rather than verified device support. That is directly dangerous because writing the wrong register or value can break fan control, interfere with thermal safety logic, or in some systems affect unrelated embedded-controller functions.

Content

Scanner excerpt · SKILL.md (reported line 124)May include surrounding context.

bash
# 假设 0xCE 在风扇加速时从 0x30 变为 0xA0
# 尝试向该地址写入值
echo -n -e '\x80' | sudo dd of=/sys/kernel/debug/ec/ec0/io bs=1 seek=0xCE 2>/dev/null

写入成功且风扇变声 → 找到了可控寄存器。写回原值不变 → EC 写保护锁定,此路不通。

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
98% confidence
Finding

This is another raw root-level write to EC memory in the quick-reference section, encouraging trial-and-error modification of embedded-controller registers. In this context that is dangerous because it normalizes unsafe direct hardware writes without robust device validation or guardrails.

Content

Scanner excerpt · SKILL.md (reported line 351)May include surrounding context.

md
sudo watch -t -n 0.5 'xxd -s 0xC0 -l 32 /sys/kernel/debug/ec/ec0/io' 2>/dev/null

# 写 EC 寄存器(试错法)
echo -n -e '\x80' | sudo dd of=/sys/kernel/debug/ec/ec0/io bs=1 seek=0xCE 2>/dev/null

# 全量差分
sudo xxd /sys/kernel/debug/ec/ec0/io > /tmp/ec_before

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · SKILL.md (reported line 108)May include surrounding context.

md
# 检测最热设备,指数曲线调风扇转速
# 支持 EC 直写 (ec_sys) / Clevo 直控 (clevo-indicator) / nbfc-linux 三后端
#
# 用法: sudo ./blaze-fan.sh [间隔秒数]

set -e

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · SKILL.md (reported line 141)May include surrounding context.

md
# 检测最热设备,指数曲线调风扇转速
# 支持 EC 直写 (ec_sys) / Clevo 直控 (clevo-indicator) / nbfc-linux 三后端
#
# 用法: sudo ./blaze-fan.sh [间隔秒数]

set -e

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · SKILL.md (reported line 343)May include surrounding context.

md
# 检测最热设备,指数曲线调风扇转速
# 支持 EC 直写 (ec_sys) / Clevo 直控 (clevo-indicator) / nbfc-linux 三后端
#
# 用法: sudo ./blaze-fan.sh [间隔秒数]

set -e

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
70% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

Scanner excerpt · SKILL.md (reported line 345)May include surrounding context.

md
# 检测最热设备,指数曲线调风扇转速
# 支持 EC 直写 (ec_sys) / Clevo 直控 (clevo-indicator) / nbfc-linux 三后端
#
# 用法: sudo ./blaze-fan.sh [间隔秒数]

set -e

Static analysis

No suspicious patterns detected.