Discretionary access control weaknesses, multilevel security, and integrity models

A detailed, example-driven guide to discretionary access control (DAC), the Morris Worm, capabilities, confinement, Bell–LaPadula, label lattices, assurance, all five Biba policies, Clark–Wilson, and the Chinese Wall policy.

Contents

Access control, confidentiality, and integrity

Security mechanisms answer different questions. Identity-based permissions determine who may access an object; information-flow models constrain where data may move; integrity models restrict how less trustworthy influence reaches critical state. The distinctions matter because a mechanism can enforce its own rule correctly while leaving a different security objective unresolved.

DAC at a glance. Discretionary access control (DAC) decides whether a subject may perform an operation on an object by consulting identity-based permissions, such as the owner, group, and mode bits on a Unix file or the entries in an access-control list. It is called discretionary because an authorized owner or rights holder can often grant permissions to someone else. DAC answers “who may access this object?” but does not, by itself, control where information may flow after an authorized read.
Scope. The article connects discretionary control, confinement, confidentiality, assurance, integrity, and conflict-of-interest policies. Historical software examples remain historical; clarification boxes identify simplifications and inconsistencies in the referenced material.

Acronym and notation glossary

Acronyms are expanded when they first become important in the article. This glossary also covers abbreviations that appear only in the complete source appendix. Hover or focus an underlined abbreviation elsewhere on the page to see its expansion.

Access control and security models

DAC
Discretionary Access Control: identity- and permission-based control in which authorized holders can often share rights.
ACL
Access-Control List: the subjects and rights associated with an object, corresponding to a column of an access matrix.
MAC
Mandatory Access Control: a system-wide policy that users and object owners cannot freely override.
MLS
Multilevel Security: processing information at several sensitivities while serving users with different clearances and needs-to-know.
BLP
Bell–LaPadula: a confidentiality model associated with “no read up” and “no write down.” The initials come from the authors’ surnames.
TCB
Trusted Computing Base: every component on which enforcement of a stated security policy depends.
TCSEC
Trusted Computer System Evaluation Criteria: the historical US “Orange Book” evaluation framework.
BST
Basic Security Theorem: the BLP invariant argument that begins with a secure state and requires every transition to preserve security.

Systems, identity, and networking

OS
Operating System: the software layer that manages hardware, processes, memory, files, and protection boundaries.
UID / EUID
User Identifier and Effective User Identifier: Unix process identities; the effective ID normally drives permission checks.
CPU / I/O
Central Processing Unit and Input/Output: computation and communication with storage, networks, or devices.
VM
Virtual Machine: an isolated guest environment running on virtualized hardware.
IPC
Interprocess Communication: mechanisms such as sockets, pipes, shared memory, and message queues used by processes to exchange data.
POSIX
Portable Operating System Interface: a family of standards for Unix-like operating-system interfaces.
SELinux
Security-Enhanced Linux: a Linux security framework supporting mandatory policies such as domain-type enforcement.
SMTP / TCP
Simple Mail Transfer Protocol and Transmission Control Protocol: the email-transfer protocol and reliable transport protocol used in the sendmail example.
MIC
Mandatory Integrity Control: the Windows integrity-label mechanism discussed in the Biba comparison.
PDF / PIN
Portable Document Format and Personal Identification Number: a document format and a secret numeric authenticator used in examples.
MULTICS
Multiplexed Information and Computing Service: the time-sharing operating system discussed in the original Bell–LaPadula work.

Common Criteria and assurance

CC
Common Criteria: the international security-evaluation framework standardized as ISO/IEC 15408.
TOE
Target of Evaluation: the precisely identified product or system being evaluated.
ST
Security Target: the requirements, assumptions, and claimed security behavior for one TOE.
PP
Protection Profile: implementation-independent requirements for a class of products or a consumer need.
EAL
Evaluation Assurance Level: one of seven assurance packages describing the rigor of a Common Criteria evaluation, not the strength of its feature set.
CAPP
Controlled Access Protection Profile: the example protection profile named in the source material.
FTLS
Formal Top-Level Specification: a formal description used in the historical A1 verified-design requirements.
ISO/IEC
The international standards bodies responsible for ISO/IEC 15408.

Integrity and information-flow terms

UDI / CDI
Unconstrained and Constrained Data Items: Clark–Wilson terms for untrusted input and protected data governed by the integrity model.
IVP
Integrity Verification Procedure: a check that confirms whether protected data satisfies its integrity specification.
TP
Transformation Procedure: a certified, well-formed operation that changes protected data.
WFT
Well-Formed Transaction: a constrained operation designed to preserve integrity rules.
UMIP
Usable Mandatory Integrity Protection: a research approach named in the DAC material.
IFEDAC
Information Flow Enhanced DAC: a research approach that augments discretionary control with information-flow tracking.
TE
Type Enforcement: policy decisions based on a subject domain, object type, object class, and operation.
DBMS
Database Management System: software that stores and queries structured data; access-control triples map naturally to relational tables.

Labels, organizations, and publication names

TS; S; C; U
Top Secret, Secret, Confidential, and Unclassified: the scalar security-level shorthand used in examples.
LM, LC, LO
Maximum subject level, current subject level, and object classification in the BLP notation.
NSA / NCSC
National Security Agency and National Computer Security Center.
NATO; NASA; NOFORN
Examples of organizations and handling categories used as compartments in security labels.
R&D / HR
Research and Development and Human Resources: commercial compartment examples.
ACM / IEEE
Professional organizations that publish several cited security papers.
SIGOPS / TISSEC / SSP
Publication and conference abbreviations appearing in the reading list.

1. The Morris Worm: exploitation and damage

D4–16 · background, attack vectors, propagation, and containment

What makes a worm a worm?

A worm is self-propagating malware. Its essential cycle is find targets → compromise a target → copy itself and execute → repeat. Propagation can itself cause damage. A program does not need a file-deletion routine to exhaust CPU, memory, process slots, or network capacity.

The article’s historical example is the November 1988 Morris Worm, written by Robert Morris Jr. The biographical source material notes that his father worked as chief scientist at the NSA’s National Computer Security Center. The security lesson is the combination of several ways into a machine with the broad permissions available once code is running.

Two cooperating components

The main program searched for other machines and tried infiltration methods. A small vector program, described as 99 lines of C, was compiled and run on a compromised machine to transfer the main program. Think of the vector as a bootstrap: the first foothold only needs enough functionality to obtain and start the larger program.

Discover a host
routing tables, host files, trust files

Gain execution
unsafe feature, overflow, or account access

Run vector
retrieve main program

Repeat
new hosts and duplicate infections
Vector What the article describes Why the boundary fails
sendmail DEBUG (D7) The Simple Mail Transfer Protocol (SMTP) service listens on Transmission Control Protocol (TCP) port 25. In this example it was compiled with a debugging feature that allowed a supplied shell script to execute. The notes describe a script bootstrapping the C vector, which retrieves the main worm. A deliberately available feature grants dangerous behavior to a remote caller. Memory safety alone would not remove that feature.
fingerd overflow (D8–9) The finger client retrieves user information; fingerd listens on port 79. An unbounded gets read overflows a 512-byte buffer and overwrites control information, including a return address. Data crosses into control: bytes intended as an input string redirect execution. The resulting code runs with the daemon’s authority.
Remote-login trust and passwords (D10–11) Remote-login utilities trust listed hosts/users; the worm examines trust files, guesses reciprocal relationships, and cracks passwords using about 400 common guesses plus a local dictionary. Trust in a remote identity becomes a route for an attacker who has captured that identity. A valid-looking request can still originate from a compromised host.

Why the fingerd overflow matters to access control

A buffer reserves a bounded area of memory. A read function that does not check the input length may keep writing beyond it. In the article’s example, the excess input changes where the program returns, so the attacker’s instructions run instead of the intended continuation. The key access-control observation comes after this mistake: the kernel still sees a process running under the daemon account. It does not infer that the instructions now express an attacker’s intent.

According to D11, the fingerd entry ran as daemon, not root. That is a useful limit, but it still allowed substantial activity. Root access was not required for this propagation path. If a program-specific policy prevented the daemon from executing a shell, the particular shell-based chain described in D16 would fail. This does not prove that every conceivable attack on the daemon would fail.

Remote trust, step by step

  1. A host accepts logins from certain accounts on another host without a fresh password challenge.
  2. An attacker gains control of a trusted account or host.
  3. The attacker presents a request that satisfies the configured trust rule.
  4. The receiving host honors the rule, so compromise can spread across that trust relationship.

System-wide trust appears in /etc/hosts.equiv; user-specific trust appears in ~/.rhosts, with a root home-directory variant on older systems. D10 spells the system file /etc/host.equiv, while the supplementary notes use hosts.equiv. Reciprocal trust was a heuristic: “X trusts Y” does not logically imply “Y trusts X.” The worm tried this assumption because it could expose more targets.

The article describes reading historical /etc/passwd password hashes and testing guesses offline. A dictionary attack tries likely passwords rather than every possible string. Account access mattered because the daemon identity alone did not provide the regular user’s remote-login privileges. These are historical password-storage and remote-login examples, not instructions about present systems.

Hiding, parallelism, and repeated infection

The notes explain that the worm made its process name appear as sh and opened then unlinked its files. This illustrates an important filesystem behavior: removing a directory entry does not immediately destroy data still referenced by an open file. The worm searched routing information using netstat -r -n and host information such as /etc/hosts. A successful connection led to a child handling infection while the parent continued searching.

Repeated copies consumed resources until machines became slow or unusable. D13 gives a 1/8 probability of proceeding even after a host reported an existing infection. Its supplementary notes say 1 in 7. Keep that inconsistency visible: use the displayed 1/8 when answering a question explicitly based on D13, and focus on the mechanism rather than silently treating the two values as equal.

Worked availability example

Using D13’s 1/8 probability, 80 independent positive “already infected” responses give an expected 80 × 1/8 = 10 additional infection attempts. That is an expectation, not a guaranteed count or a model of the entire outbreak. It illustrates why a nonzero reinfection probability can create substantial duplicate work even without a destructive payload.

What better access control can and cannot do

D16 says the DEBUG and desired mutual-trust behavior cannot be stopped by access control. Read this in context: a policy that deliberately permits those operations will not reject a request merely because its purpose is hostile. Removing the unsafe feature, narrowing trust, or adding a separate confinement policy changes that context. D16 also reverses the earlier vector numbering; refer to each vector by name.

D14 generalizes compromise to buggy network daemons, vulnerable browsers/mail clients, readers of downloaded files, configuration errors such as weak passwords and DEBUG options, social engineering, running malicious attachments or Trojan programs, and physical access. Preventing entry and limiting post-entry authority solve different parts of the problem.

Question: A worm cannot delete files. Can it still violate security?

Yes. Repeated execution and propagation can violate availability through resource exhaustion. It may also obtain unauthorized access even without a separate destructive payload. Classify the observed harm, not just the author’s stated intent.

2. Discretionary access control, the confused deputy, and capabilities

D17–32 · with access-matrix review

Discretionary access control (DAC) lets an authorized subject propagate rights at its discretion, often through object ownership. The article’s Trusted Computer System Evaluation Criteria (TCSEC) definition includes identity and need-to-know, with direct or indirect passing of permissions. A Unix file owner granting access is a familiar instance. “Discretionary” describes control over rights; it does not mean access checks are optional.

The compiler serves two masters

The compiler SYSX/FORT needs authority from its administrator to update SYSX/STAT and SYSX/BILL. It also accepts an output filename from the invoking programmer. The programmer can choose the name SYSX/BILL without having permission to write that file directly.

  1. The administrator gives the compiler billing authority for a legitimate purpose.
  2. The user asks the compiler to place ordinary compilation output in SYSX/BILL.
  3. The compiler resolves that filename using its available authority.
  4. The write succeeds because the compiler has billing rights, corrupting or erasing billing information.

The deputy is the compiler. The confusion is about whose authority should justify this particular write. The compiler need not be malicious or suffer a buffer overflow. It can faithfully perform an operation using the wrong source of authority.

Administrator
authority to update billing

Compiler
both authorities available

SYSX/BILL overwritten
user-chosen output name

A filename designates an object but does not itself prove that the caller may access it. This separation creates the danger when an operation combines an attacker-chosen name with authority acquired for a different purpose.

Three meanings of “capability”

Meaning What it represents What not to infer
Linux/POSIX capabilities Pieces of traditionally broad root privilege, such as permission to perform a privileged operation. Splitting root powers does not by itself produce a complete object-capability system.
Capability list A row-oriented representation of an access matrix: the objects and rights held by a subject. A written list of object names is not automatically unforgeable authority.
Capability-based system Unforgeable, transferable references/tokens that designate resources and authorize particular operations. Capabilities do not automatically prevent authorized recipients from leaking data or misusing tokens they actually hold.

One matrix, three representations

Subject F G
U read, write, own read
V none read, write, own

Access-control lists (ACLs) encode columns: F stores U’s rights; G stores U’s read right and V’s read/write/own rights. Capability lists encode rows: U holds F/read, F/write, F/own, G/read; V holds G/read, G/write, G/own. Access-control triples encode cells: (U, read, F), (U, write, F), (U, own, F), (U, read, G), (V, read, G), (V, write, G), (V, own, G). The article notes that triples fit relational database storage. These encodings describe the same permissions; their organization supports different lookups.

The capability solution, with explicit authority selection

The caller must supply an output capability, not just an arbitrary output name. The compiler stores its statistics capability in slot 1, billing capability in slot 2, and the caller’s output capability in slot 3. Output code uses slot 3. The caller cannot supply a billing capability that it does not hold.

statistics update → use slot 1 → SYSX/STAT
billing update    → use slot 2 → SYSX/BILL
ordinary output   → use slot 3 → caller-authorized output

The protection depends on keeping these uses distinct. Code that deliberately substitutes slot 2 for slot 3 can still misuse its real billing authority. The design removes the need to search all ambient authority just to resolve the requested output operation. The article’s illustrative Unix variant allows only owners to open files and shares access by passing already-open file descriptors; it is a hypothetical capability-style sharing design, not a claim about ordinary Unix file-opening rules.

Ambient authority and naming

Ambient authority is authority automatically available without selecting its source for the operation. In the source material’s banking analogy, showing an ID unlocks access to every account for which you are authorized; choosing a name can accidentally charge the wrong one. In the token analogy, you present the account’s passport and PIN, explicitly identifying the account authority being exercised.

The supplementary notes use a secretary working for two faculty members with the same surname. If the secretary has general authority over both accounts, a naming mistake can charge the wrong account. Associating each request with its own account token makes the intended authority explicit.

ACL systems need names for objects and for the users/groups they list. Capabilities can combine object designation and authority in one reference. D31 argues that large, changing populations of process-level subjects make identity-based policy management difficult; many ACL systems therefore use relatively stable user accounts. D32 offers conjectures about capability adoption: passing references suits process sharing but can complicate user-level sharing and couple cooperating programs. These are design tradeoffs in the article, not a measured claim that capabilities are absent from modern systems.

Question: Is changing the output string to a secret random filename enough?

No. The underlying question is whether the output operation uses caller-authorized access. An obscure name may reduce guessing but does not correctly bind the operation to the caller’s authority. A capability also must be unforgeable and convey the permitted rights.

3. Trojan horses and the process–principal gap

D18, D33–44 · three related but distinct DAC weaknesses

Why perfect per-file checks can still leak information

File A’s permissions B’s permissions
F: private information read, write none
G: shared output write read

B provides a useful-looking program named Goodies. A runs it. The Trojan component reads F using A’s authority, copies the data into G using A’s authority, and lets B read G using B’s own rights.

F ──read allowed for A──▶ Goodies running as A
                         │
                         └──write allowed for A──▶ G ──read allowed for B──▶ B

Every individual DAC check can succeed correctly. The missing constraint is on the flow of information from F to G. Revoking B’s direct access to F does not stop the copy. Even if A is honest, A’s program can be malicious. Replacing explicit malware with an exploited reader produces the same authority problem.

Who is actually responsible for a request?

A subject is the executing process that asks to read or write. A principal is an identity whose authority or influence should matter. Traditional Unix checks largely associate a process with its effective UID. The article asks whether this one identity captures everyone whose intentions may control the request.

Event What the effective user identifier (EUID) still says Who may now influence behavior
A starts an ordinary shell A A, subject to trusting the shell and system
A executes Goodies supplied by B A A and the program provider B
A’s Portable Document Format (PDF) reader opens an attacker’s file A A, the reader’s implementation, and potentially the input provider if the file exploits a bug

The first implicit assumption is benign software: programs perform the user’s intended task rather than hidden malicious actions. The second is correct software: programs safely handle input, so an input provider cannot inject behavior through a vulnerability. A program can be benign but incorrect, or intentionally malicious even if its implementation works exactly as its author intended.

D42–43 argues that this weakness is not simply “owners may set permissions.” It is also an enforcement problem: the process can act under several parties’ influence while the system attributes the request to one invoker. More principled origin tracking can treat the program provider and input providers as relevant principals and conservatively account for uncertainty.

Match each proposed fix to the failure

Failure Proposed direction Remaining issue
Wrong authority selected by a deputy Explicit capabilities Authority still needs correct use and delegation.
Authorized reads followed by unsafe disclosure Mandatory information-flow rules such as BLP Labels, transitions, and unmodeled channels matter.
EUID loses origin/influence information UMIP and IFEDAC, or added controls Tracking and policy design must remain usable and sound.

