원클릭으로
rust-audit
Security audit checklist for Rust code. Use when auditing Rust code for security vulnerabilities.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Security audit checklist for Rust code. Use when auditing Rust code for security vulnerabilities.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Guides for Haskell code. Use when writing Haskell code.
Replace lens with microlens-* in Haskell packages
Re-generate Cabal freeze files.
Improve performance of Haskell code. Use when asked to profile or improve performance.
Reviews Haskell comments for Haddock markup opportunities. Use when reviewing or improving Haskell documentation comments.
Remove extraneous comments. Use when the user requests removing comments.
| name | rust-audit |
| description | Security audit checklist for Rust code. Use when auditing Rust code for security vulnerabilities. |
Run scripts/audit.py (located relative to this skill file) to perform the audit. Do not audit files manually — the script handles finding candidates, spawning subagents, and triaging results.
Only report bugs that you are certain of.
exists() then open(), metadata() then rename())?File handle (std): file.metadata(), file.set_permissions(), etc. don't re-resolve the path and are safe from symlink swaps.openat, renameat, linkat), use the rustix or nix crates — these aren't in std.symlink_metadata() (std) or O_NOFOLLOW via rustix/nix when you don't want to follow symlinks.std::fs::rename, std::fs::copy, etc.) re-resolve paths on each call — flag their use in security-sensitive paths.chmod-ed afterward? This creates a window where the file is world-readable.OpenOptions::mode() (Unix) or equivalent to set permissions atomically at creation time.File::create() followed by a separate set_permissions() call.path == "/")? Alternate representations like /../ can bypass these checks.fs::canonicalize() or equivalent before comparing.== comparisons on Path, PathBuf, or string literals that look like filesystem paths.OsStr/OsString values forced through .to_str() or .to_string_lossy() without justification? This can silently corrupt non-UTF-8 filenames or byte streams.OsStr, PathBuf, and &[u8] for filesystem paths and binary streams; only convert to String when the data is guaranteed to be valid UTF-8..unwrap() on .to_str() calls — these panic on non-UTF-8 OS strings.unwrap() or expect() calls on values derived from untrusted input (user-supplied arguments, file contents, network data)?? propagation or explicit error handling over unwrap()/expect() at trust boundaries.Result values being ignored (implicit let _ = ... or missing ?)?#[must_use] lints and clippy::must_use_candidate..ok() calls that discard errors without comment.