Skip to main content

Android SELinux policy analysis tools.

Project description

Android SETools: Policy analysis tools for SELinux

Android-SETools

Open-source fork from the SELinux Project SETools framework, with emphasis on support of analyzing Android SELinux policy files.

Overview

This file describes SETools. SETools is a collection of graphical tools, command-line tools, and libraries designed to facilitate SELinux policy analysis. Please consult the KNOWN-BUGS file prior to reporting bugs.

Installation

SETools uses the Python setuptools build system to build, and install. As such it contains a setup.py script that will install the tools.

To run SETools command line tools, the following packages are required:

  • Python 3.8+
  • NetworkX 2.0+ (2.6+ for Python 3.9+)
  • setuptools
  • libselinux
  • libsepol 3.2+

To run SETools graphical tools, the following packages are also required:

  • PyQt5
  • qt5-assistant
  • qt-devel (only if rebuilding the help file)

To build SETools, the following development packages are required, in addition to the development packages from the above list:

  • gcc
  • cython 0.27+ (0.29.14+ for Python 3.8+)

To run SETools unit tests, the following packages are required, in addition to the above dependencies:

  • pytest
  • tox (optional)

Obtaining SETools

SETools is included in most Linux distributions which support SELinux, such as Fedora, Red Hat Enterprise Linux, Gentoo, and Debian.

Official releases of SETools may be freely downloaded from the GitHub releases page.

SETools source code is maintained within a GitHub repository. From the command line do:

  $ git clone https://github.com/mkomet/setools.git

You may also browse the GitHub repository. The master branch has development code that may not be stable. Each release series is considered stable, and has its own branch, e.g. "4.0" for all 4.0.* releases. To checkout a stable branch, do:

  $ git checkout 4.0

Where 4.0 is the release series. Each release will have a tag.

Building SETools for Local Use

To use SETools locally, without installing it onto the system, unpack the official distribution or check out the git repository, and perform the following at the root:

  $ python setup.py build_ext -i

This will compile the C portion of SETools locally, and then the tools can be ran from the current directory (e.g. ./seinfo).

Rebuilding the Apol Help File

For convenience, a prebuilt copy of the apol help data file is included. To rebuild this file, the Qt5 development tools are required (particularly, the qcollectiongenerator tool). At the root of the SETools sources, perform the following:

  $ python setup.py build_qhc

Installing SETools

Unpack the official distribution or check out the git repository, and perform the following at the root:

  $ python setup.py build_ext
  $ python setup.py build
  $ python setup.py install

This will put the applications in /usr/bin, data files in /usr/share/setools, and libraries in /usr/lib/pythonX.Y/site-packages/setools.

Building SETools with a Local Libsepol and Libselinux

At times, SETools requires a newer libsepol than is available from distributions. To use a locally-built libsepol instead of the libsepol provided by the Linux distribution, build the libsepol sources and then set the USERSPACE_SRC environmental variable to the path to the root of SELinux userspace source tree. The libsepol and libselinux must already be compiled.

  $ export USERSPACE_SRC=/home/user/src/selinux
  $ python setup.py build_ext
  $ python setup.py build
  $ python setup.py install

This feature assumes that the directory structure at $USERSPACE_SRC is the same as the SELinux userspace code checked out from GitHub.

Since SETools is dynamically linked to libsepol and libselinux, you must specify the path to the libsepol/src and libselinux/src directories by using LD_LIBRARY_PATH so that the newer versions of the libraries are used.

  $ export LD_LIBRARY_PATH="/home/user/src/selinux/libsepol/src:/home/user/src/selinux/libselinux/src"
  $ ./seinfo policy.31
  $ ./sesearch -A sysadm_t policy.31

Installation Options

Please see python setup.py --help or python setup.py install --help for up-to-date information on build and install options, respectively.

Unit Tests

One goal for SETools is to provide confidence in the validity of the output for the tools. The unit tests for SETools can be run with the following commands:

  $ python setup.py build_ext -i
  $ pytest tests

Features

SETools encompasses a number of tools, both graphical and command line, and libraries. Many of the programs have help files accessible during runtime.

Graphical tools

Tool Name Use
apol A Qt graphical analysis tool. Use it to perform various types of analyses.

Command-line tools

Tool Name Use
sechecker Configuration file-driven automated analysis.
sediff Compare two policies to find differences.
sedta Perform domain transition analyses.
seinfo List policy components.
seinfoflow Perform information flow analyses.
sesearch Search rules (allow, type_transition, etc.)

Analysis Libraries

The SETools libraries are available for use in third-party applications. Although this is not officially supported, we will do our best to maintain API stability.

Reporting bugs

Bugs can be reported in the SETools GitHub issues tracker.

Copyright license

The intent is to allow free use of this source code. All programs' source files are copyright protected and freely distributed under the GNU General Public License (see COPYING.GPL). All library source files are copyright under the GNU Lesser General Public License (see COPYING.LGPL). All files distributed with this package indicate the appropriate license to use. Absolutely no warranty is provided or implied.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

File details

Details for the file android_setools-4.5.0.dev3-cp312-cp312-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for android_setools-4.5.0.dev3-cp312-cp312-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 6064ca4fae9ca8cf8c2a258048c68c0c1f38025e206c20c9388fa5e9f44e76a3
MD5 2eb720a91bb5d7997d3bf44cf8a16e42
BLAKE2b-256 fd93d60b0d6ba96f8ed9240af2a7e094d341191b7c7ec91a35e185067e30fb26

See more details on using hashes here.

File details

Details for the file android_setools-4.5.0.dev3-cp311-cp311-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for android_setools-4.5.0.dev3-cp311-cp311-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 012b99010241bf2ae54f631c8782123a32643e2f426c7af4ab334afe26feb775
MD5 3d67d7afe27234e4138af6a2edcb318a
BLAKE2b-256 8cdac6f0791e6ce076634d4a09f45fe13d296d62ff22b048bfdafa8441499d50

See more details on using hashes here.

File details

Details for the file android_setools-4.5.0.dev3-cp310-cp310-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for android_setools-4.5.0.dev3-cp310-cp310-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 85015b057032006e7cce92acdc4d6bca1a37780361bc32c1915f295d4120a254
MD5 df3e90e4d9c8e1525366334356dc9c41
BLAKE2b-256 854c192ebd01d7c227eb40fda3e62e63fd263940212a6ca0db1b47c6caeb5df2

See more details on using hashes here.

File details

Details for the file android_setools-4.5.0.dev3-cp39-cp39-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for android_setools-4.5.0.dev3-cp39-cp39-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 1ae0cb3822903c94c2e5b052500bcba4e42eef7f8665323077ce3ecfdf014a24
MD5 16573806d12cc2cbc14ce41b941618d3
BLAKE2b-256 0b99fa9dae66c0e8dc8f4495cea4ed324788833f4df5244d603b0ac9ff3f44e0

See more details on using hashes here.

File details

Details for the file android_setools-4.5.0.dev3-cp38-cp38-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for android_setools-4.5.0.dev3-cp38-cp38-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 2a0623e3054a7b705b9bcdf667fa623fd2f16d0f966ccd0a851c594f2809cab1
MD5 46b0383df4fdbd18e9af508cdf99ae7a
BLAKE2b-256 a4e3debd420c8d2e3c2d7d9e3bee054047ba16169822442d351556a7cc34a98f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page