CHECKSEC(1)

NAME
checksec - check executable and kernel security properties

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

DESCRIPTION
checksec is a Go implementation of the checksec utility. It inspects ELF binaries and the running kernel for common hardening features such as RELRO, NX, PIE, RPATH/RUNPATH, stack canaries, Clang CFI hints, and fortify-able libc usage. Results can be printed as a table or serialized for machine consumption.

GLOBAL OPTIONS

-h, --help
    Display help and exit.

-v, --version
    Show version and exit.

-o, --output=table|xml|json|yaml
    Set output format. Default is table.

-l, --libc=path
    Set libc location (useful for fortify checks on offline/embedded filesystems).

--no-banner
    Disable the startup banner.

--no-headers
    Disable table headers.

--no-warnings
    Suppress warning messages (e.g., missing libc, unreadable symbol tables).

--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.

dir directory
    Inspect all ELF files in a directory. Use -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.

proc pid
    Inspect the executable of a running process ID.

procAll
    Inspect all running processes. Kernel threads and processes without readable /proc/<pid>/exe are skipped.

COMPATIBILITY NOTES

•   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

DIAGNOSTICS
Most commands exit non-zero on fatal errors (e.g., unreadable files). The procAll command skips processes it cannot read and continues.

SEE ALSO
hardening-check(1), feature_test_macros(7), gcc(1), ld(1)

HISTORY
checksec was originally written by Tobias Klein. The current project is maintained by Brian Davis <slimm609@gmail.com>.