بنقرة واحدة
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.