How software fits together
An understanding of this is critical to understanding system security
Background - security issues
- Buffer overflows - allow many intrusions
- SQL Injection - serious problem for database-backed web sites
- Poorly constructed trust logic -allows malware infections
The situation can best be illustrated with an example.
Case study - Postfix
What is Postfix?
Mail server - exactly what does a mail server do?
- Mail receipt
- Mail delivery - local
- Mail delivery - remote
- Queue management
- Good neighbour to others
- Filtering - suspect mail, virus
- Validation - domain keys, sender id
Written by Witesse Venema - better known for security tools such as SATAN, Coroner’s Toolkit, TCP wrappers
Business case - IBM (1998)
Why would IBM pay someone to write a new mail server and give it away?
At the time IBM was attempting to establish eBusiness but:
- mail servers had serious security issues
- result was lack of faith in infrastructure
Solution?
Write a secure mail server and give it away
Server in depth - how does it all fit together?
A server of any kind does not exist in isolation
It must talk to a variety of other servers/services such as:
- Domain Name System - Internet address book
- Other mail servers
- Mail clients
- SQL
- Authentication service - LDAP etc
Issues
- levels of trust
- type of data exchanged
- risks of something going wrong
Note: not necessarily break ins - must consider accuracy (example DNS –> pharming)
Other things to consider:
Witesse’s long-term average - one bug per 1000 lines of code (and what is yours?)
Only some bugs have security implications
But all bugs have credibility implications
Postfix has 88,000 lines of code
Windows 2000 has 40 million (being written at same time as Postfix)
The critical issue is: how do we manage the risk?
Even if we have a problem, how does our server handle this gracefully and with minimal risk?
Venema solution:
- No monolithic server
- Small servers for different tasks
- Limited communication between trusted/untrusted
- Compromise of one server does not compromise whole system
- Graceful management of errors and queue conditions
- Lower risk of breaking things when code updated