技能 oil-ui 审计历史
📦

审计历史

oil-ui - 2 审计

版本对比

各审计版本间的能力与发现变化,最新在前。

版本日期结果复核项相对上一版变化
v2 最新2026年10月5日 04:08 2 已确认2能力无变化
v1 2026年10月4日 14:41 2 已确认6基线

2026年10月5日 04:08

Most alerts are false positives from JavaScript syntax, minified Alpine, image encoding, Chinese documentation, and defensive tests. Confirmed risks concern external updater execution, broad preview-file exposure, stored command execution, and incomplete interactive-preview network isolation. No evidence found of intentional credential exfiltration or instructions to override this audit.

24
已扫描文件
3,794
分析行数
9
复核项
0
已忽略误报

已确认安全问题 (2)

高
Stored Manifest Commands Can Trigger Agent Execution
The reopening workflow tells the agent to execute serve.command from a saved manifest. A modified manifest can substitute arbitrary commands without renewed approval.
The generator accepts any nonempty command, and the reopening instruction executes it. Reusing previously authored commands helps, but saved configuration can change.
中
Interactive Preview Navigation Bypasses Claimed Network Isolation
Interactive previews allow scripts and frame navigation. A script can navigate its frame to an external URL despite connect restrictions, exposing preview data in the URL.
The supplied CSP controls resources and forms, not frame navigation. The sandbox permits scripts, so network isolation is incomplete; no exploit was executed.
能力复核项 (2)

这些是真实的本地能力,对此技能可能是预期行为,因此需要复核,但不会按已确认恶意行为计分。