D44 names Usable Mandatory Integrity Protection (UMIP) and Information Flow Enhanced DAC (IFEDAC) as research directions. Its notes cite Li, Mao, and Chen (2007) and Mao et al. (2011). The source notes do not specify their full algorithms; do not invent a precise enforcement rule from the acronym alone. The article’s claim about limited commercial deployment belongs to its historical context.

Question: Does a Trojan need to become root to steal A’s files?

No. If A can read the files and the program runs with A’s effective authority, the Trojan can read them too. The relevant question is whether a path to an attacker-observable output remains permitted.

4. Confinement and program-based restrictions

D45–54

The goal of sandboxing, virtualization, and isolation is to limit damage even after a program is compromised. Instead of relying entirely on perfect software, choose a boundary that restricts the resources an attacker-controlled process can reach.

Approach Boundary in the article Benefits and limits
One-kernel confinement Services share a kernel but receive restricted environments, with chroot and FreeBSD jail as examples. Low overhead and relatively simple administration; strength depends on the mechanism. These examples do not provide identical isolation.
Virtual machines A guest operating system runs on virtual hardware managed by virtualization software. A larger separation between guest environments, but added resource/management cost. Software inside one guest can still attack other software in that guest.
Program policy A policy limits the files, operations, and other resources available to a particular program/process. Finer control within an environment, but specifying the right policy is difficult.

What chroot changes

A process normally resolves an absolute pathname starting at its root directory. chroot changes that root for the process and its children. An administrator builds a limited filesystem tree, such as /chroot/named, then arranges for the daemon to see that directory as /. Its visible /etc now refers to the restricted tree’s etc.

Host view                         Confined process view
/chroot/named/                    /
/chroot/named/etc/service.conf     /etc/service.conf
/chroot/named/lib/                 /lib/

If a fingerd environment lacks a shell, compiler, or useful host files, the worm’s expected propagation chain may fail at those steps. But changing pathname lookup does not automatically prevent networking, resource exhaustion, or all interactions with other processes.

D50 explains why chroot requires privilege in the historical Unix model: an ordinary user could otherwise build a fake filesystem environment to mislead a privileged program, for example with a fabricated password file. It also warns that privileged processes can escape some chroot setups and that chroot alone supplies no CPU, bandwidth, disk-space, or I/O quota.

Implementation clarification. Linux documents chroot as changing pathname resolution, not as a complete sandbox. It does not change the current working directory or close existing file descriptors; privileges and other controls matter. The article’s “root only” wording is a traditional simplification of privilege checks. Linux chroot manual.

What a virtual machine does not solve

D51 describes a virtual machine (VM) using hosted emulation and runtime binary translation, with VirtualBox and VMware as examples, and labels the overhead significant. Treat those implementation/performance details as historical examples, not universal properties of every VM. The durable point in D52 is that isolation is relative to a boundary: placing an untrusted Portable Document Format (PDF) reader and confidential files in the same guest can preserve the original within-guest exposure.

Worked boundary choice

A compromised web service should serve public files but not read an SSH private key. A separate guest can isolate the key if the key stays outside the guest. A program policy can deny the web process access even if both live on the same machine. A chroot tree lacking the key may narrow pathname access, but does not establish a complete isolation argument by itself. State exactly which resource and operation each boundary blocks.

Program-based controls supplement user-based DAC. In a simplified combined decision, allowed = DAC allows AND program policy allows. The same user can launch two programs with very different legitimate needs. The challenge is writing a policy broad enough for intended work and narrow enough to restrict attacker behavior.

5. Security-Enhanced Linux and AppArmor policy examples

D55–64

Security-Enhanced Linux (SELinux): domains, types, classes, and operations

The article introduces SELinux as a system for finer, flexible mandatory policies, historically developed by the National Security Agency (NSA) and Secure Computing Corporation. It mentions deployment in Linux distributions and Android. Its central idea is to consider more than the user identity when authorizing a request.

A matrix with every process and every individual object is too large to administer directly. Domain-type enforcement groups subjects into domains and objects into types. The decision considers:

  1. the subject’s domain, such as sshd_t;
  2. the object’s type, such as sshd_tmp_t;
  3. the object class, such as file, socket, or interprocess communication (IPC) object;
  4. the requested operation, such as read, execute, create, or unlink.
allow sshd_t sshd_exec_t:file { read execute entrypoint }
allow sshd_t sshd_tmp_t:file { create read write getattr setattr link unlink rename }

Read the first rule as: a process in domain sshd_t is allowed those listed operations on file-class objects of type sshd_exec_t. entrypoint concerns use of an executable as an entry point into a domain. It is not a general permission to run all programs. The second rule allows the listed file-management operations on sshd_tmp_t objects, not on every temporary file.

Worked rule lookup

A process in sshd_t asks to write a file labeled sshd_tmp_t. The second rule includes write, so that rule supplies an SELinux allow for this request. Change the label to httpd_tmp_t: the shown rule no longer matches. Change the operation to execute: write permission does not imply execute. A real decision also depends on other applicable checks and the complete policy.

Where labels come from

type_transition initrc_t sshd_exec_t:process sshd_t
type_transition sshd_t tmp_t:notdevfile_class_set sshd_tmp_t

The first article rule specifies a resulting process domain based on the source domain and executable type. The second specifies a resulting type for newly created objects using the creator’s domain and the parent directory’s type, for the named class set. A transition rule specifies a label; it is not by itself every permission required to execute or create. The names and syntax here come from the historical source material. D58’s example /etc/shadow → etc_t is an illustrative label, not a promise about a current installation.

Strict versus targeted policy

D61 contrasts strict policy, aiming to confine the whole system, with targeted policy, concentrating on selected daemons. Strict policy’s administrative difficulty matters: a policy that breaks ordinary use invites disabling or excessively broad exceptions. The source material references Fedora Core 2 and 3, so its deployment claims are historical.

Clarification of D61. “Everything is allowed; use deny rules” is misleading as a general explanation of targeted SELinux. Targeted policy confines selected domains and leaves other activity broadly unconfined through policy permissions. Confined access still needs applicable allows. Do not confuse targeted policy with disabling SELinux or with an inherently deny-list-only engine. Red Hat targeted-policy explanation.

AppArmor: reading the supplied profile

AppArmor associates a program with a profile describing allowed activity. D63’s example is for /usr/bin/foo. It includes shared abstractions and tunables, capability and network rules, path rules, and a subprofile called bar. The key contrast here is SELinux’s type/domain-oriented example versus AppArmor’s path-oriented profile example.

