Provided by: freebsd-manpages_12.2-2_all bug

NAME

     mac_biba — Biba data integrity policy

SYNOPSIS

     To compile Biba into your kernel, place the following lines in your kernel configuration
     file:

           options MAC
           options MAC_BIBA

     Alternately, to load the Biba module at boot time, place the following line in your kernel
     configuration file:

           options MAC

     and in loader.conf(5):

           mac_biba_load="YES"

DESCRIPTION

     The mac_biba policy module implements the Biba integrity model, which protects the integrity
     of system objects and subjects by means of a strict information flow policy.  In Biba, all
     system subjects and objects are assigned integrity labels, made up of hierarchal grades, and
     non-hierarchal components.  Together, these label elements permit all labels to be placed in
     a partial order, with information flow protections based on a dominance operator describing
     the order.  The hierarchal grade field is expressed as a value between 0 and 65535, with
     higher values reflecting higher integrity.  The non-hierarchal compartment field is
     expressed as a set of up to 256 components, numbered from 0 to 255.  A complete label
     consists of both hierarchal and non-hierarchal elements.

     Three special label values exist:

           Label         Comparison
           biba/low      lower than all other labels
           biba/equal    equal to all other labels
           biba/high     higher than all other labels

     The “biba/high” label is assigned to system objects which affect the integrity of the system
     as a whole.  The “biba/equal” label may be used to indicate that a particular subject or
     object is exempt from the Biba protections.  These special label values are not specified as
     containing any compartments, although in a label comparison, “biba/high” appears to contain
     all compartments, “biba/equal” the same compartments as the other label to which it is being
     compared, and “biba/low” none.

     In general, Biba access control takes the following model:

        A subject at the same integrity level as an object may both read from and write to the
         object as though Biba protections were not in place.

        A subject at a higher integrity level than an object may write to the object, but not
         read the object.

        A subject at a lower integrity level than an object may read the object, but not write
         to the object.

        If the subject and object labels may not be compared in the partial order, all access is
         restricted.

     These rules prevent subjects of lower integrity from influencing the behavior of higher
     integrity subjects by preventing the flow of information, and hence control, from allowing
     low integrity subjects to modify either a high integrity object or high integrity subjects
     acting on those objects.  Biba integrity policies may be appropriate in a number of
     environments, both from the perspective of preventing corruption of the operating system,
     and corruption of user data if marked as higher integrity than the attacker.  In traditional
     trusted operating systems, the Biba integrity model is used to protect the Trusted Code Base
     (TCB).

     The Biba integrity model is similar to mac_lomac(4), with the exception that LOMAC permits
     access by a higher integrity subject to a lower integrity object, but downgrades the
     integrity level of the subject to prevent integrity rules from being violated.  Biba is a
     fixed label policy in that all subject and object label changes are explicit, whereas LOMAC
     is a floating label policy.

     The Biba integrity model is also similar to mac_mls(4), with the exception that the
     dominance operator and access rules are reversed, preventing the downward flow of
     information rather than the upward flow of information.  Multi-Level Security (MLS) protects
     the confidentiality, rather than the integrity, of subjects and objects.

   Label Format
     Almost all system objects are tagged with an effective, active label element, reflecting the
     integrity of the object, or integrity of the data contained in the object.  In general,
     objects labels are represented in the following form:

           biba/grade:compartments

     For example:

           biba/10:2+3+6
           biba/low

     Subject labels consist of three label elements: an effective (active) label, as well as a
     range of available labels.  This range is represented using two ordered Biba label elements,
     and when set on a process, permits the process to change its active label to any label of
     greater or equal integrity to the low end of the range, and lesser or equal integrity to the
     high end of the range.  In general, subject labels are represented in the following form:

           biba/effectivegrade:effectivecompartments(lograde:locompartments-
           higrade:hicompartments)

     For example:

           biba/10:2+3+6(5:2+3-20:2+3+4+5+6)
           biba/high(low-high)

     Valid ranged labels must meet the following requirement regarding their elements:

           rangehigheffectiverangelow

     One class of objects with ranges currently exists, the network interface.  In the case of
     the network interface, the effective label element references the default label for packets
     received over the interface, and the range represents the range of acceptable labels of
     packets to be transmitted over the interface.

   Runtime Configuration
     The following sysctl(8) MIBs are available for fine-tuning the enforcement of this MAC
     policy.

     security.mac.biba.enabled     Enables enforcement of the Biba integrity policy.  (Default:
                                   1).

     security.mac.biba.ptys_equal  Label pty(4)s as “biba/equal” upon creation.  (Default: 0).

     security.mac.biba.revocation_enabled
                                   Revoke access to objects if the label is changed to dominate
                                   the subject.  (Default: 0).

SEE ALSO

     mac(4), mac_bsdextended(4), mac_ifoff(4), mac_lomac(4), mac_mls(4), mac_none(4),
     mac_partition(4), mac_portacl(4), mac_seeotheruids(4), mac_test(4), maclabel(7), mac(9)

HISTORY

     The mac_biba policy module first appeared in FreeBSD 5.0 and was developed by the TrustedBSD
     Project.

AUTHORS

     This software was contributed to the FreeBSD Project by Network Associates Labs, the
     Security Research Division of Network Associates Inc.  under DARPA/SPAWAR contract
     N66001-01-C-8035 (“CBOSS”), as part of the DARPA CHATS research program.