Outline for January 27, 2006
Reading: text, §23.3–23.4
- Greetings and felicitations!
- Puzzle of the day
- Vulnerability Models
- PA model
- RISOS
- NRL
- Aslam
- Example Flaws
- fingerd buffer overflow
- xterm race condition
- RISOS
- Goal: Aid managers, others in understanding
security issues in OSes, and work required to make them more
secure
- Incomplete parameter validation—failing to check
that a parameter used as an array index is in the range of
the array;
- Inconsistent parameter validation—if a routine
allowing shared access to files accepts blanks in a file
name, but no other file manipulation routine (such as a
routine to revoke shared access) will accept them;
- Implicit sharing of privileged/confidential
data—sending information by modulating the load average of the
system;
- Asynchronous validation/Inadequate
serialization—checking a file for access permission and opening it
non-atomically, thereby allowing another process to change
the binding of the name to the data between the check and
the open;
- Inadequate
identification/authentication/authorization—running a
system program identified only by name, and having a
different program with the same name executed;
- Violable prohibition/limit—being able to
manipulate data outside one's protection domain; and
- Exploitable logic error—preventing a program
from opening a critical file, causing the program to execute
an error routine that gives the user unauthorized rights.
- PA Model (Neumann's organization)
- Goal: develop techniques to search for
vulnerabilites that less experienced people could use
- Improper protection (initialization and
enforcement)
- Improper choice of initial protection
domain—incorrect initial assignment of security or
integrity level at system initialization or generation;
a security critical function manipulating critical data
directly accessible to the user;
- Improper isolation of implementation
detail—allowing users to bypass operating system controls
and write to absolute input/output addresses;
direct manipulation of a hidden data structure
such as a directory file being written to as if it were a
regular file; drawing inferences from paging activity
- Improper change—the time-of-check
to time-of-use flaw; changing a parameter
unexpectedly;
- Improper naming—allowing two different objects
to have the same name, resulting in confusion over
which is referenced;
- Improper deallocation or deletion—leaving
old data in memory deallocated by one process and reallocated
to another process, enabling the second process to access
the information used by the first; failing to end a session
properly
- Improper validation—not checking critical
conditions and parameters, so a process addresses memory not
in its memory space by referencing through an out-of-bounds
pointer value; allowing type clashes; overflows
- Improper synchronization
- Improper indivisibility—interrupting atomic
operations (e.g. locking); cache inconsistency
- Improper sequencing—allowing actions in an
incorrect order (e.g. reading during writing)
- Improper choice of operand or operation—using
unfair scheduling algorithms that block certain processes or
users from running; using the wrong function or wrong
arguments.
- Analysis procedure
- Collect descriptions of protection patterns
- Convert to raw error patterns
- Abstract into system-independent
components
- Determine which features in the OS code are
relevant, and abstract relevant contexts of those
features
- Compare the combinations of the relevant
features in the OS with generic error patterns
Version of January 29, 2006 at 7:21 PM
You can also obtain a PDF version of this.