Source example Interpretation
#include <tunables/global>
#include <abstractions/base>
Reuse variable definitions and common rules; effective policy includes more than the visible local lines.
capability setgid,
network inet tcp,
Permit the specified capability use and IPv4 TCP networking, subject to other system checks.
/etc/foo.conf r,
/etc/foo/* r,
Read the named configuration file and matching entries.
/lib/lib*.so* mr,
/usr/lib/** mr,
Read matching libraries and allow executable memory mapping.
/tmp/foo.pid wr,
/tmp/foo.* lrw,
Read/write the PID file; additionally allow hard-link creation for the second pattern.
/@{HOME}/.foo_file rw,
/@{HOME}/.foo_lock kw,
Historical variable-based home paths: read/write the data file, lock/write the lock file.
/bin/mount ux,
/usr/bin/bar px,
The source example permits unconfined execution of mount; bar requests a separate execution profile. These are materially different authority choices.
/dev/{,u}random r,
/proc/[0-9]** r,
Patterns select random/urandom and matching numeric process paths. Pattern breadth affects what is exposed.
/tmp/ r,
/etc/ld.so.cache r,
/lib/ld-*.so* mr,
Directory read, loader-cache read, and executable mapping/read of matching loaders. Directory permissions do not automatically give every child file the same rights.
^bar { ... /var/spool/* rwl, ... } A historical subprofile block with its own loader, execution, and spool-file rules. Merely declaring a subprofile is not the same as selecting it.

Permission key: r read; w write; m executable mapping; l hard-link creation; k locking. ux executes unconfined; px uses a separate profile. * stays within a path component while ** can span directories. The full historical profile text is retained in the source appendix. These meanings are clarified using the AppArmor profile manual; this is a reading exercise, not a deployable security profile.

Question: DAC allows a write, but the program’s enforcing policy does not. What happens?

The write is denied. An additional restriction does not become irrelevant just because the user owns the file. Conversely, a matching program-policy allow does not generally erase an independent DAC denial.

6. Bell–LaPadula: the system, the policy, and access decisions

M5–17 · Bell–LaPadula (BLP) and multilevel security (MLS)

Why mandatory control enters the story

Multilevel security (MLS) means processing information at different sensitivities on a system used by people with different clearances and needs-to-know, while preventing unauthorized disclosure. Subjects/users have clearances; objects have classifications. The simple hierarchy is Top Secret > Secret > Confidential > Unclassified.

A mandatory policy limits what users can do even with objects they create. If A reads a classified file, A cannot simply grant B a right that overrides the system’s information-flow restriction. BLP was introduced in 1973 in the context of concerns about classified information in time-sharing systems, including bugs and accidental misuse.

Model, policy, verification

  • System model: the abstract description of entities and actions.
  • Security policy: the condition that defines acceptable behavior.
  • Verification: an argument that the modeled system satisfies that condition.

The article describes a security model as system model plus security policy, supported by verification techniques. These are separate questions: a correct proof of a poorly chosen policy does not establish the desired real-world goal.

BLP models a computer as a state-transition system. A state records objects, an access matrix, current accesses, and labels. There is a set of subjects, with some designated trusted. The notes assume a fixed subject set. Transition rules describe changes such as acquiring access, releasing it, or modifying labels.

Notation Meaning Example
LM(s) Subject’s maximum security level A process may be authorized to operate up to Top Secret.
LC(s) Subject’s current security level It currently operates at Secret.
LO(o) Object’s classification A particular file is Confidential.
Access matrix Discretionary rights potentially available The process has read but not write for that file.
Current accesses Access relationships active in this state The process currently holds read access to the file.

The three properties in the article

Simple security: read requires LM(s) ≥ LO(o).
Star property, untrusted subjects: read requires LC(s) ≥ LO(o); write requires LC(s) ≤ LO(o).
Discretionary security: each requested access must also appear in the access matrix.

The familiar mnemonic is no read up, no write down. Use it with care: the article distinguishes maximum clearance from current level, and read access must satisfy both relevant conditions. A label comparison alone does not grant access when the discretionary matrix denies it. M15 uses “iff” within each property; the full decision is the conjunction of the applicable properties.

For an untrusted subject at a fixed current level, reads may bring information upward from lower objects; writes may move information upward to higher objects. Reading and writing the same object requires equality with its current level in the simple linear-label case. We assume the usual well-formed relation LC ≤ LM. Here “write” means the article’s write-only operation; a read-and-write operation must pass both checks.

Worked decision table

Let maximum = Top Secret and current = Secret. Assume the matrix grants each operation shown.

Object Read? Write? Reason
Top Secret No Yes Maximum permits the read, but current level does not. Write goes upward.
Secret Yes Yes Equal to current level.
Confidential Yes No Read is downward; write would disclose downward.
Unclassified Yes No The same comparison holds.

Now remove the matrix write right for the Top Secret object. That write becomes denied, even though the star-property inequality still passes.

How the star property blocks Goodies

If Goodies must operate at Secret to read F, it cannot write the secret contents to an Unclassified G under the star property. If it instead operates at Unclassified, its current-level read restriction prevents reading F. The two permissions needed for the direct copy are never available together at those labels.

Trusted subjects and trusted humans

M15 exempts designated trusted subjects from the star property. In this article’s formulation they still face the simple-security and discretionary requirements. A trusted subject is relied upon to handle otherwise unsafe flows correctly; it is not automatically proven harmless. The scheduler is a motivating example in the notes.

The star property applies to processes, not to all human behavior. A person who sees a secret could repeat it outside the computer. The model assumes authorized humans obey the relevant secrecy obligations, while their software may contain Trojan code. This is an explicit scope boundary.

BLP decision lab

Scalar levels only. Choose a request and check every applicable gate. The lab rejects a current level above maximum.

 

7. Why secure states may still allow an insecure history

M19–25 · a central conceptual difficulty

The across-state counterexample

A snapshot may look secure even though the process remembers something learned earlier. In M20, s1 has maximum/current High and reads a High object o1. A second subject s2 and object o2 are Low. The leak happens when s1 changes level after ending its read.

Step Current level of s1 Action Why the snapshot passes Hidden concern
1 High Read High o1 Read is at its level. s1 remembers the secret.
2 High Release read access No prohibited active access. Releasing access does not erase memory.
3 Low Lower current level No active read of o1 remains. Secret still influences s1.
4 Low Write Low o2 Write is at its current level. High information reaches Low storage.
5 Low s2 s2 reads o2 Low reads Low. A low-cleared observer obtains the secret.

The problem is the combination of remembered information and an unconstrained label change. The article is criticizing the sufficiency of the presented snapshot conditions for the intended information-flow objective. Do not interpret it as “all formulations of BLP permit arbitrary insecure relabeling.” Transition restrictions are part of what a complete model must specify.

Tranquility and history-aware labels

M20 proposes preventing current-level changes, or at least preventing a subject from dropping below the highest level it has read. At scalar levels, a history label can follow current ← max(current, level read), bounded by maximum clearance. With categories, replace max with a lattice join. A process that has read Secret cannot later act as Unclassified while retaining that information.

A correctly designed fresh low process or trustworthy sanitization mechanism requires its own argument about retained state and permitted flow. Simply closing a file or changing the displayed label is not enough. This is why policy must cover state transitions, not just the inequalities on a single request.

Why the article also says “not necessary”

M21 considers A writing High information into a Low file f. That violates the star property. But if only A can access f and no lower-cleared subject or externally visible sink ever receives it, the intended unauthorized disclosure may never occur. Thus the BLP snapshot rule can reject some histories that do not actually expose the information to an unauthorized observer.

Not sufficient: passing the listed state conditions may still allow the remembered-information sequence. Not necessary: violating a state condition need not cause disclosure in every surrounding system. The two claims compare the formal predicate with the intended disclosure goal. They do not mean the star property is useless.

State-sequence reasoning

M22 suggests distinguishing externally visible objects, such as a printer, from internal memory objects, and defining security over entire state sequences. Ask whether any information path leads from a High object to a Low subject or observable output. This captures a temporal relationship that a snapshot of current file accesses may miss.

The Basic Security Theorem, with the induction exposed

Secure initial state + every reachable transition preserves security ⇒ every reachable state is secure.
  1. Base case: show the starting state q0 satisfies the chosen security predicate P.
  2. Induction hypothesis: assume the state qn after n actions satisfies P.
  3. Induction step: show every possible next action from that reachable state leads to q(n+1) satisfying P.
  4. Conclusion: P holds after every finite sequence of actions.

For the reverse direction, if every reachable state is secure, the start and the targets of actions in actual executions are secure. The source material emphasizes this meaning of “action.” One does not need to establish properties of unreachable transitions merely because they appear syntactically in a larger transition relation.

The theorem is a general invariant-preservation argument. It would also prove “every reachable state has a nonnegative counter” if that were the predicate. It cannot prove that the predicate adequately defines confidentiality. M24 attributes this criticism to John McLean’s work from 1985, 1987, and 1990.

M25 credits BLP with an influential method for formal security reasoning, a state-transition model incorporating subjects/objects/labels/access matrices, and the star property showing why clearance checks alone are insufficient.

Question: A proof shows that every reachable state satisfies the three BLP properties. Has all information leakage been ruled out?

Only the precisely modeled property has been established. Check label transitions, retained information, trusted subjects, and the channels represented by the model. The proof does not enlarge its own assumptions or scope.

8. Overt channels, covert channels, and BLP’s limits

M27–30

An overt channel uses an ordinary communication operation, such as writing a file another process reads. A covert channel repurposes an observable shared resource that is not intended as that communication path. BLP’s object read/write restrictions do not automatically account for every resource that can carry a signal.

Shared resource High sender’s action Low receiver’s observation
File lock Hold the lock for 1; release it for 0. Whether a lock attempt succeeds in an agreed time slot.
CPU / I/O / paging Change workload, I/O ratio, or paging activity. Changes in latency or available resources.
Packet timing Choose short versus long gaps. The timing pattern, even if payload contents carry no secret.

The necessary ingredients are influence and observation: one party can affect some state or timing and another can detect the effect. The article assumes cooperating high and low subjects with an agreed encoding. Ordinary background activity creates noise, but repetition and error-correcting codes can still allow communication.

Worked bandwidth example

Suppose a lock encodes one bit per 100 ms slot. The ideal rate is 1 / 0.1 = 10 bits/second. Sending each bit three times reduces raw useful data to roughly 10/3 ≈ 3.33 bits/second, before synchronization overhead. Repetition can improve reliability under some noise patterns. This is an illustrative calculation, not a measured bandwidth from the source notes.

The notes’ prisoners example encodes information in apparently innocuous messages, such as odd/even word lengths. Its purpose is to show that allowed-looking activity can carry a second meaning agreed by the communicating parties.

M30 says eliminating every covert channel is generally extremely difficult, so systems may try to bound bandwidth. It mentions historical military use of hardware cryptographic components to reduce the possibility of software Trojan leakage of keys. This is a article example, not a verified statement of current procurement rules, and hardware is not a universal proof against all channels.

BLP also does not establish integrity. A low subject’s write upward can be allowed by the confidentiality inequalities and still damage an important high object if other controls allow it. Whether information may be disclosed and whether data may be corrupted require different arguments.

Question: A High process cannot write any Low file, but modulates CPU load. Is “no write down” enough?

No. If the Low process can observe timing differences and decode them, the resource creates an unmodeled communication path. File-access enforcement can succeed while the confidentiality objective fails through that path.

9. Categories, dominance, and security lattices

M31–35

A single ranking is often too broad. A Top Secret clearance for one project should not automatically grant every other project’s secrets. Categories, also called compartments, represent separate needs-to-know: military examples include army/navy/air force and the labels NATO/NASA/NOFORN used in the article; commercial examples include Sales, R&D, HR, and departments.

A full label is (level, set of categories). Typical commercial levels in M31 are restricted ≥ proprietary ≥ sensitive ≥ public. The mathematical construction uses all category subsets, including the empty set.

(e1, C1) ≤ (e2, C2) exactly when e1 ≤ e2 and C1 ⊆ C2.
Equivalently, label 2 dominates label 1 if its level is at least as high and it contains every category in label 1.

Both tests must pass. A higher rank does not compensate for missing a category. An object marked (Secret, {army, navy}) requires both army and navy authorization, not either one.

A B Relationship
(TS, {army, navy}) (S, {army}) A dominates B: higher level, category superset.
(TS, {army}) (S, {navy}) Incomparable: A lacks navy; B has lower level and lacks army.
(S, {army}) (S, {navy}) Incomparable despite equal scalar levels.
(S, {}) (S, {army}) B dominates A because {} is a subset of every set.

Why this is a partial order

Reflexive: each label dominates itself. Antisymmetric: if A dominates B and B dominates A, their levels and category sets are equal. Transitive: if A dominates B and B dominates C, A dominates C. It is not generally a total order because two labels may be incomparable.

Why it is a lattice: joins and meets

A lattice gives every pair a unique least upper bound (join) and greatest lower bound (meet). For these labels:

join((e1,C1),(e2,C2)) = (max(e1,e2), C1 ∪ C2)
meet((e1,C1),(e2,C2)) = (min(e1,e2), C1 ∩ C2)

The join is the least label sufficient to cover information from both inputs. If a process combines (Secret, {army}) and (Top Secret, {navy}), the join is (Top Secret, {army, navy}). A lower scalar level would miss the second source’s rank; omitting either category would miss part of the information. Their meet is (Secret, {}).

Reconstructing M34’s eight labels

With levels {Secret, Top Secret} and categories {army, navy}, each level combines with {}, {army}, {navy}, and {army, navy}. That produces eight nodes. Bottom is (Secret, {}), top is (Top Secret, {army, navy}). Moving upward means raising the level or adding a category; edges connect labels with no intermediate label between them.

Top: TS {army, navy}
TS {army} · TS {navy} · S {army, navy}
TS {} · S {army} · S {navy}
Bottom: S {}

These rows group the diagram by distance from the bottom. They do not make every label in one row dominate every label in the next. Use the two-part comparison.

Counting labels

For k independent categories, each category is either included or excluded, so there are 2k subsets. With n scalar levels, the product contains n × 2k labels. M33’s four levels and five categories give 4 × 32 = 128 labels. This assumes the full product, with no excluded combinations.

Applying BLP with categories

Replace ≥ by dominates. For an untrusted subject, both maximum and current labels must dominate the object for a read. For a write, the object must dominate the current label. If current is (Secret, {army}), writing (Top Secret, {navy}) is denied: the destination is higher in rank but lacks army. The access matrix remains an additional gate.

M35’s need-to-know says that clearance alone is insufficient; access should be needed for official duties. Categories provide compartment restrictions, and DAC can further restrict particular documents. Least privilege asks more broadly that an actor receive only the authority needed for its task.

Label comparison lab

Choose two labels. The result shows dominance, incomparability, join, and meet.

Label A

Label B

 

10. Trust, the trusted computing base, and the reference monitor

M37–42

Trusted means the system’s security depends on a component. If it fails or acts maliciously, the policy can fail. Trustworthy means the component deserves that reliance because of properties such as correct implementation. The first describes its role; the second describes its quality.

A deliberately uncomfortable example

A poorly written privileged password-changing program is trusted if it can corrupt password data. It may be untrustworthy at the same time. Calling it “trusted” names a dependency that must be justified; it is not praise.

The trusted computing base (TCB) includes all hardware, software, and procedural components on which enforcement of the chosen policy depends. The source notes list hardware, kernel, system binaries/configuration, boot-related components, and setuid-root programs as typical Unix dependencies. Exact membership depends on the security objective and architecture.

For protecting a password entered at a login prompt, the input path and login/OS machinery matter. For protecting webmail or online banking information, the browser processing those credentials/content joins the relevant dependencies. “The browser is outside the TCB” has no meaning without specifying the objective and possible access paths.

M38’s “smaller TCB means more secure” expresses a design direction: fewer dependencies can make review and assurance more tractable. Size alone is not a mathematical guarantee of security. A tiny but incorrect monitor still fails.

Assurance and kernelized design

Assurance is confidence that a system will not fail in the specified way, supported by architecture, development process, developer practices, and technical assessment. A small security kernel can centralize enforcement and reduce the code whose correctness must be trusted.

A reference monitor mediates relevant accesses. M40’s idealized diagram places it within the TCB, with user requests passing through its security checks. The aim is that security need not depend on all ordinary kernel functionality. The article notes that most operating systems are not built exactly this way. Merely placing a box labeled “reference monitor” inside a large privileged kernel does not prove the surrounding code cannot subvert it.

Required property Meaning Failure example
Tamper-proof An untrusted party cannot change the monitor or its security data. A user overwrites the access-control rules.
Non-bypassable All relevant accesses are mediated; complete mediation. The file-open check is enforced, but an unchecked path reaches the same data.
Small enough to analyze The enforcement mechanism is tractable to examine and justify. Security depends on millions of lines with poorly understood interactions.

Assurance criteria such as TCSEC and Common Criteria give a framework for evaluation. Their origin in military needs does not mean every evaluated system must use the same security policy.

11. Security evaluation: TCSEC and Common Criteria

M43–59 · historical evaluation frameworks and careful interpretation

Trusted Computer System Evaluation Criteria (TCSEC) / Orange Book

The Trusted Computer System Evaluation Criteria, shown as 1983–1999 in M43, came from the US Department of Defense’s National Computer Security Center (NCSC). It emphasizes confidentiality, Bell–LaPadula (BLP), and the reference monitor. Related Rainbow Series publications included network and database interpretations.

Class Article’s distinguishing requirements
D: Minimal protection Does not meet another class.
C1: Discretionary protection DAC, identification/authentication, and TCB protection from external tampering.
C2: Controlled access protection Adds object reuse protection, auditing, and stronger security testing.
B1: Labeled security protection Informal security policy model, MAC for named objects, labeling exported objects, and stronger testing.
B2: Structured protection Formal policy model, broader MAC/labeling, trusted path, least privilege, covert-channel analysis, configuration management.
B3: Security domains All three reference-monitor properties, recovery procedures, development constraints, and more documentation.
A1: Verified design B3-equivalent functionality with stronger formal assurance, trusted distribution, and correspondence involving code and a formal top-level specification.

Object reuse means preventing a newly assigned resource, such as storage, from exposing a previous user’s residual data. A trusted path provides a protected way to interact with security functions rather than an easily impersonated interface. These requirements address ways security can fail outside a simple file-permission lookup.

Functionality versus assurance

Functionality: what protections exist? Assurance: how much justified confidence do we have in those protections? M48’s plot places B3 and A1 at similar functionality with A1 further along the assurance axis. Functionality has several dimensions: confidentiality, integrity, auditing, authentication, availability, and more. A single linear score hides those distinctions.

M47 criticizes TCSEC for focusing on operating systems and BLP-style confidentiality, omitting important commercial integrity/availability goals, and combining functionality and assurance in one scale. “Most commercial firms do not need MAC” is the article’s broad historical criticism of that evaluation focus, not a rule that commercial deployments never benefit from mandatory controls.

Common Criteria: separating requirements from evaluated products

The article introduces Common Criteria as the ISO/IEC 15408 framework, with recognition arrangements beginning in 1998. Its December 2015 country counts—19 authorizing and 8 consuming—and its listed editions/classes are historical source material facts, not current status. The durable idea is a framework in which requirements can be specified, claimed, and evaluated rather than one fixed list of product features.

Term Meaning Worked example
TOE: Target of Evaluation The identified product/system within evaluation scope. Version X of a database with the specified configuration and components.
PP: Protection Profile An implementation-independent set of requirements for a product category and consumer need. A profile requiring a category of database products to authenticate users and protect audit records.
ST: Security Target The security claims, requirements, and mechanisms for a particular TOE; may draw on a PP or CC components directly. The vendor states exactly which functions version X provides and the assumptions under which they operate.
EAL: Evaluation Assurance Level A package/rating, 1–7 in the source notes, describing the assurance requirements fulfilled. The assessment completed a specified degree of design review, testing, and evaluation work.

A PP itself can be evaluated. The article’s Controlled Access PP example includes authentication, user-data protection, prevention of audit loss, testing, administrator guidance, and lifecycle support. Its assumptions include well-managed non-hostile users and exclude malicious developers. Those assumptions delimit the claim; they are not details to ignore.

All requirement classes named in the source notes

Functional classes (M51): Security Audit; Communication; Cryptographic Support; User Data Protection; Identification and Authentication; Security Management; Privacy; Protection of Security Functions; Resource Utilization; TOE Access; Trusted Path. The Identification and Authentication example contains families for Authentication Failures, User Attribute Definition, Specification of Secrets, User Authentication, User Identification, and User/Subject Binding.

Assurance classes as listed in M52: Protection Profile Evaluation; Security Target Evaluation; Configuration Management; Delivery and Operation; Development; Guidance Documentation; Life Cycle; Tests; Vulnerabilities Assessment; Maintenance of Assurance. Learn what the distinction means: requiring authentication is functionality; examining its design and tests is assurance. This taxonomy reflects the article’s version of CC.

The seven EAL descriptions in the article

Level Name Emphasis in M56–57
1 Functionally Tested Functional/interface specifications and some independent testing.
2 Structurally Tested High-level design analysis, independent testing, review of developer testing.
3 Methodically Tested and Checked More testing and some development-environment controls.
4 Methodically Designed, Tested, and Reviewed More design description and confidence against tampering with the TOE.
5 Semiformally Designed and Tested Formal model, modular design, vulnerability search and covert-channel analysis.
6 Semiformally Verified Design and Tested More structured development and stronger verification.
7 Formally Verified Design and Tested Formal functional specification, simple analyzable design, independent confirmation of developer tests.

M58 warns against interpreting a higher EAL as automatically stronger security features. It states that more stringent assurance requirements were met, under the evaluated assumptions. Its remarks that below EAL4 “doesn’t mean much” and above EAL4 is hard for complex operating systems are the articler’s evaluative judgments, not definitions or universal laws.

M59 criticizes cost, documentation burden, delayed evaluation relative to product changes, and limited industry influence. These are the article’s criticisms, including its historical cost estimates, rather than present-day price quotations. The conceptual caution remains useful: inspect the TOE boundary, ST, assumptions, configuration, and claimed functions before comparing two ratings.

Question: Product A has EAL5 and product B has EAL4. Does A necessarily enforce a better confidentiality policy?

No. The products may claim different functionality, boundaries, and environmental assumptions. EAL concerns the evaluation’s assurance requirements. Compare what was evaluated before interpreting how rigorously it was evaluated.

12. Biba: five policies, five different behaviors

M61–70 · do not collapse them all into “BLP reversed”

What does integrity mean?

The article contrasts data integrity, described as detecting data changes, with system integrity: keeping critical state and actions correct. M62 tests increasingly useful definitions. “Critical data never change” prevents legitimate updates. “Changes only in correct ways” needs a definition of correct. “Changes through trusted programs” identifies an enforcement route, but requires justification for trusting those programs. “Changes as intended by authorized users” also requires relating the program’s behavior to authorized intent.

Biba gives subjects and objects integrity levels, totally ordered in these source notes. Higher subject integrity reflects greater confidence in a program’s behavior; higher object integrity can reflect confidence in the data. These are separate from confidentiality levels. An unverified intelligence report can be extremely secret but unreliable. A published public key or root certificate may need very high integrity even though its contents are public.

For all examples here, use High = 3, Medium = 2, Low = 1. A read carries influence from object to subject. A write carries influence from subject to object. Derive the rule from the direction of influence rather than memorizing an arrow without meaning.

12.1 Strict integrity

Read only if i(s) ≤ i(o): no read down.
Write only if i(s) ≥ i(o): no write up.
Subject and object labels stay fixed.

A high-integrity process must not base its actions on low-integrity input, and a low-integrity process must not modify high-integrity data. The first prevents indirect contamination; the second prevents direct modification from below. These constraints oppose BLP because BLP protects secrets from going downward while strict Biba protects trust from being polluted upward.

Worked strict-policy example

A High payroll process requests a read from a Low employee-uploaded CSV. 3 ≤ 1 is false, so the read is denied. A Low process requests a write to a High payroll database. 1 ≥ 3 is false, so the write is denied. The High process may read a High verified table and write a Medium report. A Medium process may read a High table but cannot write back to it.

Strict integrity is restrictive because useful systems need external inputs: banks must accept deposit requests, and operating systems must receive network data. If all external data are Low, strict no-read-down prevents high-integrity services from examining them. Trusted validation requires an explicitly justified exception or a different policy, not simply labeling arbitrary external input High.

12.2 Subject low-water mark

Any read is permitted, then i(s) ← min(i(s), i(o)).
Write only if i(s) ≥ i(o). Object labels do not change.

The subject records the lowest integrity of information it has consumed. It loses authority to write important objects after reading less trustworthy data. Labels move downward; ordinary reads do not restore trust.

Worked sequence

  1. Subject starts High (3).
  2. Reads Medium input: its label becomes min(3,2) = 2.
  3. Attempts to write a High file: 2 ≥ 3 is false, so deny.
  4. Reads Low input: its label becomes min(2,1) = 1.
  5. Reads High input: min(1,3) remains 1. Later clean input does not erase the earlier influence.
  6. Can still write a Low output, assuming other permissions allow it.

This is dual to a confidentiality history label that rises as a subject reads secrets. Confidentiality accumulates sensitivity upward; subject low-water integrity accumulates possible contamination downward. The policy prevents low-object influence from entering an object that remains protected as High.

12.3 Object low-water mark

Read only if i(s) ≤ i(o).
Any write is permitted, then i(o) ← min(i(s), i(o)). Subject labels stay fixed.

A write from a lower-integrity subject is accepted, but the destination no longer carries its former high-integrity claim. This policy protects the meaning of labels rather than preserving the contents of every object initially labeled High.

Worked sequence

A Low subject writes to an initially High object. The write succeeds and the object falls to Low: min(1,3) = 1. A High subject then tries to read it. The read fails because 3 ≤ 1 is false. There has been a modification of an important original object, but the system does not continue representing that contaminated content as High integrity.

M66 asks whether there is a path from low to high. Be precise about time: low can write an initially high object, but that operation lowers the label. Objects that retain High labels have not been contaminated through the modeled operations. This is unsuitable if “High” means a fixed asset must never be modified by Low subjects.

12.4 Low-water mark integrity audit

Any read: i(s) ← min(i(s), i(o)).
Any write: i(o) ← min(i(s), i(o)).

Both reads and writes are permitted, while labels trace possible contamination. The article compares this to taint tracking: it records influence rather than blocking the contaminated operation.

Worked chain

A High parser reads a Low document and becomes Low. It writes a High report, which becomes Low. A second High process reads that report and becomes Low too. The labels reveal the chain. The audit policy itself never denied the reads or writes, so calling it “prevention of modification” would be wrong.

12.5 Ring policy

Any read is permitted.
Write only if i(s) ≥ i(o).
All labels stay fixed.

High subjects may consume Low input while retaining the ability to write High objects. The system therefore trusts those subjects to handle low-integrity input correctly. This makes useful input processing possible, but moves the obligation into the trusted program’s behavior. A vulnerable parser is dangerous because its label does not automatically drop after reading hostile input.

Worked comparison with subject low-water

Start with a High subject, read a Low request, then write a High database. Under subject low-water, the read lowers the subject to Low and the write is denied. Under ring policy, the subject remains High and the write is allowed. Identical starting labels and requests lead to different outcomes because one policy tracks contamination while the other trusts the subject to resist it.

The complete policy comparison

Policy High subject reads Low object Low subject writes High object Labels that change
Strict Deny Deny Neither
Subject low-water Allow; lower subject Deny Subject on read
Object low-water Deny Allow; lower object Object on write
Audit low-water Allow; lower subject Allow; lower object Both
Ring Allow; retain subject level Deny Neither

M70 arranges these choices into a grid. The last row, “allow low write to high with no object downgrade,” is empty because it permits direct contamination while continuing to claim high integrity. The last column, “allow high read of low with no subject downgrade,” can contain ring policy because a high subject can be trusted to validate and interpret input. That is a trust assumption, not an automatic guarantee. The source notes also allow different policy choices for different subjects.

Biba one-step decision lab

Uses the article’s five policies only; assume other access checks pass. The result displays before/after labels. Each change starts a fresh one-step scenario.

 

13. Why integrity needs trusted writers

M71–76

Quality and importance are different dimensions

M71 gives two interpretations of an object’s integrity level: quality/trustworthiness, which can fall after contamination, and importance/protection requirement, which should not drop merely because an attacker tried to corrupt the asset. The first asks “how reliable is this content?” The second asks “how strongly must we protect this object?”

A log can be important evidence yet contain unreliable attacker-supplied messages. A temporary file can contain high-quality data but be unimportant after the task ends. If a design uses a quality label to justify operations requiring a protection threshold, it should demand quality at least as high as the required threshold. There is no universal equality or ordering between the two independent attributes for every object. When quality falls below a required threshold, a system should not quietly treat the data as meeting that requirement.

The confidentiality/integrity asymmetry

For confidentiality in an ideal model, an untrusted reader can be prevented from disclosing a secret by blocking every path from that reader to an unauthorized observer. The reader cannot disclose the particular secret without first receiving it. In contrast, a writer can invent false data without receiving any bad input. Blocking low-integrity reads does not prove that the writer’s own code is correct or honest.

Worked counterexample

A High payroll program never reads Low input. Its code nevertheless sets every employee’s pay to zero. Strict Biba’s read restrictions cannot establish that this update is semantically correct. If the program is allowed to write payroll data, payroll integrity depends on its behavior. It is trusted because of that write authority, and needs evidence of trustworthiness.

M73’s analogy says a person who knows a secret can be confined to prevent further disclosure, but a person issuing instructions can invent bad instructions even after isolation from outside influence. Within the article’s overt-flow abstraction, integrity therefore requires trust in critical writers.

M75 draws two implications: relying only on a tiny security kernel does not establish correctness of every application’s critical updates, and establishing trust in the relevant writers becomes a central challenge. Its statement that integrity needs “no worry” about covert channels is a model-level contrast: a trusted writer must already handle potentially bad influence correctly. It should not be generalized into a claim that covert influence is irrelevant in all real integrity systems.

Windows Mandatory Integrity Control example

M76 illustrates ring-like protection using Windows levels Low, Medium, High, and System. Normal-user processes are presented as Medium, elevated processes as High, and the historical Internet Explorer Protected Mode example as Low. The labels do not automatically change on reads or writes.

Implementation clarification. Microsoft describes Mandatory Integrity Control (MIC) as an additional integrity check, with no-write-up as the default policy and other configurable mandatory-label restrictions. “Ring policy” is a useful article analogy, not a complete specification of Windows authorization. Discretionary access control (DAC) and other restrictions still matter. Microsoft MIC documentation.

14. Clark–Wilson: trustworthy transformations

M78–84

Clark and Wilson’s 1987 model emphasizes commercial integrity: even an authorized user should not be allowed to alter assets or accounting records arbitrarily. The paper’s two conclusions, as presented in M78, are that commercial integrity requires a distinct set of policies, and that enforcing them requires mechanisms beyond the Orange Book’s disclosure-oriented approach.

Well-formed transactions

A well-formed transaction restricts changes to operations designed to preserve the system’s integrity rules. Users invoke trusted code instead of directly editing critical records. Examples in the article are password-changing programs, append-only transaction logs, and double-entry bookkeeping.

Worked transfer

Suppose account A has $100 and B has $40. A transfer procedure moves $25 from A to B, leaving A = $75 and B = $65. The invariant is A + B = $140, assuming this is a closed two-account transfer with no fee. A correct procedure validates the request, checks the allowed amount, applies both updates as one transaction, and records the operation. An arbitrary editor could debit A without crediting B, creating an invalid result.

The invariant is necessary for this example but not sufficient for authorization: moving $25 from the wrong person’s account can preserve the total while still being fraudulent. This distinction motivates controls beyond arithmetic consistency.

Internal versus external consistency

Internal consistency means the records satisfy the specified relationships. Double-entry bookkeeping can detect some errors because corresponding entries must balance. As the notes stress, balanced entries can still be wrong.

External consistency means records correspond to reality. An attacker might enter a fictitious equipment order, falsely record that it arrived, and pay an accomplice while all balances remain consistent. A program cannot establish actual delivery merely because someone entered “received.”

Separation of duty

Split a sensitive operation into parts performed by different people: one requests a purchase, another verifies delivery, and an authorized approver releases payment. The article’s two-person rule is a simple instance. The purpose is to require independent participation rather than let one individual fabricate every supporting step. Separation reduces unilateral fraud but does not make collusion impossible.

The four named components

Term Meaning Example
UDI: Unconstrained Data Item Input not yet subject to the system’s integrity guarantees. An uploaded invoice or a typed transfer request.
CDI: Constrained Data Item Protected data to which the integrity specification applies. Account balances, approved invoices, protected transaction log.
IVP: Integrity Verification Procedure Checks whether CDIs conform to the integrity specification. Reconciliation that checks balances and required corresponding entries.
TP: Transformation Procedure A certified well-formed transformation of protected data. An authorized transfer procedure with validation and logging.
User + UDI
request and untrusted input

Authorized TP
validate; constrain change

CDIs
protected records

IVP
check invariants

A UDI is not automatically promoted to a CDI merely because someone copies it into the database. The transformation must validate or reject it according to the integrity specification. An IVP checks state; a TP changes state in an approved way. Do not swap their roles.

Four enforcement needs in M81

  1. Control access to data: only the specified programs may manipulate each protected item.
  2. Certify programs: inspect them for correct construction and control who installs or modifies them.
  3. Control access to programs: authorize each user for only the appropriate procedures.
  4. Control administration: inspect and restrict how users are assigned to procedures.

The first two establish the well-formed transaction boundary; the latter two support separation of duty. If an administrator can silently authorize the same person for every step, the intended separation can disappear.

Worked permission distinction

A clerk may invoke recordDelivery but not approvePayment. A payment approver may invoke approvePayment only for records meeting the procedure’s checks. Neither receives arbitrary write access to the invoice database. A program maintainer should not be able to replace the TP with “approve everything” without controlled certification/installation.

Contrast with BLP: data are associated with allowed transformations rather than just sensitivity levels; users are authorized to invoke procedures rather than merely read/write data. Contrast with Biba: Biba tells us which integrity-level flows are acceptable but does not itself supply the process for establishing trustworthy critical writers. Clark–Wilson focuses on constraints, certification, and administration that support that trust.

Question: A transfer keeps total funds constant. Does that establish Clark–Wilson-style integrity?

No. Check authorization, correct accounts, allowed procedure invocation, input validation, audit requirements, separation of duties where required, and the trustworthiness of the TP. One arithmetic invariant does not cover the whole integrity specification.

15. Chinese Wall: permissions depend on history

M85–87

The Chinese Wall policy aims to prevent conflicts of interest. Organize data into three levels: individual objects → company datasets → conflict-of-interest classes. Competing companies share a conflict class. A subject’s first access in a class constrains later access to competitors in that class.

All objects
├─ Banking conflict class
│  ├─ Bank A dataset: forecasts, customer analysis
│  └─ Bank B dataset: forecasts, customer analysis
└─ Energy conflict class
   ├─ Energy X dataset: forecasts, contracts
   └─ Energy Y dataset: forecasts, contracts

M86’s original diagram uses conflict classes A, B, C, company datasets f/g/h, i/j/k, and l/m/n, with individual objects under each. The central idea is the hierarchy, not the letter names.

The simple-security rule in the source notes

An access is allowed if the requested object belongs to a company dataset already accessed by the subject, or it belongs to a conflict class in which the subject has not accessed a competing company dataset. For the first access, no conflicting history exists, so the subject can choose a company.

Apply the condition to the entire history. It is not enough for the new request to be in a different class from just the most recent object. Closing a file does not erase the conflict-of-interest history.

Worked sequence

Request Decision Reason
Read Bank A forecast Allow No banking dataset selected yet.
Read Bank A customer analysis Allow Same company dataset.
Read Bank B forecast Deny Competes with the already accessed Bank A dataset.
Read Energy X contract Allow Different conflict class, with no prior conflict there.
Read Bank B again Deny The Energy X access did not erase the Bank A history.
Read Energy Y forecast Deny Energy X has now selected that class’s company dataset.

This differs from a fixed BLP clearance: two analysts with the same initial privileges can end up with different allowed requests after choosing different clients. The restriction evolves with access history.

Scope clarification. These source notes give the simple access rule, not the full original write rule. A read-history restriction alone does not explain all indirect leakage prevention: an analyst might copy one company’s information into another dataset. The original Brewer–Nash paper adds a star property restricting writes and discusses sanitized information. This is supplemental context, not an extra article requirement. Brewer and Nash, 1989.

16. Model comparison and applied reasoning

Mechanism/model Primary question Key rule or idea Frequent mistake
DAC / ACL Which principal has which rights? Object/user permissions, often owner-controlled. Assuming an allowed read cannot lead to an unauthorized disclosure later.
Capabilities Which explicit authority authorizes this operation? Unforgeable resource reference with rights. Confusing tokens with mere names or with Linux privilege bits.
Program confinement What may this program do if compromised? Restrict reachable resources/operations. Assuming a boundary also protects everything inside it.
BLP Can classified information flow to an uncleared observer? No read up; no write down; matrix checks; careful transitions. Ignoring current level, categories, retained state, or covert channels.
Strict Biba Can lower-integrity influence contaminate higher-integrity state? No read down; no write up. Assuming every Biba variant uses these exact fixed-label rules.
Clark–Wilson Are authorized changes made through trustworthy procedures? Well-formed transactions and separation of duty. Equating balanced records with true or authorized transactions.
Chinese Wall Would access conflict with previously accessed clients? Same dataset or a class without conflicting history. Checking only the immediately previous access.

A repeatable method for scenario problems

  1. Name the objective: confidentiality, integrity, availability, or conflict avoidance.
  2. List subjects, principals, objects, rights, and initial labels/history separately.
  3. State the policy variant and its assumptions.
  4. Evaluate one operation at a time, checking all gates.
  5. After each allowed operation, update labels/history if that policy requires it.
  6. Trace the resulting information or modification path to the relevant observer/asset.
  7. Explain the residual dependency: trusted code, accurate labels, prior input, other checks, or an unmodeled channel.

Applied scenarios with worked explanations

1. The compiler can update BILL. Its caller cannot. Why can the caller still cause BILL to be overwritten?

The caller selects BILL as an output name, and the deputy uses its administrator-provided billing authority to satisfy an output request that should have used caller-provided authority. This is confused authority selection. The caller need not gain a direct ACL entry on BILL.

2. U can read F and write G; V can read G. All ACLs are correct. Identify the confidentiality path.

F → process running as U → G → V. Each local operation is authorized, while the composed path discloses F’s contents. A mandatory flow restriction must address the composition rather than just V’s direct read of F.

3. Maximum = TS, current = C, object = S. Can an untrusted BLP subject read it? Write it?

Read: maximum check passes (TS ≥ S), current check fails (C ≥ S is false), so deny. Write: C ≤ S passes. The write succeeds only if the discretionary matrix and any other required checks permit it.

4. Maximum = current = S. A subject reads S, closes the file, drops to U, and writes U. Which assumption caused the leak?

The subject retained the information while a transition allowed it to lower its current label. Closing the read did not erase memory. Preventing a drop below the sensitivity of prior reads, or another justified transition rule, is needed.

5. Does (TS, {army}) dominate (C, {army, navy})? What label covers both?

No. The scalar comparison passes, but navy is missing. Their join is (TS, {army, navy}), using max for levels and union for category sets.

6. With 3 levels and 6 independent categories, how many labels exist?

Each category has two inclusion choices, giving 2⁶ = 64 sets. Each set pairs with three levels: 3 × 64 = 192. Do not multiply 3 × 6; one label can contain several categories.

7. Under subject low-water, H reads M, then H, then writes H. Trace the labels.

After reading M, the subject is M. Reading H leaves it M because min(M,H) = M. Writing H is denied because M ≥ H is false. The second read does not remove contamination from the first.

8. Under object low-water, L writes an H file, then an H process reads it. What happens?

The write is allowed and changes the object to L. The H reader is denied because H ≤ L is false. The object’s original high contents may be corrupted; the policy preserves the meaning of the remaining high labels.

9. Under audit low-water, H reads L and writes H. What is denied?

Neither operation is denied by this policy. The read lowers the subject to L; the write lowers the destination to L. This traces contamination and does not itself stop it.

10. Under ring policy, H reads L and writes H. What must be trusted?

The H subject remains H and can write H. Its code must process low input correctly and preserve the intended integrity constraints. A label alone is not evidence of that correctness.

11. A high-integrity public key is publicly readable. Is that contradictory?

No. Confidentiality concerns disclosure; integrity concerns unauthorized or incorrect modification. A public key should often be visible while its authenticity must be protected. The two labels serve different purposes.

12. An attacker cannot change a monitor, but one device path bypasses it. Which reference-monitor property fails?

Non-bypassability, also called complete mediation. Tamper resistance does not ensure that every relevant access reaches the monitor.

13. An unreviewed privileged program is called “trusted.” What does that establish?

Only that policy enforcement depends on it. It does not establish trustworthiness. Its ability to break the policy puts it inside the relevant trusted computing base.

14. Is a Protection Profile the actual product undergoing evaluation?

No. The TOE is the identified product/system. The PP specifies implementation-independent requirements for a category. The ST gives the particular TOE’s claims and specifications. EAL describes assurance requirements met by the evaluation.

15. A clerk creates a purchase order, confirms delivery, and approves payment. Every record balances. What is missing?

Independent duties are missing. One person can fabricate the entire story while preserving internal consistency. Separate authorization and verification roles to improve confidence that records correspond to real events; trusted TPs alone do not prove physical delivery.

16. A reconciliation procedure checks whether every transfer has matching entries. TP or IVP?

Its checking role is an IVP. A procedure that performs the transfer while preserving the invariant is a TP. One implementation might contain both kinds of functionality, but their conceptual roles remain distinct.

17. An analyst reads Bank A, then Energy X, then requests Bank B. Why is Bank B denied?

Bank A remains in the history and competes with Bank B. The most recent Energy X access does not reset the banking conflict class.

18. Both strict BLP and strict Biba use the same ordered numeric labels. Can a subject freely read and write objects at different levels?

If both policies independently apply with aligned fixed levels and no exemptions, BLP reading requires subject ≥ object while strict Biba reading requires subject ≤ object. Both hold only at equality. The same happens for writing. Real confidentiality and integrity labels usually express different properties; applying both is a conjunction, not a choice of whichever permits access.

17. Readings, source limits, and source clarifications

The collected source material is the foundation of this article. The readings below are listed in the source material; their full texts were not included in the project and are not being represented as fully reviewed here. The online manuals cited in clarification boxes were used for the specific implementation distinctions indicated. Everything needed to use this article is embedded; opening external references is optional.

D2: DAC readings

  • Seeley, A Tour of the Worm, Winter USENIX 1989. Connection: the worm’s entry and propagation mechanisms.
  • Hardy, The Confused Deputy, ACM SIGOPS OSR, October 1988. Connection: binding an operation to the right source of authority.
  • Miller et al., Capability Myths Demolished. Connection: capability semantics and the ACL comparison.
  • Mao et al., Combining Discretionary Policy with Mandatory Information Flow in Operating Systems, ACM TISSEC, November 2011. D2 says reading the introduction is sufficient for this item. Connection: maintaining more of the origin/influence information lost by traditional DAC.

M2–3: security-model readings

  • Bell and La Padula, Secure Computer System: Unified Exposition and MULTICS Interpretation, Section II.
  • Biba, Integrity Considerations for Secure Computer Systems, MITRE MTR-3153, April 1977.
  • Clark and Wilson, A Comparison of Commercial and Military Computer Security Policies, IEEE SSP 1987.
  • Brewer and Nash, The Chinese Wall Security Policy, IEEE SSP 1989, listed as related reading.

Clarifications worth retaining

  • D1: the original heading was tied to an earlier organizational label; the article retains the technical topic without that framing.
  • D10: host.equiv in the source material versus hosts.equiv in the notes.
  • D13: reinfection probability 1/8 in the displayed source material versus 1 in 7 in the notes.
  • D16: attack vector numbering swaps sendmail and fingerd compared with D7–9.
  • D44, D51, D55, D61: adoption, virtualization performance, distributions, and Fedora Core examples are historical/contextual.
  • M15: each label condition must be combined with all applicable properties; do not use a single “iff” as the whole authorization decision.
  • M20–24: the critique concerns the relationship between the presented state predicate and the intended information-flow goal.
  • M49–59: country counts, requirement taxonomy, cost claims, and EAL judgments reflect the article’s context, not a current standards survey.
  • M75–76: integrity/covert-channel remarks and the Windows ring analogy are model-level simplifications.
  • M87: the source material provides the Chinese Wall simple rule, not the complete original policy.

D65 previews MLS, Biba, Clark–Wilson, and Chinese Wall, all covered in the second source collection. M89 previews noninterference/non-deducibility and role-based access control, but does not develop them in this article. They are retained in the appendix as previews rather than invented additional sections.

Technical reference appendix

This searchable appendix collects detailed technical statements and available commentary across 154 reference entries. Use it to locate an exact phrase or trace a concept to its reference identifier. Repeated outlines remain where they preserve context.

154 of 154 reference entries shown

Discretionary Access Control: Reference Entries

D1: Data Security and Privacy

Reference text

Data Security and Privacy
Weaknesses of DAC

Context and commentary

No additional commentary.
D2: Further Reading

Reference text

Further Reading
Seeley: “A Tour of the Worm”. In Proc. Winter Usenix Conf., February 1989.
https://collections.lib.utah.edu/details?id=702918
Hardy: “Confused Deputy.” ACM SIGOPS Operating Systems Review. Oct. 1988
https://dl.acm.org/doi/10.1145/54289.871709
Miller et al. “Capability Myths Demolished”

Click to access SRL2003-02.pdf

Mao et al. “Combining Discretionary Policy with Mandatory Information Flow in Operating Systems” ACM TISSEC, November 2011.
https://dl.acm.org/doi/10.1145/2043621.2043624
Reading the introduction is sufficient

Context and commentary

No additional commentary.
D3: Outline

Reference text

Outline
Morris Worm as an example to illustrate the limitation of UNIX DAC protection
Analysis of DAC Weaknesses
Confused deputy
DAC’s implicit trust in programs being benign and correct
Sandboxing/virtualization/isolation approaches
Create access control policies depend on programs

Context and commentary

No additional commentary.
D4: What is a Worm?

Reference text

What is a Worm?
What is a worm?
Self-propagating malware
Three steps
Find targets
Compromise target
Copy itself and execute
4

Context and commentary

No additional commentary.
D5: First major internet worm

Reference text

First major internet worm
Written by Robert Morris Jr.
Son of former chief scientist of NSA’s National Computer Security Center
Morris Worm (November 1988)
Image from wiki Under CC BY_SA 2.0

Context and commentary

His father, Robert H. Morris was a researcher at Bell Labs from 1960 until 1986. Then working at the (NSA). Served as chief scientist of the NSA’s National Computer Security Center, where he was involved in the production of the Rainbow Series of computer security standards, and retired from the NSA in 1994.
Quotes from Robert Morris
Never underestimate the attention, risk, money and time that an opponent will put into reading traffic.
Rule 1 of cryptanalysis: check for plaintext.[7]
The three golden rules to ensure computer security are: do not own a computer; do not power it on; and do not use it.
There is a description of Morris in Clifford Stoll’s book The Cuckoo’s Egg. Many readers of Stoll’s book remember Morris for giving Stoll a challenging mathematical puzzle (originally due to John H. Conway) in the course of their discussions on computer security: What is the next number in the sequence 1 11 21 1211 111221?
The next sequence is reading out the previous sequence.
D6: Morris Worm Description

Reference text

Morris Worm Description
Two parts
Main program to spread worm
look for other machines that could be infected
try to find ways of infiltrating these machines
Vector program (99 lines of C)
compiled and run on the infected machines
transferred main program to continue attack

Context and commentary

No additional commentary.
D7: Vector 1: Debug feature of sendmail

Reference text

Vector 1: Debug feature of sendmail
Sendmail
Listens on port 25 (SMTP port)
Some systems back then compiled it with DEBUG option on
Debug feature gives
The ability to send a shell script and execute on the host

Context and commentary

Sendmail is a general purpose email routing program.
Both mail transfer agent and mail submission program
For mail transfer agent, needs to listen on port 25/tcp for incoming messages from outside of the machine
Flushing the local queue of unsent messages on a periodic basis
Sendmail is an ‘infamous source of many secure vulnerabilities.
The worm uses TCP to connect to PORT 25 on target machine. Invoke the debug mode.
Shell script creates a C program in a temporary file called x$$,l1.c where $$ is current process ID,Then compiles and executes this program
The program opens socket to machine that sent script
Retrieves worm main program, compiles it and runs
D8: Vector 2: Exploiting fingerd

Reference text

Vector 2: Exploiting fingerd
What does finger do?
Finger output
arthur.example.edu% finger ninghui
Login name: ninghui In real life: Ninghui Li
Directory: /homes/ninghui Shell: /bin/csh
Since Jan 18 09:50:47 on pts/2 from pal-10-184-63-172.itap (4 seconds idle)
No unread mail.
No Plan.

Context and commentary

In Unix, finger is a program you can use to find information about computer users. It usually lists the Using finger, one can find login name, the full name, login time, idle time, time mail was last read, and the user’s plan and project files.
Useful tools for social engineering attacks, and gathering information.
Often blocked to outside domains.
D9: Vector 2: Exploiting fingerd

Reference text

Vector 2: Exploiting fingerd
Fingerd
Listen on port 79
It uses the function char* gets(char *)
Fingerd expects an input string
Worm writes long string to internal 512-byte buffer
Overrides return address to jump to shell code

Context and commentary

Fingerd is the daemon for answering finger requests.
Classical stack-based shell-code exploit.
D10: Vector 3: Exploiting Trust in Remote Login

Reference text

Vector 3: Exploiting Trust in Remote Login
Host aaa.xyz.com
/etc/host.equiv
bbb.xyz.com
Host bbb.xyz.com
User alice
rlogin
Remote login on UNIX
rlogin, rsh
Trusting mechanism
Trusted machines have the same user accounts
Users from trusted machines
/etc/host.equiv – system wide trusted hosts file
/.rhosts and ~/.rhosts – users’ trusted hosts file

Context and commentary

Remote login utilities were designed to make using networked computers easy.
Insecure because of passwords are transmitted in clear. Mostly disabled today. Replaced by ssh.
Exploit the fact that many computers on a local domain share the same user accounts.
To avoid repeated entering of passwords, have a trusting mechanism.
Each remote machine may have a file named /etc/hosts.equiv containing a list of trusted hostnames with which it shares usernames. Users with the same username on both the local and remote machine may rlogin from the machines listed in the remote machine’s /etc/hosts.equiv file without supplying a password.
Individual users may set up a similar private equivalence list with the file .rhosts in their home directories. Each line in this file contains two names: a host- name and a username separated by a space. An entry in a remote user’s .rhosts file permits the user named username  who is logged into hostname to log in to the remote machine as the remote user without supplying a password.
D11: Vector 3: Exploiting Trust in Remote Login

Reference text

Vector 3: Exploiting Trust in Remote Login
Worm exploited trust information
Examining trusted hosts files
Assume reciprocal trust
If X trusts Y, then most likely Y trusts X
Password cracking
Worm coming in through fingerd was running as daemon (not root) so needed to break into accounts to use .rhosts feature
Read /etc/passwd, used ~400 common password strings & local dictionary to do a dictionary attack

Context and commentary

Attack on second host, but need to get first host, can do so if second host is trusted by first. This info is stored in first host, and the worm cannot see yet.
Must be a regular user to use rlogin feature.
D12: Other Features of The Worm

Reference text

Other Features of The Worm
Self-hiding
Program is shown as ‘sh’ when ps
Files didn’t show up in ls
Find targets using several mechanisms:
‘netstat -r -n‘, /etc/hosts, …
Compromise multiple hosts in parallel
When worm successfully connects, forks a child to continue the infection while the parent keeps trying new hosts
Worm has no malicious payload
Where does the damage come from?

Context and commentary

Clobbers argv array so a ‘ps’ will not show its name
Opens its files, then unlinks (deletes) them so can’t be found; since files are open, worm can still access their contents
Try to find neighbors (connected hosts) to compromise
netstat (network statistics) is a command-line tool that displays network connections (both incoming and outgoing), routing tables, and a number of network interface statistics.
Worm does not delete system’s files, modify existing files, install trojan horses, record or transmit decrypted passwords, capture superuser privileges
D13: Damage

Reference text

Damage
One host may be repeatedly compromised
Supposedly designed to gauge the size of the Internet
The following bug/feature made it more damaging.
Asks a host whether it is already running the Morris Worm; however, even if it answers yes, still compromise it with probability 1/8.

Context and commentary

According to its creator, the Morris worm was not written to cause damage, but to gauge the size of the Internet. However, the worm was released from MIT to disguise the fact that the worm originally came from Cornell. (Incidentally, Morris is now a professor at MIT.)
A supposedly unintended consequence of the code, however, caused it to be more damaging: a computer could be infected multiple times and each additional process would slow the machine down, eventually to the point of being unusable.
The worm could have determined whether to invade a new computer by asking if there was already a copy running. But just doing this would have made it trivially easy to kill; everyone could just run a process that would answer “yes” when asked if there was already a copy, and the worm would stay away. The defense against this was inspired by Michael Rabin’s mantra, “Randomization.” To compensate for this possibility, Morris directed the worm to copy itself even if the response is “yes”, 1 out of 7 times.
D14: Review: How does a computer get compromised?

Reference text

Review: How does a computer get compromised?
Buggy programs accept malicious input
daemon programs that receive network traffic
client programs (e.g., web browser, mail client) that receive input data from network
buggy programs (e.g., pdf readers) read malicious files saved from the network
Configuration errors (e.g., weak passwords, guest accounts, DEBUG options, etc)
Human errors (e.g., leaking passwords due to social engineering attacks, executing malicious code such as email attachment, or downloading and executing trojan horses)
Giving attacker physical access to computer

Context and commentary

No additional commentary.
D15: Outline

Reference text

Outline
Morris Worm as an example to illustrate the limitation of UNIX DAC protection
Analysis of DAC Weaknesses
Confused deputy and capability system
DAC’s implicit trust in programs being benign and correct
Sandboxing/virtualization/isolation approaches
Create access control policies depend on programs

Context and commentary

No additional commentary.
D16: Could Better Access Control Help Stop Morris Worm?

Reference text

Could Better Access Control Help Stop Morris Worm?
Vector 1: Exploiting buffer overflow vulnerability in fingerd, and then take over the fingerd process to execute a malicious shell script
In UNIX access control, fingerd runs as a daemon user which can run shell and many other programs
If fingerd is prevented from running shell, then this attack would fail.
Vector 2: Exploit DEBUG option
Cannot be stopped by access control.
Vector 3: Exploit mutual trust
Cannot be stopped by access control, if the convenience is desired. This is an issue only when a host on a local network is compromised.
16

Context and commentary

No additional commentary.
D17: Discretionary Access Control

Reference text

Discretionary Access Control
No precise definition. Basically, DAC allows access rights to be propagated at subject’s discretion
often has the notion of owner of an object
used in UNIX, Windows, etc.
According to TCSEC (Trusted Computer System Evaluation Criteria)
“A means of restricting access to objects based on the identity and need-to-know of users and/or groups to which they belong. Controls are discretionary in the sense that a subject with a certain access permission is capable of passing that permission (directly or indirectly) to any other subject.”
Often compared to Mandatory Access Control

Context and commentary

Owners have discretion to further share.
D18: Analysis why DAC is not Good enough

Reference text

Analysis why DAC is not Good enough
DAC causes the Confused Deputy problem
Solution: use capability-based systems
DAC does not preserve confidentiality when facing Trojan horses
Solution: use Mandatory Access Control (BLP)
DAC implementation fails to keep track of for which principals a subject (process) is acting on behalf of
Solution: fixing the DAC implementation to better keep track of principals
Solution: adding additional access control mechanism

Context and commentary

No additional commentary.
D19: The Confused Deputy Problem

Reference text

The Confused Deputy Problem
SYSX/FORT $OUTPUT
Compiler Program
SYSX (Dir)
FORT
STAT
BILL
Write to the bill file
System Admin
$Output
SYSX/BILL
Write output file
User
The Confused Deputy by Norm Hardy

Context and commentary

The compiler program is SYSX/FORT.
Other files under SYSX include STAT and BILL.
The compiler program needs to write to files in SYSX directory, so it is given authority to write to files in SYSX.
A user who runs SYSX/FORT can provide a file name to receive output info.
A malicious user may use SYSX/BILL as the output name, resulting in billing info being erased.
D20: Analysis of The Confused Deputy Problem

Reference text

Analysis of The Confused Deputy Problem
The compiler runs with authority from two sources
the invoker (i.e., the programmer)
the system admin (who installed the compiler and controls billing and other info)
It is the deputy of two masters
There is no way to tell which master the deputy is serving when performing a write
Solution: Use capability

Context and commentary

How is this problem solved in UNIX access control?
D21: Different Notions of Capabilities

Reference text

Different Notions of Capabilities
Capabilities used in POSIX/Linux as a way to divide the root power into multiple pieces that can be given out separately
Capabilities as a row representation of Access Matrices
Capabilities as a way of implementing the whole access control systems
We will examine the second and third notion next in this article

Context and commentary

No additional commentary.
D22: ACCESS MATRIX MODEL

Reference text

ACCESS MATRIX MODEL
U
r w
own
V
F
S
u
b
j
e
c
t
s
Objects (and Subjects)
r w
own
G
r
rights

Context and commentary

This reviews Access Matrices as representation
D23: IMPLEMENTATION OF AN ACCESS MATRIX

Reference text

IMPLEMENTATION OF AN ACCESS MATRIX
Access Control Lists
Encode columns
Capabilities
Encode rows
Access control triples
Encode cells

Context and commentary

No additional commentary.
D24: ACCESS CONTROL LISTS (ACLs)

Reference text

ACCESS CONTROL LISTS (ACLs)
F
U:r
U:w
U:own
G
U:r
V:r
V:w
V:own
each column of the access matrix is stored with the object corresponding to that column

Context and commentary

No additional commentary.
D25: CAPABILITY LISTS

Reference text

CAPABILITY LISTS
each row of the access matrix is stored with the subject corresponding to that row
U F/r, F/w, F/own, G/r
V G/r, G/w, G/own

Context and commentary

No additional commentary.
D26: ACCESS CONTROL TRIPLES

Reference text

ACCESS CONTROL TRIPLES
Subject Access Object
U r F
U w F
U own F
U r G
V r G
V w G
V own G
commonly used in relational DBMS

Context and commentary

No additional commentary.
D27: Capability Based Access Control

Reference text

Capability Based Access Control
Subjects have capabilities, which
Give them accesses to resources (similar to keys that can open doors)
Can be transferred to other subjects
Are unforgeable tokens of authority
Example: a UNIX system where only owner of a file can open the file, and file sharing is done by passing opened file descriptors around
Why capabilities may solve the confused deputy problems?
When access a resource, must select a capability, which also selects a master

Context and commentary

Example: a secretary works for two faculty members with last name Li, an charges one’s bill to another’s account.
In ACL, both faculty members authorize the secretary to charge to their accounts. Confusion may occur.
In Capability-based systems, the secretary is given the rights to charge to the accounts, they came in the forms of tokens. The secretary when processing one faculty member’s charges, must present the capability, avoiding a confusion.
D28: How Do Capabilities Solve the Confused Deputy Problem

Reference text

How Do Capabilities Solve the Confused Deputy Problem
Invoker must pass in a capability for $OUTPUT, which is stored in slot 3.
Writing to output uses the capability in slot 3.
Invoker cannot pass a capability it doesn’t have.
SYSX/FORT $OUTPUT
1
2
3
SYSX/ STAT
SYSX/ BILL
$OUTPUT

Context and commentary

The compiler program is given capabilities to access SYSX/STAT and SYSX/BILL, which are stored in capability slots 1 & 2
When the invoker runs the compiler program, it gives a capability to write to the output file, which is stored in capability slot 3. The invoker cannot give a capability for SYSX/BILL if it doesn’t have the capability.
When writing billing info, the program uses capability in slot 2. When writing the output, it uses capability in slot 3.
D29: Capability vs. ACL

Reference text

Capability vs. ACL
Consider two security mechanisms for bank accounts.
One is identity-based. Each account has multiple authorized owners. You go into the bank and shows your ID, then you can access all accounts you are authorized.
Once you show ID, you can access all accounts.
You have to tell the bank which account to take money from.
The other is token-based. When opening an account, you get a passport to that account and a PIN, whoever has the passport and the PIN can access

Context and commentary

No additional commentary.
D30: Capabilities vs. ACL: Ambient Authority

Reference text

Capabilities vs. ACL: Ambient Authority
Ambient authority means that a user’s authority is automatically exercised, without the need of being selected.
Causes the confused deputy problem
Violates the least privilege principle
No Ambient Authority in capability systems

Context and commentary

You are carrying a lot of keys. When you walk to a door, the door automatically opens if you have the right key. You don’t need to select a key. Problematic when you work for multiple masters.
D31: Capability vs. ACL: Naming

Reference text

Capability vs. ACL: Naming
ACL systems need a namespace for objects
In capability systems, a capability can serve both to designate a resource and to provide authority.
ACLs also need a namespace for subjects or principals
as they need to refer to subjects or principals
Implications
the set of subjects cannot be too many or too dynamic
most ACL systems grant rights to user accounts principals, and do not support fine-grained subject rights management

Context and commentary

No additional commentary.
D32: Conjectures on Why Capability-based AC is Rarely Used

Reference text

Conjectures on Why Capability-based AC is Rarely Used
Capability is more suitable for process level sharing, but not user-level sharing
user-level sharing is what is really needed
Processes are more tightly coupled in capability-based systems because the need to pass capabilities around
programming may be more difficult

Context and commentary

When a user shares a file with another user. Subjects that access the file do not exist yet. Hence a naming scheme needs to exist.
D33: Analysis why DAC is not Good enough

Reference text

Analysis why DAC is not Good enough
DAC causes the Confused Deputy problem
Solution: use capability-based systems
DAC does not preserve confidentiality when facing Trojan horses
Solution: use Mandatory Access Control (BLP)
DAC implementation fails to keep track of for which principals a subject (process) is acting on behalf of
Solution: fixing the DAC implementation to better keep track of principals
Solution: adding additional access control mechanism

Context and commentary

No additional commentary.
D34: Weakness OF DAC in Information Flow Control

Reference text

Weakness OF DAC in Information Flow Control
Unrestricted DAC allows information flows from an object which can be read to any other object which can be written by a subject
Suppose A is allowed to read some information and B is not, A can reads and tells B
Suppose that users are trusted not to do this deliberately. It is still possible for Trojan Horses to copy information from one object to another.

Context and commentary

Suppose
D35: TROJAN HORSE EXAMPLE

Reference text

TROJAN HORSE EXAMPLE
File F
A:r
A:w
File G
B:r
A:w
Principal B cannot read file F
ACL

Context and commentary

No additional commentary.
D36: TROJAN HORSE EXAMPLE

Reference text

TROJAN HORSE EXAMPLE
File F
A:r
A:w
File G
B:r
A:w
Principal B can read contents of file F copied to file G
ACL
Principal A
Program Goodies
Trojan Horse
executes
read
write

Context and commentary

No additional commentary.
D37: Buggy Software Can Become Trojan Horse

Reference text

Buggy Software Can Become Trojan Horse
When a buggy software is exploited, it execute the code/intention of the attacker, while using the privileges of the user who started it.
This means that computers with only DAC cannot be trusted to process information classified at different levels
Mandatory Access Control is developed to address this problem
We will cover this in the next topic

Context and commentary

No additional commentary.
D38: Analysis why DAC is not Good enough

Reference text

Analysis why DAC is not Good enough
DAC causes the Confused Deputy problem
Solution: use capability-based systems
DAC does not preserve confidentiality when facing Trojan horses
Solution: use Mandatory Access Control (BLP)
DAC implementation fails to keep track of for which principals a subject (process) is acting on behalf of
Solution: fixing the DAC implementation to better keep track of principals
Solution: adding additional access control mechanism

Context and commentary

No additional commentary.
D39: DAC’s Weaknesses Caused by The Gap

Reference text

DAC’s Weaknesses Caused by The Gap
A request: a subject wants to perform an action
E.g., processes in OS
The policy: each principal has a set of privileges
E.g., user accounts in OS
Challenging to fill the gap between the subjects and the principals
relate the subject to the principals

Context and commentary

We summarize the above analysis.
On one hand, in the request, a subject wants to perform an action.
On the other hand, in the policy, the privileges are granted to principals.
In order to decide whether to allow or deny the request, we have to fill the gap between the subject in the request and the principals in the policy. In particular, we need to relate the subject to the principals, so that we can determine whether the subject has the privilege to perform the action based on the policy.
D40: Unix DAC Revisited (1)

Reference text

Unix DAC Revisited (1)
When the Goodie process issues a request, what principal(s) is/are responsible for the request?
Under what assumption, it is correct to say that User A is responsible for the request?
Assumption: Programs are benign, i.e., they only do what they are told to do.
Action
Process
Effective UID
Real Principals
User A Logs In
shell
User A
User A
Load Binary “Goodie” Controlled by user B
Goodie
User A
? ?

Context and commentary

Both User A and User B
D41: UNIX DAC Revisited (2)

Reference text

UNIX DAC Revisited (2)
When the AcroBat process (after reading the file) issues a request, which principal(s) is/are responsible for the request?
Under what assumption, it is correct to say that User A is responsible for the request?
Assumption: Programs are correct, i.e., they handle inputs correctly.
Action
Process
Effective UID
Real Principals
shell
User A
User A
Load AcroBat Reader Binary
AcroBat
User A
User A
Read File Downloaded from Network
AcroBat
User A
? ?

Context and commentary

No additional commentary.
D42: Why DAC is vulnerable?

Reference text

Why DAC is vulnerable?
Implicit assumptions
Software are benign, i.e., behave as intended
Software are correct, i.e., bug-free
The reality
Malware exist
Software are vulnerable
Arguably the problem is not caused by the discretionary nature of policy specification!
i.e., owners can set policies for files

Context and commentary

Based on the above analysis, by identifying the origin to be the program invoker, DAC actually makes two implicit assumptions.
First, it assumes all software are benign. All software are functional as intended without performing any malicious activities.
Second, it assumes software are correct. In particular, the input-provider cannot inject malicious code into the program.
However, these assumptions do not hold in the real-world. The reality is malware are popular and software are commonly vulnerable.
D43: Why DAC is Vulnerable? (cont’)

Reference text

Why DAC is Vulnerable? (cont’)
A limitation in the enforcement mechanism
UNIX DAC maintains a single principal (euid) for a subject/process; this is not enough to capture on whose behalf the process is acting
When the program is a Trojan
The program-provider should also be responsible for the requests
When the program is vulnerable
It may be exploited by input-providers
The requests may be issued by injected code from input-providers
Solution: accept that a subject may be acting on behalf of multiple principals, and that we are uncertain.

Context and commentary

The fundamental reason that makes DAC vulnerable is because a single invoker is not enough to capture the origin of a process.
When the program is a Trojan horse, the program-provider should be responsible for the requests issue by the program.
When the program contains bugs, it may be exploited by the input-providers. The requests may be issued by injected code from the input providers.
To fix the weakness in DAC, we need to consider the program-provider and input-providers when identifying the origins.
D44: Proposals to Radically Change DAC

Reference text

Proposals to Radically Change DAC
DAC causes the Confused Deputy problem
Solution: use capability-based systems
DAC does not preserve confidentiality when facing Trojan horses
Solution: use Mandatory Access Control, e.g., BLP
DAC implementation fails to keep track of for which principals a subject (process) is acting on behalf of
Solution: UMIP and IFEDAC
None of these is widely used in commercial systems
44

Context and commentary

Ziqing Mao, Ninghui Li, Hong Chen, Xuxian Jiang:Combining Discretionary Policy with Mandatory Information Flow in Operating Systems. ACM Trans. Inf. Syst. Secur. 14(3): 24:1-24:27 (2011)
Ninghui Li, Ziqing Mao, Hong Chen:Usable Mandatory Integrity Protection for Operating Systems. IEEE Symposium on Security and Privacy 2007: 164-178
D45: Outline

Reference text

Outline
Morris Worm as an example to illustrate the limitation of UNIX DAC protection
Analysis of DAC Weaknesses
Confused deputy
DAC’s implicit trust in programs being benign and correct
Sandboxing/virtualization/isolation approaches
Create access control policies depend on programs

Context and commentary

No additional commentary.
D46: Goal of Sandboxing/virtualization/Isolation

Reference text

Goal of Sandboxing/virtualization/Isolation
Sandboxing: Separate running programs, to mitigate system failures and/or software vulnerabilities
Ensure that a program, even if compromised, causes only limited damage.
46

Context and commentary

No additional commentary.
D47: Confinement by Virtualization (Option 1)

Reference text

Confinement by Virtualization (Option 1)
Runs a single kernel, virtualizes servers on one operating system using built-in mechanism
e.g., chroot, FreeBSD jail, …
used by service providers who want to provide low-cost hosting services to customers.
Pros: little performance overhead, easy to set up/administer
Cons: some confinement can be broken, some servers cannot be easily confined

Context and commentary

No additional commentary.
D48: chroot

Reference text

chroot
The chroot system call changes the root directory of the current and all child processes to the given path.
To use chroot,
One first creates a temporary root directory for a running process,
Then takes a limited hierarchy of a filesystem (say, /chroot/named) and making this the top of the directory tree as seen by the application.
Make the chroot system call: a network daemon program can call chroot itself, or a script can call chroot and then start the daemon

Context and commentary

chroot exists in almost all versions of UNIX,
Initially developed for testing and developing Operating System.
The new root is nearly always some restricted subdirectory below the real root of the filesystem.
D49: Using chroot

Reference text

Using chroot
What are the security benefits?
under the new root, many system utilities and resources do not exist, even if the attacker compromises the process, damage can be limited
consider the Morris worm, how would using chroot for fingerd affect its propagation?

Context and commentary

No additional commentary.
D50: Limitations of chroot

Reference text

Limitations of chroot
Only the root user can perform a chroot.
intended to prevent users from putting a setuid program inside a specially-crafted chroot jail (for example, with a fake /etc/passwd file) that would fool it into giving out privileges.
chroot is not entirely secure on all systems.
With root privilege inside chroot environment, it is sometimes possible to break out
process inside chroot environment can still see/affect all other processes and networking spaces
chroot does not restrict the use of resources like I/O, bandwidth, disk space or CPU time.

Context and commentary

How would one abuse chroot if not limited to
D51: Confinement by Virtualization (Option 2)

Reference text

Confinement by Virtualization (Option 2)
Virtual machines: emulate hardware in a user-space process
the emulation software runs on a host OS; guest OSes run in the emulation software
needs to do binary analysis/change on the fly
e.g., Oracle VirtualBox, VMWare,
Pros: can run other guest OS without modification to the OS
Cons: significant performance overhead

Context and commentary

No additional commentary.
D52: Limitation of Confinement by Virtualization

Reference text

Limitation of Confinement by Virtualization
Pro. Policy is simple: just isolate each instance
Con. Things within one virtual machine can still affect each other.

Context and commentary

No additional commentary.
D53: Outline

Reference text

Outline
Morris Worm as an example to illustrate the limitation of UNIX DAC protection
Analysis of DAC Weaknesses
Confused deputy
DAC’s implicit trust in programs being benign and correct
Sandboxing/virtualization/isolation approaches
Create access control policies depend on programs

Context and commentary

No additional commentary.
D54: Program-Based Access Control

Reference text

Program-Based Access Control
For each process, there is an additional policy limiting what it can do, which is based on the binary file
E.g., what system call it can make, what files it can access, et.c
This is in addition to the DAC restriction based on the user ids
The key challenge
how to specify the policy

Context and commentary

No additional commentary.
D55: Examples of Program-Based Policies Access Control

Reference text

Examples of Program-Based Policies Access Control
Security Enhanced Linux (SELinux)
Developed by National Security Agency (NSA) and Secure Computing Corporation (SCC) to promote MAC technologies
Shipped with Fedora and some other Linux distributions
Also part of Android as Security Enhanced Android
AppArmor
Shipped in Debian, Ubuntu, OpenSUSE Linux distributions

Context and commentary

No additional commentary.
D56: Main Idea of SElinux

Reference text

Main Idea of SElinux
Consider more information (especially which program is running) when making access control decisions
Enable fine-grain control
Support flexible security policies, “user friendly” security language (syntax)
Overall policy is extremely complex

Context and commentary

No additional commentary.
D57: Policy: Domain-type Enforcement

Reference text

Policy: Domain-type Enforcement
The access matrix consisting of subjects and objects is too large and impractical.
To reduce the size of the access matrix, subjects are grouped into domains, objects are grouped into types.
A smaller (but still big) access matrix with domains and types can then be specified.

Context and commentary

No additional commentary.
D58: Policy: Domain-type Enforcement

Reference text

Policy: Domain-type Enforcement
Each object is labeled by a type
Example:
/etc/shadow etc_t
/etc/rc.d/init.d/httpd httpd_script_exec_t
Objects are grouped by object security classes
Files, sockets, IPC channels, capabilities
Operations are defined upon each security class
Each subject (process) is associated with a domain
E.g., httpd_t, sshd_t, sendmail_t

Context and commentary

No additional commentary.
D59: Policy: Domain-type Enforcement

Reference text

Policy: Domain-type Enforcement
Access control decision
When a process wants to access an object, the decision is based on process domain, object type, object security class, type of operation
Example access vector rules
allow sshd_t sshd_exec_t: file { read execute entrypoint }
allow sshd_t sshd_tmp_t: file { create read write getattr setattr link unlink rename }

Context and commentary

No additional commentary.
D60: Policy: Domain-type Enforcement

Reference text

Policy: Domain-type Enforcement
How the domain if a new process is determined?
The domain for a new process is based on the domain of the parent process and the label for the executable binary
How the type of a new file is determined?
Based on the domain of the creating process and the parent directory
TE transition rules
type_transition initrc_t sshd_exec_t: process sshd_t
type_transition sshd_t tmp_t: notdevfile_class_set sshd_tmp_t

Context and commentary

No additional commentary.
D61: SELinux in Practice

Reference text

SELinux in Practice
Strict policy
A system where everything is denied by default.
Minimal privilege’s for every daemon
Separate user domains for programs like GPG,X, ssh, etc
Difficult to enforce in general purpose operating systems
Default in Fedora Core 2
#1 Question: How do I turn off SELinux
Targeted policy
System where everything is allowed. use deny rules.
Only restrict certain daemon programs
Default in Fedora Core 3
No protection for client programs

Context and commentary

No additional commentary.
D62: AppArmor

Reference text

AppArmor
Provide a sufficiently fine-grained mechanism
Try to achieve least privilege for programs
For each program one wants to confine, one provides a profile, which specifies the activities the program can perform
Files, Operations

Context and commentary

No additional commentary.
D63: Example Profile

Reference text

Example Profile
/lib/lib*.so* mr,
/proc/[0-9]** r,
/usr/lib/** mr,
/tmp/ r,
/tmp/foo.pid wr,
/tmp/foo.* lrw,
/@{HOME}/.foo_file rw,
/@{HOME}/.foo_lock kw,
# a comment about foo’s subprofile, bar.
^bar {
/lib/ld-*.so* mr,
/usr/bin/bar px,
/var/spool/* rwl,
}
}
#include <tunables/global>
# a comment naming the application to confine
/usr/bin/foo
{
#include <abstractions/base>
capability setgid,
network inet tcp,
/bin/mount ux,
/dev/{,u}random r,
/etc/ld.so.cache r,
/etc/foo.conf r,
/etc/foo/* r,
/lib/ld-*.so* mr,

Context and commentary

No additional commentary.
D64: Summary

Reference text

Summary
Buggy programs can be exploited
Existing DAC mechanisms allow exploited programs to control a whole system
Existing DAC has some fundamental weaknesses
Attempts to fix them have their own limitations and are not widely deployed
Additional access control can help at the cost of the need to specify additional policies
64

Context and commentary

No additional commentary.
D65: Related Topics

Reference text

Related Topics
Multi-level Security (MLS) and Bell-La Padula Model
Biba Integrity Model, Clark-Wilson Model, and Chinese Wall Policy

Context and commentary

No additional commentary.

Security Models: Reference Entries

M1: Data Security and Privacy

Reference text

Data Security and Privacy
Security Models: BLP, Biba, and Clark-Wilson
1

Context and commentary

No additional commentary.
M2: Bell and La Padula: “Secure Computer System: Unified Exposition and MULTICS Interpretation”

Reference text

Bell and La Padula: “Secure Computer System: Unified Exposition and MULTICS Interpretation”
Section II
Kenneth J. Biba: “Integrity Considerations for Secure Computer Systems”, MTR-3153, The Mitre Corporation, April 1977.
David D. Clark and David R. Wilson. “A Comparison of Commercial and Military Computer Security Policies.” In IEEE SSP 1987.
Further Reading

Context and commentary

No additional commentary.
M3: Other Related Papers:

Reference text

Other Related Papers:
David FC. Brewer and Michael J. Nash. “The Chinese Wall Security Policy.” in IEEE SSP 1989.
Related Further Reading

Context and commentary

No additional commentary.
M4: Outline

Reference text

Outline
Overview of the Bell Lapadula Model
Details of the Bell Lapadula Model
Analysis of the Bell Lapadula Model
More on Multi-level Security
TCSEC and Common Criteria
Biba Integrity Models
Clark-Wilson Model and Chinese Wall Policy

Context and commentary

No additional commentary.
M5: Access Control at Different Abstractions

Reference text

Access Control at Different Abstractions
Using principals
Determines which principals (user accounts) can access what documents
Using subjects
Determines which subjects (processes) can access what resources
This is where BLP focuses on

Context and commentary

No additional commentary.
M6: Multi-Level Security (MLS) (1)

Reference text

Multi-Level Security (MLS) (1)
There are security classifications or security levels
Users/principals/subjects have security clearances
Objects have security classifications
Example of security levels
Top Secret > Secret > Confidential > Unclassified
Security goal (confidentiality):
Ensures that information does not flow to those not cleared for that level

Context and commentary

Goal is to be able to check computer systems so that they can securely process classified information.
M7: Multi-Level Security (MLS) (2)

Reference text

Multi-Level Security (MLS) (2)
The capability of a computer system to carry information with different sensitivities (i.e. classified information at different security levels), permit simultaneous access by users with different security clearances and needs-to-know, and prevent users from obtaining access to information for which they lack authorization.
Discretionary access control fails to achieve MLS
Typically use Mandatory Access Control
Primary Security Goal: Confidentiality

Context and commentary

No additional commentary.
M8: Mandatory Access Control

Reference text

Mandatory Access Control
Mandatory access controls (MAC) restrict the access of subjects to objects based on a system-wide policy
denying users full control over the access to resources that they create. The system security policy (as set by the administrator) entirely determines the access rights granted

Context and commentary

Even if you have a right, cannot freely give it.
M9: Bell-LaPadula Model: A MAC Model for Multi-level Security

Reference text

Bell-LaPadula Model: A MAC Model for Multi-level Security
Introduce in 1973
Air Force was concerned with security in time-sharing systems
Many OS bugs
Accidental misuse
Main Objective:
Enable one to formally show that a computer system can securely process classified information

Context and commentary

No additional commentary.
M10: What is a Security Model?

Reference text

What is a Security Model?
A model describes the system
e.g., a high level specification or an abstract machine description of what the system does
A security policy
defines the security requirements for a given system
Verification techniques that can be used to show that a policy is satisfied by a system
System Model + Security Policy = Security Model

Context and commentary

Define an abstract model that can be used to describe computer systems.
the model
Define what does it mean for a system in the model to be secure.
the policy
Develop techniques to prove that a system in the model is secure
M11: Approach of BLP

Reference text

Approach of BLP
Use state-transition systems to describe computer systems
Define a system as secure iff. every reachable state satisfies 3 properties
simple-security property, *-property, discretionary-security property
Prove a Basic Security Theorem (BST)
so that given the description of a system, one can prove that the system is secure

Context and commentary

No additional commentary.
M12: Outline

Reference text

Outline
Overview of the Bell Lapadula Model
Details of the Bell Lapadula Model
Analysis of the Bell Lapadula Model
More on Multi-level Security
TCSEC and Common Criteria
Biba Integrity Models
Clark-Wilson Model and Chinese Wall Policy

Context and commentary

No additional commentary.
M13: The BLP Security Model

Reference text

The BLP Security Model
A computer system is modeled as a state-transition system
There is a set of subjects; some are designated as trusted.
Each state has objects, an access matrix, and the current access information.
Each subject s has a maximal sec level LM(s), and a current sec level LC(s)
Each object o has a classification level LO(o)
There are state transition rules describing how a system can go from one state to another

Context and commentary

Set of subjects do not change over time.
Access matrix is like in DAC.
Current access information records who wants to access what.
M14: Subjects

Reference text

Subjects
Trusted Subjects
Objects
Current Accesses
Security levels, e.g.: {TS, S, C, U}
LM: Max Sec. Level
LC: Current Sec. Level
Access Matrix
LO: Class. Level
Elements of the BLP Model

Context and commentary

No additional commentary.
M15: The BLP Security Policy

Reference text

The BLP Security Policy
A state is secure if it satisfies
Simple Security Condition (no read up):
S can read O iff LM(S) ≥ LO(O)
The Star Property (no write down): for any S that is not trusted
S can read O iff LC(S) ≥ LO(O) (no read up)
S can write O iff LC(S) ≤ LO(O) (no write down)
Discretionary-security property
every access is allowed by the access matrix
A system is secure if and only if every reachable state is secure.

Context and commentary

The simple security condition is natural. Can only read objects of lower level.
The star property is motivated by the Trojan Horse example.
Why it does not apply to trusted subjects? Consider the OS scheduler.
When the maximum level is the same as the current level, then the no-read-up part of the star property is subsumed by the Simple Security Condition. Hence it becomes no write-down only.
Can we say the star property imply the simple security condition in this case?
M16: Objects

Reference text

Objects
Highest
Can Read & Write
Lowest
Subject
Max Level
Current Level
Can Write
Can Read
Implication of the BLP Policy

Context and commentary

No additional commentary.
M17: STAR-PROPERTY

Reference text

STAR-PROPERTY
Applies to subjects not to principals and users
Users are trusted (must be trusted) not to disclose secret information outside of the computer system
Subjects are not trusted because they may have Trojan Horses embedded in the code they execute
Star-property prevents overt leakage of information and does not address the covert channel problem

Context and commentary

Cannot prevent users read top secret info, then turn and tell someone else.
Where is this protected? In which part is this risk considered and justified?
Humans can be trusted, but not programs they execute.
M18: Outline

Reference text

Outline
Overview of the Bell Lapadula Model
Details of the Bell Lapadula Model
Analysis of the Bell Lapadula Model
More on Multi-level Security
TCSEC and Common Criteria
Biba Integrity Models
Clark-Wilson Model and Chinese Wall Policy

Context and commentary

No additional commentary.
M19: Is BLP Notion of Security Good?

Reference text

Is BLP Notion of Security Good?
The objective of BLP security is to ensure
a subject cleared at a low level should never read information classified high
The ss-property and the *-property are sufficient to stop such information flow at any given state.
What about information flow across states?

Context and commentary

Copying is thought to only being able to occur while reading & writing two objects.
To quote from the report “Prevent simultaneous access to two objects if flow of information between them could be objectionable.”
M20: BLP Security Is Not Sufficient!

Reference text

BLP Security Is Not Sufficient!
Consider a system with two subjects s1,s2 and two objects o1,o2
LM(s1) = LC (s1) = LO (o1) = high
LM(s2) = LC (s2) = LO (o2) = low
And the following execution
s1 gets read access to o1, read something, release access, then change current level to low, get write access to o2, write to o2
Every state is secure, yet illegal information flow exists, assuming that a subject can store information from one state to the next
Solution: tranquility principle: subject cannot change current levels, or cannot drop current level to below the highest level read so far

Context and commentary

Another solution is to mandate the update of current security levels. Reading an object raises its current level to its own level.
M21: More on the BLP Notion of Security

Reference text

More on the BLP Notion of Security
When a subject A copies information from high to a low object f, this violates the star-property, but no information leakage occurred yet
Only when B, who is not cleared at high, reads f, does leakage occurs
If the access matrix limits access to f only to A, then such leakage may never occur
BLP notion of security is neither sufficient nor necessary to stop illegal information flow (through direct/overt channels)
The state based approach is too low level and limited in expressive power

Context and commentary

No additional commentary.
M22: How to Fix The BLP Notion of Security (if we want to)?

Reference text

How to Fix The BLP Notion of Security (if we want to)?
May need to differentiate externally visible objects from other objects
e.g., a printer is different from a memory object
State-sequence based property
e.g., define security to mean that there exists no sequence of states so that there is an information path from a high object to a low externally visible object or to a low subject

Context and commentary

No additional commentary.
M23: The Basic Security Theorem

Reference text

The Basic Security Theorem
This provides the verification techniques piece in
Model – Policy – Verification framework
Restatement of The Basic Security Theorem: A system is a secure system if and only if the starting state is a secure state and each action (concrete state transition that could occur in an execution sequence) of the system leads the system into a secure state.
The if direction can be proven by induction.
The only if direction is true because of the way “action” is defined.

Context and commentary

No additional commentary.
M24: Observations of the BST

Reference text

Observations of the BST
The BST is purely a result of defining security as a state-based property.
It holds for any other state-based property
The BST cannot be used to justify that the BLP notion of security is “good”
This is John McLean’s main point in his papers
“A Comment on the Basic Security Theorem of Bell and LaPadula” [1985]
“Reasoning About Security Models” [1987]
“The Specification and Modeling of Computer Security” [1990]

Context and commentary

John McLean criticizes the BLP in the 1980’s, and Bell responded.
M25: Main Contributions of BLP

Reference text

Main Contributions of BLP
The overall methodology to show that a system is secure
adopted in many later works
The state-transition model
which includes an access matrix, subject security levels, object levels, etc.
The introduction of *-property
ss-property is not enough to stop illegal information flow

Context and commentary

No additional commentary.
M26: Outline

Reference text

Outline
Overview of the Bell Lapadula Model
Details of the Bell Lapadula Model
Analysis of the Bell Lapadula Model
More on Multi-level Security
TCSEC and Common Criteria
Biba Integrity Models
Clark-Wilson Model and Chinese Wall Policy

Context and commentary

No additional commentary.
M27: Other Limitations with BLP

Reference text

Other Limitations with BLP
Deal only with confidentiality, does not deal with integrity at all
Confidentiality is often not as important as integrity in most situations
Integrity is addressed by models such as Biba, Clark-Wilson, which we will cover later
Does not deal with information flow through covert channels

Context and commentary

A low-level subject can write to arbitrary high level objects.
Even for confidentiality, its protection is limited.
M28: Overt (Explicit) Channels vs. Covert Channels

Reference text

Overt (Explicit) Channels vs. Covert Channels
Security objective of MLS in general, BLP in particular, is
high-classified information cannot flow to low-cleared users
Illegal information flow via overt channels (e.g., read/write an object) is blocked by BLP
Illegal information flow by covert channels can still occur
communication channel based on the use of system resources not normally intended for communication between the subjects (processes) in the system

Context and commentary

Covert communication channels (also called subliminal channels) are often motivated as being solutions to the “prisoners’ problem.” Consider two prisoners in separate cells who want to exchange messages, but must do so through the warden, who demands full view of the messages (that is, no encryption). A covert channel enables the prisoners to exchange secret information through messages that appear to be innocuous. A covert channel requires prior agreement on the part of the prisoners. For example if an odd length word corresponds to “1” and an even length word corresponds to “0”, then the previous sentence contains the subliminal message “101011010011”.
M29: Examples of Covert Channels

Reference text

Examples of Covert Channels
Using file lock as a shared boolean variable
By varying its ratio of computing to input/output or its paging rate, the service can transmit information to a concurrently running process
Timing of packets being sent
In general, shared resources can be used as covert channels
What is needed is one party can affect them, and another can observe the effects
Covert channels are often noisy
However, information theory and coding theory can be used to encode and decode information through noisy channels

Context and commentary

Cover channels occur with shared resources.
M30: More on Covert Channels

Reference text

More on Covert Channels
Covert channels cannot be blocked by *-property
It is generally very difficult, if not impossible, to block all covert channels
One can try to limit the bandwidth of covert channels
Military requires cryptographic components be implemented in hardware
to avoid trojan horse leaking keys through covert channels
Covert channels are achieved by collaboration or high and low subjects.

Context and commentary

No additional commentary.
M31: More on MLS: Security Levels

Reference text

More on MLS: Security Levels
Used as attributes of both subjects & objects
clearance & classification
Typical military security levels:
top secret  secret  confidential  unclassified
Typical commercial security levels
restricted  proprietary  sensitive  public

Context and commentary

A single level is not good enough. Someone having top secret, say, in the army, will be able to read all
M32: Security Categories

Reference text

Security Categories
Also known as compartments
Typical military security categories
army, navy, air force
nato, nasa, noforn
Typical commercial security categories
Sales, R&D, HR
Dept A, Dept B, Dept C

Context and commentary

No additional commentary.
M33: Security Labels

Reference text

Security Labels
Labels = Levels  P (Categories)
P (Categories) is powerset (set of all subsets) of Categories
There is a natural partial ordering relationship among Labels
(e1, C1)  (e2, C2) iff. e1 e2 and C1  C2
This ordering relation is a partial order
reflexive, transitive, anti-symmetric, e.g., 
All security labels form a lattice.
Given 4 levels and 5 categories, how many labels are there?

Context and commentary

No additional commentary.
M34: Top Secret, {army, navy}

Reference text

Top Secret, {army, navy}
Top Secret, {army}
Top Secret, {navy}
Secret, {army, navy}
Top Secret, {}
Secret, {army}
Secret, {navy}
Secret, {}
levels={top secret, secret}
categories={army, navy}
An Example Security Lattice

Context and commentary

No additional commentary.
M35: The need-to-know principle

Reference text

The need-to-know principle
Even if someone has all the necessary official approvals (such as a security clearance) to access certain information they should not be given access to such information unless they have a need to know: that is, unless access to the specific information necessary for the conduct of one’s official duties.
Can be implemented using categories and/or DAC

Context and commentary

The Discretionary Security Requirement addresses need-to-know.
Related with the principle of least privilege.
M36: Outline

Reference text

Outline
Overview of the Bell Lapadula Model
Details of the Bell Lapadula Model
Analysis of the Bell Lapadula Model
More on Multi-level Security
TCSEC and Common Criteria
Biba Integrity Models
Clark-Wilson Model and Chinese Wall Policy

Context and commentary

No additional commentary.
M37: Terminology: Trusted vs. Trustworthy

Reference text

Terminology: Trusted vs. Trustworthy
A component of a system is trusted means that
the security of the system depends on it
failure of component can break the security policy
determined by its role in the system
A component is trustworthy means that
the component deserves to be trusted
e.g., it is implemented correctly
determined by intrinsic properties of the component

Context and commentary

Whether a component is trusted or not is determined by its role in the system
Trusted sounds good, but in fact it isn’t.
The more things are trusted, the less secure it is.
The more things are trustworthy, the more secure it is.
M38: Terminology: Trusted Computing Base (TCB)

Reference text

Terminology: Trusted Computing Base (TCB)
The set of all hardware, software and procedural components that enforcing the security policy depends upon.
In order to break security, an attacker must subvert some part of the TCB.
The smaller the TCB, the more secure a system is.
What would a Trusted Computing Base in a Unix/Linux system consists of?
Depends on the security objective
hardware, kernel, system binaries, system configuration files, setuid root programs, etc., at the minimum
One approach to improve security is to reduce the size of TCB, i.e., reduce what one relies on for security.

Context and commentary

Suppose that the goal is to ensure that the password I type to log into the system is not leaked.
What are in the TCB? Anything running in kernel space. Hardware component. Configuration file of what are loaded. Booting sequence.
What are not in the TCB? Web browser. Other application programs.
Suppose that the goal is to ensure that one’s emails in gmail account are not leaked or online banking access.
What are in the TCB?
What are not in the TCB?
Often the goal is to minimize the trusted computing base.
In cryptography, the goal is often to shift blame. Same in security. To break the security, you must break A.
M39: Assurance

Reference text

Assurance
Assurance: “estimate of the likelihood that a system will not fail in some particular way”
Based on factors such as
Software architecture
E.g., kernelized design,
Development process
Who developed it
Technical assessment

Context and commentary

No additional commentary.
M40: User space

Reference text

User space
Kernel space
User process
OS kernel
TCB
Reference monitor
Uses the reference monitor concept
Reference monitor
Part of TCB
All system calls go through reference monitor for security checking
Security does not depends on the whole kernel
Most OS not designed this way
Kernelized Design for High-Assurance Systems

Context and commentary

One concept to improve assurance is to use kernelized design.
M41: Reference Monitor

Reference text

Reference Monitor
Three required properties for reference monitors in high-assurance systems
tamper-proof
non-bypassable (complete mediation)
small enough to be analyzable

Context and commentary

No additional commentary.
M42: Assurance Criteria

Reference text

Assurance Criteria
Criteria are specified to enable evaluation
Originally motivated by military applications, but now is much wider
Examples
Orange Book (Trusted Computer System Evaluation Criteria)
Common Criteria

Context and commentary

No additional commentary.
M43: TCSEC: 1983–1999

Reference text

TCSEC: 1983–1999
Trusted Computer System Evaluation Criteria
Also known as the Orange Book
Series that expanded on Orange Book in specific areas was called Rainbow Series
Developed by National Computer Security Center, US Dept. of Defense
Heavily influenced by Bell-LaPadula model and reference monitor concept
Emphasizes confidentiality

Context and commentary

No additional commentary.
M44: Evaluation Classes C and D

Reference text

Evaluation Classes C and D
Division D: Minimal Protection
D Did not meet requirements of any other class
Division C: Discretionary Protection
C1 Discretionary protection : DAC, Identification and Authentication, TCB should be protected from external tampering, …
C2 Controlled access protection : object reuse, auditing, more stringent security testing

Context and commentary

No additional commentary.
M45: Division B: Mandatory Protection

Reference text

Division B: Mandatory Protection
B1 Labeled security protection : informal security policy model; MAC for named objects; label exported objects; more stringent security testing
B2 Structured protection : formal security policy model; MAC for all objects, labeling; trusted path; least privilege; covert channel analysis, configuration management
B3 Security domains : satisfies three reference monitor requirements; system recovery procedures; constrains code development; more documentation requirements

Context and commentary

No additional commentary.
M46: Division A: Verification Protection

Reference text

Division A: Verification Protection
A1 Verified design :
functionally equivalent to B3, but require the use of formal methods for assurance; trusted distribution; code, formal top-level specification (FTLS) correspondence

Context and commentary

No additional commentary.
M47: Limitations

Reference text

Limitations
Written for operating systems
NCSC introduced “interpretations” for other things such as networks (Trusted Network Interpretation, the Red Book), databases (Trusted Database Interpretation, the Purple or Lavender Book)
Focuses on BLP
Most commercial firms do not need MAC
Does not address data integrity or availability
Critical to commercial firms
Combine functionality and assurance in a single linear scale

Context and commentary

No additional commentary.
M48: FUNCTIONALITY VS ASSURANCE

Reference text

FUNCTIONALITY VS ASSURANCE
functionality is multi-dimensional
assurance has a linear progression

Context and commentary

No additional commentary.
M49: Common Criteria: 1998–Present

Reference text

Common Criteria: 1998–Present
An international standard (ISO/IEC 15408)
Began in 1998 with signing of Common Criteria Recognition Agreement with 5 signers: US, UK, Canada, France, Germany
As of December 2015, 19 authorizing countries, and 8 consuming countries (do not evaluate, accept evaluated products)
Standard 15408 of International Standards Organization
De facto US security evaluation standard, replaces TCSEC

Context and commentary

No additional commentary.
M50: Common Criteria

Reference text

Common Criteria
Does not provide one list of security features
Describes a framework where security requirements can be specified, claimed, and evaluated
Key concepts
Target Of Evaluation (TOE): the product or system that is the subject of the evaluation.
Security Target (ST): a document that identifies the security properties one wants to evaluate against
Protection Profile (PP): a document that identifies security requirements relevant to a user community for a particular purpose.
Evaluation Assurance Level (EAL) – a numerical rating (1-7) reflecting the assurance requirements fulfilled during the evaluation.

Context and commentary

No additional commentary.
M51: CC Functional Requirements

Reference text

CC Functional Requirements
Contains 11 classes of functional requirements
Each contains one or more families
Elaborate naming and numbering scheme
Classes: Security Audit, Communication, Cryptographic Support, User Data Protection, Identification and Authentication, Security Management, Privacy, Protection of Security Functions, Resource Utilization, TOE Access, Trusted Path
For example, within Identification and Authentication, there are the following families
Authentication Failures, User Attribute Definition, Specification of Secrets, User Authentication, User Identification, and User/Subject Binding

Context and commentary

No additional commentary.
M52: CC Assurance Requirements

Reference text

CC Assurance Requirements
Ten security assurance classes:
Protection Profile Evaluation
Security Target Evaluation
Configuration Management
Delivery and Operation
Development
Guidance Documentation
Life Cycle
Tests
Vulnerabilities Assessment
Maintenance of Assurance

Context and commentary

No additional commentary.
M53: Protection Profiles (PP)

Reference text

Protection Profiles (PP)
“A CC protection profile (PP) is an implementation-independent set of security requirements for a category of products or systems that meet specific consumer needs”
Subject to review and certified
Requirements
Functional
Assurance
EAL

Context and commentary

No additional commentary.
M54: Protection Profiles

Reference text

Protection Profiles
Example: Controlled Access PP (CAPP_V1.d)
Security functional requirements
Authentication, User Data Protection, Prevent Audit Loss
Security assurance requirements
Security testing, Admin guidance, Life-cycle support, …
Assumes non-hostile and well-managed users
Does not consider malicious system developers

Context and commentary

No additional commentary.
M55: Security Targets (ST)

Reference text

Security Targets (ST)
“A security target (ST) is a set of security requirements and specifications to be used for evaluation of an identified product or system”
Can be based on a PP or directly taking components from CC
Describes specific security functions and mechanisms

Context and commentary

No additional commentary.
M56: Evaluation Assurance Levels 1 – 4

Reference text

Evaluation Assurance Levels 1 – 4
EAL 1: Functionally Tested
Review of functional and interface specifications
Some independent testing
EAL 2: Structurally Tested
Analysis of security functions, incl. high-level design
Independent testing, review of developer testing
EAL 3: Methodically Tested and Checked
More testing, Some dev. environment controls;
EAL 4: Methodically Designed, Tested, Reviewed
Requires more design description, improved confidence that TOE will not be tampered

Context and commentary

No additional commentary.
M57: Evaluation Assurance Levels 5 – 7

Reference text

Evaluation Assurance Levels 5 – 7
EAL 5: Semiformally Designed and Tested
Formal model, modular design
Vulnerability search, covert channel analysis
EAL 6: Semiformally Verified Design and Tested
Structured development process
EAL 7: Formally Verified Design and Tested
Formal presentation of functional specification
Product or system design must be simple
Independent confirmation of developer tests

Context and commentary

No additional commentary.
M58: Implications of EALs

Reference text

Implications of EALs
A higher EAL means nothing more, or less, than that the evaluation completed a more stringent set of quality assurance requirements.
It is often assumed that a system that achieves a higher EAL will provide its security features more reliably, but there is little or no published evidence to support that assumption.
Anything below EAL4 doesn’t mean much
Anything above EAL4 is very difficult to achieve for complex systems such as OS
Evaluation is done for environments assumed by vendors

Context and commentary

No additional commentary.
M59: Criticism of CC

Reference text

Criticism of CC
Evaluation is a costly process (often measured in hundreds of thousands of US dollars) — and the vendor’s return on that investment is not necessarily a more secure product
Evaluation focuses primarily on assessing the evaluation documentation, not the product itself
The effort and time to prepare evaluation-related documentation is so cumbersome that by the time the work is completed, the product in evaluation is generally obsolete
Industry input, including that from organizations such as the Common Criteria Vendor’s Forum, generally has little impact on the process as a whole

Context and commentary

No additional commentary.
M60: Outline

Reference text

Outline
Overview of the Bell Lapadula Model
Details of the Bell Lapadula Model
Analysis of the Bell Lapadula Model
More on Multi-level Security
TCSEC and Common Criteria
Biba Integrity Models
Clark-Wilson Model and Chinese Wall Policy

Context and commentary

No additional commentary.
M61: Biba Integrity Models

Reference text

Biba Integrity Models
Kenneth J. Biba: “Integrity Considerations for Secure Computer Systems”, MTR-3153, The Mitre Corporation, April 1977.
Motivations
BLP focuses on confidentiality
In most systems, integrity is equally, if not more, important
Data integrity vs. System integrity
Data integrity means that data cannot be changed without being detected

Context and commentary

No additional commentary.
M62: What is integrity in systems?

Reference text

What is integrity in systems?
Attempt 1: Critical data do not change.
Attempt 2: Critical data changed only in “correct ways”
Analogy: in DB, integrity constraints are used for consistency
Attempt 3: Critical data changed only through certain “trusted programs”
Attempt 4: Critical data changed only as intended by authorized users.

Context and commentary

Does attempt 1 work for operating systems? The TCB does not change.
For attempt 3, consider integrity of /etc/passwd.
M63: Biba: Integrity Levels

Reference text

Biba: Integrity Levels
Each subject (process) has an integrity level
Each object has an integrity level
Integrity levels are totally ordered
Integrity levels different from security levels in confidentiality protection
Highly sensitive data may have low integrity
What is an example of a piece of data that needs high integrity, but no confidentiality?

Context and commentary

Subject integrity level reflect confidence on the program executing correctly.
Object integrity levels reflects degree of confidence in the data.
quality of info in an object vs. importance of an object
Example of information with high sensitivity and low integrity: information collected by spy.
High integrity and low confidentiality: code, configuration data, time, public key, root certs, etc.
M64: Strict Integrity Policy (BLP reversed)

Reference text

Strict Integrity Policy (BLP reversed)
Rules:
s can read o iff i(s)  i(o)
no read down
stops indirect sabotage by contaminated data
s can write to o iff i(s)  i(o)
no write up
stops directly malicious modification
Fixed integrity levels
No information path from low object/subject to high object/subject
Too restrictive for practice. Why?

Context and commentary

Explain
Why is this desirable?
Think about operating systems. Define anything coming from network as having low integrity.
Think about a bank.
Does not work? Why?
M65: Subject Low-Water Policy

Reference text

Subject Low-Water Policy
Rules
s can always read o; however, after reading i(s) min[i(s), i(o)]
s can write to o iff i(s)  i(o)
Subject’s integrity level decreases as reading lower integrity data
No information path from low-object to high-object
Dual to a form of Tranquility Principle in BLP

Context and commentary

subject integrity level changes, and always goes down.
Dual to BLP: tranquility principle
M66: Object Low-Water Mark Policy

Reference text

Object Low-Water Mark Policy
Rules
s can read o; iff i(s)  i(o)
s can always write to o; after writing i(o) min[i(s), i(o)]
Object’s integrity level decreases as it is contaminated by subjects
In the end, objects that have high labels have not been contaminated

Context and commentary

Is there an information path from low to high?
M67: Low-Water Mark Integrity Audit Policy

Reference text

Low-Water Mark Integrity Audit Policy
Rules
s can always read o; after reading i(s) min[i(s), i(o)]
s can always write to o; after writing i(o) min[i(s), i(o)]
Tracing, but not preventing contamination
Similar to the notion of taint tracking in software security

Context and commentary

Tainting
M68: The Ring Policy

Reference text

The Ring Policy
Rules
Any subject can read any object
s can write to o iff i(s)  i(o)
Integrity levels of subjects and objects are fixed.
Intuitions:
subjects are trusted to process low-level inputs correctly
Dual to Trusted Subjects (not subject to star-property) in BLP

Context and commentary

No additional commentary.
M69: Five Mandatory Policies in Biba

Reference text

Five Mandatory Policies in Biba
Strict integrity policy
Subject low-water mark policy
Object low-water mark policy
Low-water mark Integrity audit policy
Ring policy
In practice, one may be using one or more of these policies, possibly applying different policies to different subjects
E.g., subjects for which ring policy is applied are trusted to be able to correctly handle inputs;

Context and commentary

No additional commentary.
M70: Integrity Policies Options

Reference text

Integrity Policies Options
When high subject requests to read low object:
Deny
Allow, drop subject level afterwards
Allow, no change to subject level
When low subject requests to write high object:
Deny
Strict Integrity Policy
Subject Low Water Policy
Ring Policy
Allow, drop object level afterwards
Object Low Water Policy
Low-Water Audit Policy
Allow, no change to object level
Why last row is empty, but last column is not?

Context and commentary

When high subject attempts to read low object, there are three choices:
Forbid.
Allow, but drop subject.
Allow, no drop.
When low subject attempts to write high object, there are three choices:
Forbid.
Allow, but drop object.
Allow, no dropping object.
M71: Object Integrity Levels

Reference text

Object Integrity Levels
The integrity level of an object may be based on
Quality of information (levels may change)
Degree of trustworthiness
Contamination level:
Importance of the object (levels do not change)
Degree of being trusted
Protection level: writing to the objects should be protected
What should be the relationship between the two meanings, which level should be higher?

Context and commentary

See another incarnation of difference between trusted and trustworthy
Examples of high importance, but potentially low-quality information:
Logs
Example of high quality, but low importance objects
Temporary files created before being written
M72: Integrity requires trust in subjects!

Reference text

Integrity requires trust in subjects!
Confidentiality
Integrity
Control reading
preserved if confidential info is not read
Control writing
preserved if important obj is not changed (by writing)
For subjects who need to read, control writing after reading is sufficient, no need to trust them
For subjects who need to write, one has to trust them, control reading before writing is not sufficient
Integrity vs. Confidentiality

Context and commentary

Suppose one has a file that has confidential information, how to achieve confidentiality.
prevent others from reading it
if have to allow reading, prevent readers from leakage is sufficient, does not need to trust readers.
if readers cannot write out, cannot leak sensitive information
Suppose one has a file that should maintain integrity, how to protect it?
prevent others from writing it
if have to allow writing, is it sufficient to prevent writers from reading bad stuff?
M73: Analogy

Reference text

Analogy
Confidentiality violation: leak a secret
CAN be prevented even if I tell the secret to a person I do not trust, so long as I can lock the person up AFTERWARDS to prevent further leakage
The person cannot leak confidential info w/o talking
Integrity violation: follow a wrong instruction
CANNOT be prevented if I follow instruction from an person I do not trust even if I lock the person up BEFOREHAND to prevent the person from receiving any malicious instruction
The person can invent malicious instruction without outside input

Context and commentary

No additional commentary.
M74: Key Difference between Confidentiality and Integrity

Reference text

Key Difference between Confidentiality and Integrity
For confidentiality, controlling reading & writing is sufficient
theoretically, no subject needs to be trusted for confidentiality; however, one does need trusted subjects in BLP to make system realistic
For integrity, controlling reading and writing is insufficient
one has to trust all subjects who can write to critical data

Context and commentary

No additional commentary.
M75: Impacts of The Need to Trust Subjects

Reference text

Impacts of The Need to Trust Subjects
Trusting only a small security kernel is no longer possible
No need to worry about covert channels for integrity protection
How to establish trust in subjects becomes a challenge.

Context and commentary

No additional commentary.
M76: Application of Integrity Protection

Reference text

Application of Integrity Protection
Mandatory Integrity Control in Windows (since Vista)
Uses four integrity levels: Low, Medium, High, and System
Each process is assigned a level, which limit resources it can access
Processes started by normal users have Medium
Elevated processes have High
Through the User Account Control feature
Some processes run as Low, such as IE in protected mode
Reading and writing do not change the integrity level
Ring policy.

Context and commentary

No additional commentary.
M77: Outline

Reference text

Outline
Overview of the Bell Lapadula Model
Details of the Bell Lapadula Model
Analysis of the Bell Lapadula Model
More on Multi-level Security
TCSEC and Common Criteria
Biba Integrity Models
Clark-Wilson Model and Chinese Wall Policy

Context and commentary

No additional commentary.
M78: The Clark-Wilson Model

Reference text

The Clark-Wilson Model
David D. Clark and David R. Wilson. “A Comparison of Commercial and Military Computer Security Policies.” In IEEE SSP 1987.
Paper defends two conclusions:
There is a distinct set of security policies, related to integrity rather than disclosure, which are often of highest priority in the commercial data processing environment
no user of the system, even if authorized, may be permitted to modify data items in such a way that assets or accounting records of the company are lost or corrupted
Some separate mechanisms are required for enforcement of these policies, disjoint from those in the Orange Book

Context and commentary

In commercial settings, preventing unauthorized data modification is usually paramount, more important than preventing information leakage.
M79: Two High-level Mechanisms for Enforcing Data Integrity (1)

Reference text

Two High-level Mechanisms for Enforcing Data Integrity (1)
Well-formed transaction
a user should not manipulate data arbitrarily, but only in constrained ways that preserve or ensure data integrity
e.g., use an append-only log to record all transactions
e.g., double-entry bookkeeping
e.g., passwd
Data can be manipulated only through trusted code!

Context and commentary

The accounting equation serves as a kind of error-detection system: if at any point the sum of debits does not equal the corresponding sum of credits, an error has occurred. Since several different types of errors result in equal sums for debits and credits, double-entry accounting is not a guarantee that no errors have been made.
Double-entry bookkeeping has been considered a fundamental innovation and a cornerstone of Capitalism by such thinkers as Werner Sombart and Max Weber, Sombart writing in “Medieval and Modern Commercial Enterprise” that:[7]
“The very concept of capital is derived from this way of looking at things; one can say that capital, as a category, did not exist before double-entry bookkeeping. Capital can be defined as that amount of wealth which is used in making profits and which enters into the accounts.”
Well-formed transaction is sufficient for ensuring internal consistency. But insufficient for ensuring consistency with physical world.
For example, one attack is one place an bogus order, the system shows that the equipment shows up, the money is sent out.
How to prevent this?
M80: Two High-level Mechanisms for Enforcing Data Integrity (2)

Reference text

Two High-level Mechanisms for Enforcing Data Integrity (2)
Separation of duty
ensure external consistency: data objects correspond to the real world objects
separating all operations into several subparts and requiring that each subpart be executed by a different person
e.g., the two-man rule

Context and commentary

No additional commentary.
M81: Implementing the Two High-level Mechanisms

Reference text

Implementing the Two High-level Mechanisms
Mechanisms are needed to ensure
control access to data: a data item can be manipulated only by a specific set of programs
program certification: programs must be inspected for proper construction, controls must be provided on the ability to install and modify these programs
control access to programs: each user must be permitted to use only certain sets of programs
control administration: assignment of people to programs must be controlled and inspected

Context and commentary

First two are for implementing the well-formed transactions concept:
Data are only accessed by WFT.
WFT can be trusted.
Next two are for implementing SoD.
M82: The Clarke-Wilson Model for Integrity

Reference text

The Clarke-Wilson Model for Integrity
Unconstrained Data Items (UDIs)
data with low integrity
Constrained Data Items (CDIs)
data items within the system to which the integrity model must apply
Integrity Verification Procedures (IVPs)
confirm that all of the CDIs in the system conform to the integrity specification
Transformation Procedures (TPs)
well-formed transactions

Context and commentary

No additional commentary.
M83: Differences of Clark-Wilson from MAC/BLP

Reference text

Differences of Clark-Wilson from MAC/BLP
A data item is not associated with a particular security level, but rather with a set of TPs
A user is not given read/write access to data items, but rather permissions to execute certain programs

Context and commentary

Programs are used in access control.
M84: Comparison with Biba

Reference text

Comparison with Biba
Biba lacks the procedures and requirements on identifying subjects as trusted
Clark-Wilson focuses on how to ensure that programs can be trusted

Context and commentary

No additional commentary.
M85: The Chinese Wall Security Policy

Reference text

The Chinese Wall Security Policy
Goal: Avoid Conflict of Interest
Data are stored in a hierarchical arranged system
the lowest level consists of individual data items
the intermediate level group data items into company data sets
the highest level group company datasets whose corporation are in competition

Context and commentary

No additional commentary.
M86: The Set of All Objects, 0

Reference text

The Set of All Objects, 0

Context and commentary

No additional commentary.
M87: Simple Security Rule in Chinese Wall Policy

Reference text

Simple Security Rule in Chinese Wall Policy
Access is only granted if the object requested:
is in the same company dataset as an object already accessed by that subject, i.e., within the Wall,
or
belongs to an entirely different conflict of interest class.

Context and commentary

No additional commentary.
M88: Summary

Reference text

Summary
Multi-level security focuses on protecting confidentiality
Bell-Lapadula Model
Biba Integrity Model
Clark Wilson Model and Chinese wall policy
88

Context and commentary

No additional commentary.
M89: Related Topics

Reference text

Related Topics
Non-interference and non-deducibility
Role based access control

Context and commentary

No additional commentary.