高
Python subprocess.run
result = subprocess.run([npx, "-y", CLI, "update", name, "--path", str(ROOT), "--json"], env=env,
Explicit --update executes an external npx CLI with user privileges and Oil authorization. Commit pinning and consent reduce, but do not eliminate, supply-chain risk.
中
Synchronous file operations
res.end(readFileSync(local));
The server returns any regular file under its preview root without a public-asset allowlist. Page scripts can read unrelated private files within that root.

风险因素

⚡ 包含脚本 (5)
⚙️ 外部命令 (50)
assets/style-explorer.html:144 assets/style-explorer.html:145 assets/style-explorer.html:147 assets/style-explorer.html:154 assets/style-explorer.html:189 assets/style-explorer.html:195-218 assets/style-explorer.html:218 assets/style-explorer.html:230-232 assets/style-explorer.html:232-233 assets/style-explorer.html:233-254 assets/style-explorer.html:254-270 assets/style-explorer.html:270 assets/style-explorer.html:272-286 assets/style-explorer.html:286-298 assets/style-explorer.html:298-308 assets/style-explorer.html:308-314 assets/style-explorer.html:314-324 assets/style-explorer.html:324-329 assets/style-explorer.html:329 assets/style-explorer.html:143 assets/style-explorer.html:174 assets/style-explorer.html:192 assets/style-explorer.html:193 assets/style-explorer.html:196 assets/style-explorer.html:197 assets/style-explorer.html:220 assets/style-explorer.html:237 assets/style-explorer.html:240 assets/style-explorer.html:248 assets/style-explorer.html:249 assets/style-explorer.html:252 assets/style-explorer.html:256 assets/style-explorer.html:257 assets/style-explorer.html:258 assets/style-explorer.html:260 assets/style-explorer.html:264 assets/style-explorer.html:275 assets/style-explorer.html:280 assets/style-explorer.html:282 assets/style-explorer.html:283 assets/style-explorer.html:285 assets/style-explorer.html:286 assets/style-explorer.html:287 assets/style-explorer.html:298 assets/style-explorer.html:308 assets/style-explorer.html:314 assets/style-explorer.html:315 assets/style-explorer.html:316 assets/style-explorer.html:321 assets/style-explorer.html:322
🌐 网络访问 (50)
📁 文件系统访问 (44)
🔑 环境变量 (34)
审计者: codex

2026年10月4日 14:41

Most alerts are benign JavaScript syntax, image data, Chinese documentation, and negative test fixtures. Confirmed risks include unpinned automatic updates, inherited secrets, and unsafe preview input handling. Release-note trust and selector interpolation add injection risks; no evidence of intentional malware was found.

24
已扫描文件
3,676
分析行数
13
复核项
0
已忽略误报

已确认安全问题 (2)

高
Untrusted Release Notes Enter Agent Instructions
Remote release notes are copied into updater notices after minimal trimming. SKILL.md tells agents to relay these notices, creating a prompt-injection channel.
The remote notes flow directly into output the agent consumes. No embedded attack was found, but the source-to-instruction trust boundary is explicit.
中
Selector Interpolation Allows Browser Code Injection
The type action inserts its selector directly into a quoted JavaScript error message. Crafted quotes can execute unintended code in the inspected page.
The querySelector argument is serialized, but the same selector is interpolated without escaping in the error string. An isolated expression check confirmed injection.
能力复核项 (6)

这些是真实的本地能力,对此技能可能是预期行为,因此需要复核,但不会按已确认恶意行为计分。

高
Python subprocess.run
result = subprocess.run([npx, "-y", CLI, "update", name, "--path", str(ROOT), "--json"], env=env,
The updater runs npx -y against an unpinned GitHub CLI and replaces the installed skill without fresh consent. Compromised upstream code could execute locally.
高
Python environment access
env = {**os.environ, "CI": "1"}
The updater copies every environment variable into the unpinned downloaded CLI process. This exposes unrelated credentials to code outside the audited package.
高
Synchronous file operations
res.end(readFileSync(local));
The server reads files after a string-prefix containment check, which accepts sibling directories and follows escaping symlinks. Local requests can disclose files outside the preview root.
高
Ruby/shell backtick execution
版本检查:!`sh "${CLAUDE_SKILL_DIR}/scripts/check_update.sh" 2>/dev/null || true`
This is a real host command hook, not ordinary Markdown formatting. Loading the skill can trigger unpinned remote CLI execution through check_update.sh.
中
Synchronous file operations
writeFileSync(file, Buffer.from(data, "base64"));
Screenshot paths incorporate unchecked --states values at lines 358-359 and 366. Parent-directory segments can escape the output directory and overwrite writable PNG files.
中
Synchronous file operations
writeFileSync(tmp, html);
The generated sheet includes unescaped state labels from line 284, then opens the HTML at line 292. Crafted labels can execute scripts or load external resources.

风险因素

⚡ 包含脚本 (5)
⚙️ 外部命令 (50)
assets/style-explorer.html:144 assets/style-explorer.html:145 assets/style-explorer.html:147 assets/style-explorer.html:154 assets/style-explorer.html:189 assets/style-explorer.html:195-218 assets/style-explorer.html:218 assets/style-explorer.html:230-232 assets/style-explorer.html:232-233 assets/style-explorer.html:233-254 assets/style-explorer.html:254-270 assets/style-explorer.html:270 assets/style-explorer.html:272-286 assets/style-explorer.html:286-298 assets/style-explorer.html:298-308 assets/style-explorer.html:308-314 assets/style-explorer.html:314-324 assets/style-explorer.html:324-329 assets/style-explorer.html:329 assets/style-explorer.html:143 assets/style-explorer.html:174 assets/style-explorer.html:192 assets/style-explorer.html:193 assets/style-explorer.html:196 assets/style-explorer.html:197 assets/style-explorer.html:220 assets/style-explorer.html:237 assets/style-explorer.html:240 assets/style-explorer.html:248 assets/style-explorer.html:249 assets/style-explorer.html:252 assets/style-explorer.html:256 assets/style-explorer.html:257 assets/style-explorer.html:258 assets/style-explorer.html:260 assets/style-explorer.html:264 assets/style-explorer.html:275 assets/style-explorer.html:280 assets/style-explorer.html:282 assets/style-explorer.html:283 assets/style-explorer.html:285 assets/style-explorer.html:286 assets/style-explorer.html:287 assets/style-explorer.html:298 assets/style-explorer.html:308 assets/style-explorer.html:314 assets/style-explorer.html:315 assets/style-explorer.html:316 assets/style-explorer.html:321 assets/style-explorer.html:322
🌐 网络访问 (50)
📁 文件系统访问 (40)
🔑 环境变量 (29)
审计者: codex