The entry below from Bill Worley is cross posted from Paths2Trust. It describes attributes in hardware and software that are essential for security. Yet these attributes are incomplete in the hardware, operating systems, and application software that runs the Internet. With just one weak link in the chain you are not secure.
And there are a lot of weak links in IT infrastructure today. As a result there is an endless stream of vulnerabilities-exploits-patches. Here are some examples this week:
Adobe Warns of Attacks on New Flash Flaw
Siemens: Stuxnet worm hit industrial systems
Mozilla halts Firefox security updates
Microsoft Releases Security Patches for 11 Vulnerabilities
And last week:
Attackers Exploiting New Acrobat/Reader Flaw
Are "Here You Have" and "David Leadbetter" viruses going after specific targets? New e-mail borne viruses hitting media companies, utilities
Apple, Mozilla Fix DLL Loading Issue in Browsers
Symantec 'Hack Is Wack' Website Fixed
You get the picture. This cycle is endless and we are getting less and less secure each day as hacking becomes more institutionalized and industrialized. Without secure trust throughout hardware and software we are kidding ourselves that our systems are secure.
From Bill Worley at Paths2Trust. This is a bit technical but follow-on posts will provide specific examples that are easier to understand:
When considering software chains of trust, it is helpful to begin with a running system, executing software that has been supported by a chain of trust. The following basic requirements for the software and hardware, particularly for the hardware protections needed by the software, become clear.
1. The integrity of every software component in the executing system must be ensured at the time the software begins to execute.
2. Hardware protections must ensure that loaded executable code cannot be modified while the system is running.
3. Hardware protections must ensure that critical program flow and control data are inaccessible by any attack (or other unrelated) software, and that only permissible flows of control can occur.
4. Data associated with each software component must be protected from read and write accesses by non-associated software.
The first requirement implies that loadable software must reside on system storage in a form that permits strong authentication of its integrity each time it is loaded for execution. This is achievable by protecting executable software cryptographically and validating its integrity each time it is loaded for execution. It also is achievable by loading, and refreshing when necessary, executable software from previously validated read-only system storage. These approaches, of course, assume that the loader itself also was validated when it first was made executable, by employing means such as a TPM chip.
The second requirement implies that hardware memory access protections can be set to prevent any attacker (or other) software from modifying executable code. Ideally these protections also can prevent executing code from being read by any other software.
The third requirement is for the ability of hardware to safeguard function arguments, return values, function return addresses. etc. - both from unrelated software seeking to learn the values of one or more of these critical control data, and from attackers seeking to modify such data in order to hijack executing software.
The fourth requirement is to ensure the integrity of computational data. Hardware data access protections at all needed levels of granularity are crucial. Two hardware privilege levels and multiple virtual address spaces simply are not sufficient.
In summary, strong hardware protections are required to support the end product of a complete software chain of trust. Such hardware protections are essential, but nearly all extant hardware architectures lack one or more needed capabilities. Examples of such capabilities include fine-grain memory protections, execute-only code, inaccessible program control state, fully granular access protections, enforced flow control limitations, and virtually mapped bus access by I/O and other adapter boards.
Today's widely deployed systems consistently have valued ever-increasing functionality and complexity over trustworthiness. As such, they remain unable to support full software chains of trust.
Dr. Joseph Markowitz's first law of information assurance states that: "every new function brings with it new vulnerabilities." Software driving for ever increasing layers of functionality, while continuing to rely upon insufficient hardware protection architectures, simply cannot support full software chains of trust. Resulting systems, particularly at the incomprehensible levels of complexity we see today, will continue to be well springs of new vulnerabilities, unending patch cycles, costs for deployment of external protective bodyguard systems, and insufficiently responsive manual procedures for attack identification, isolation, and remediation.
Bill