seinfoflow(1)

NAME
seinfoflow - Information flow analysis for SELinux policies

SYNOPSIS
seinfoflow [OPTIONS] -m MAP -s SOURCE [-t TARGET (-S|-A LIMIT)] [EXCLUDE [EXCLUDE ...]]

DESCRIPTION

seinfoflow is a command line tool that allows the user to perform information flow analyses on an SELinux policy.

POLICY

A single file containing a binary policy. This file is usually named by version on Linux systems, for example, policy.30. This file is usually named sepolicy on Android systems. If no policy file is provided, seinfoflow will search for the policy running on the current system. If no policy can be found, seinfoflow will print an error message and exit.

PERMISSION MAP

A file containing mappings of object permissions for object classes. These mappings are the basis on how to compute the infoflow between types. On Debian a standard permission map can be found when the package python3-sepolgen is installed at /var/lib/sepolgen/perm_map.

OPTIONS

  Analysis Settings

-p POLICY
    Specify the policy to analyze. If none is specified, seinfoflow will search for the policy running on the current system.

-m MAP
    Specify the path to the permission map file to use in the information flow analysis.

-s SOURCE
    Specify the source type to use in the information flow analysis.

-t TARGET
    Specify the target type to use in the information flow analysis. Using this option will also require specifying an analysis algorithm.

  Analysis Algorithms
seinfoflow uses graph algorithms to analyze the information flow paths of an SELinux policy. The following algorithms are options for determining paths from a source type to a target type.

-S  Print the shortest information flow path(s) from the source type to the target type. If multiple paths have the same length, all will be displayed.

-A LIMIT
    Print all information flow path(s) up to LIMIT steps long. Depending on the connectiveness of the policy, a limit of 5 or more may be extremely expensive.

  Analysis Options

-w MIN_WEIGHT
    Specify the minimum permission weight to consider for the analysis (1-10). The default is 3.

-l LIMIT_FLOWS
    Specify the maximum number of information flows to output. The default is unlimited.

-o OUTPUT_PATH
    Generate a graphical representation of the analysis in PNG format at the specified path.

-b <boolname>:true[,<boolname2>:false,...]
    Specify boolean values to use in the analysis. Multiple booleans can be specified, separated by commas. Alternatively, this option can be set with the special value "-b default" to use the default boolean values from the policy. If this option is not specified, the analysis will include all possible infomation flows, including both "if" and "else" branches of boolean expressions.

EXCLUDE
    A space-separated list of types to exclude from the analysis.

  General Options

-r, --reverse
    Display information flows into the source type. No effect if a target type is specified.

--stats
    Print information flow graph statistics at the end of the analysis.

-h, --help
    Print help information and exit.

--full
    Print full rule lists for information flows.

--version
    Print version information and exit.

-v, --verbose
    Print additional informational messages.

--debug
    Enable debugging output.

EXAMPLE
Show the shortest paths for process running as httpd_t to access user home files, using the default permission map:
# seinfoflow -s httpd_t -t user_home_t -S
List all data paths shorter than 3 steps from smbd_t to httpd_log_t, when samba_enable_home_dirs and samba_create_home_dirs booleans are enabled
# seinfoflow -s smbd_t -t user_home_t -A 3 -b "samba_enable_home_dirs:true,samba_create_home_dirs:true"

AUTHOR
Chris PeBenito <pebenito@ieee.org>

BUGS
Please report bugs via the SETools bug tracker, https://github.com/SELinuxProject/setools/issues

SEE ALSO
apol(1), sediff(1), sedta(1), seinfo(1), sesearch(1)