Programs and Programming
- This chapter investigates vulnerabilities caused by programmers.
- Programming security failures can be intentional or unintentional.
- There is no standard terminology for these errors
- This is a discussion of a proposed but inactive IEEE standard
- We normally refer to any non-syntax error as a bug.
- A human can make an error
- This error can lead to a fault or an incorrect step in a process.
- They point out that a design fault can lead to a coding error.
- And an error may lead to many faults.
- A failure is a departure from a systems required behavior.
- A fault is an inside view of a problem.
- A failure is an outside view.
- The faulty code may never be executed
- But once it is, it can become a failure.
- Finally a flaw is the term security professionals use to describe any type of software fault or failure.
- They point out that when using software
- It is common not to notice minor flaws.
- Or to assume that these are user errors.
- Programmers produce code with flaws. (That is a solid positive statement)
- And despite testing, flaws exist and persist.
- Flaws have two security implications
- They can pose a threat to the integrity of the system.
- Incorrect computations -> faulty data.
- Data can be
- Incorrectly computed
- Overwritten or destroyed
- But this could lead to a broken system which impacts availability.
- Or even incorrectly protected data that can compromise the confidentiality of the system.
- They can be exploited by a malicious actor.
- As we saw with pwnkit that a flaw can be exploited to provide full access to a computer.
- They look at several types of programming errors.