CHECKSEC(1)

πŸ’… CHECKSEC β€” bestie's guide to checksec(1)

okay so this is the General Commands Manual page for checksec, and I'm gonna walk you through it like we're texting at 2am, except the facts are all 100% correct because I would never do you dirty like that 🫢


✨ NAME ✨

checksec β€” it checks the security properties of executables and your kernel. that's it. that's the whole vibe check πŸ”


πŸ¦‹ SYNOPSIS πŸ¦‹

checksec [--help] [--version] [--output table|xml|json|yaml]
         [--libc path] [--no-banner] [--no-headers] [--no-warnings]
         [--color auto|always|never] command [command-options]

like literally just look at it. flags first, then a command, then whatever options that command takes. iconic structure, no notes πŸ’…


🌸 DESCRIPTION 🌸

so checksec is a Go implementation of the checksec utility (yes, the classic one, reborn in Go, we love a glow-up ✨).

it inspects ELF binaries and the running kernel for all the common hardening features, namely:

  • RELRO
  • NX
  • PIE
  • RPATH/RUNPATH
  • stack canaries
  • Clang CFI hints
  • fortify-able libc usage

and then it prints the results as a table, or serializes them for machine consumption. your scripts can eat too, bestie πŸ“


πŸŽ€ GLOBAL OPTIONS πŸŽ€

  • -h, --help β€” display help and dip out. bye πŸ‘‹
  • -v, --version β€” show the version and exit. proof of existence ✨
  • -o, --output=table|xml|json|yaml β€” set the output format. default is table.
  • -l, --libc=path β€” set the libc location. super useful for fortify checks on offline/embedded filesystems btw 🧚
  • --no-banner β€” disable the startup banner. no frills, just facts.
  • --no-headers β€” disable the table headers. minimalist queen behavior πŸ‘‘
  • --no-warnings β€” suppress warning messages (think: missing libc, unreadable symbol tables). silence is golden πŸ’€
  • --color=auto|always|never β€” control color output. default is auto (color when writing to a terminal). use always to preserve color through pipes 🌈

πŸ’œ COMMANDS πŸ’œ

  • file path β€” inspect a single ELF file. one file, one vibe check.
  • dir directory β€” inspect all ELF files in a directory. add -r, --recursive to recurse into subdirectories πŸŒ€
  • fortifyFile path β€” report fortified/fortifiable libc calls in a file.
  • fortifyProc pid β€” report fortified/fortifiable libc calls for a running process ID.
  • kernel [config] β€” inspect kernel hardening via /proc/config.gz, /boot/config-<release>, or a supplied config path. pick your source, bestie 🌱
  • proc pid β€” inspect the executable of a running process ID.
  • procAll β€” inspect all running processes. kernel threads and processes without a readable /proc/<pid>/exe are skipped. no crashing, just skipping πŸ’…

🧚 COMPATIBILITY NOTES 🧚

read this part fr fr, it'll save you so much confusion 😭
  • the legacy v2/bash options such as --file, --dir, and --proc-all are not the primary v3 interface.
  • use v3 subcommands instead (for example, checksec file /path/to/bin or checksec procAll).
  • if you want compact output similar to older invocations, use --no-banner (and optionally --no-headers).

πŸ”₯ EXAMPLES πŸ”₯

checksec file /bin/ls
checksec --no-banner --no-warnings file /bin/ls
checksec --color=always file /bin/ls | grep RELRO
checksec --output json dir /usr/bin
checksec dir /usr/bin --recursive
checksec proc 1
checksec kernel
checksec kernel /path/to/config

copy, paste, slay. that last one with grep RELRO? chef's kiss, the color survives the pipe 😌🌈


πŸ‘‘ DIAGNOSTICS πŸ‘‘

most commands exit non-zero on fatal errors (e.g., unreadable files). so yeah, check your exit codes, bestie 🫢

the procAll command though? it skips processes it cannot read and continues. resilient queen. it does not give up πŸ’€βœ¨


⭐ SEE ALSO ⭐

hardening-check(1), feature_test_macros(7), gcc(1), ld(1) β€” go read those too, iykyk πŸ“š


🌺 HISTORY 🌺

checksec was originally written by Tobias Klein. the current project is maintained by Brian Davis <slimm609@gmail.com>. legends only 🫑


okay that's the whole page, you're officially caught up πŸ’–

this lil manual page came from Debian and it's dated February 2026 β€” so yeah, she's current, she's fresh, she's giving main character energy 🌟 mwah, go check some secs bestie πŸ’…πŸŽ€

πŸ“¦ where this page comes from