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 istable.-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 isauto(color when writing to a terminal). usealwaysto preserve color through pipes π
π COMMANDS π
filepath β inspect a single ELF file. one file, one vibe check.dirdirectory β inspect all ELF files in a directory. add-r,--recursiveto recurse into subdirectories πfortifyFilepath β report fortified/fortifiable libc calls in a file.fortifyProcpid β 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 π±procpid β inspect the executable of a running process ID.procAllβ inspect all running processes. kernel threads and processes without a readable/proc/<pid>/exeare 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-allare not the primary v3 interface. - use v3 subcommands instead (for example,
checksec file /path/to/binorchecksec 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
- arch rolling: checksec 3.2.0-2 Β· BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms