18.01.2015 Views

Architecture and Design Considerations - Build Security In - US-CERT

Architecture and Design Considerations - Build Security In - US-CERT

Architecture and Design Considerations - Build Security In - US-CERT

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Table 1- Adapted from “Enhancing the Development Life Cycle to Produce Secure Software”<br />

General Principle Key Practices Benefits Examples <strong>and</strong> Practices<br />

Minimize the<br />

number of highconsequence<br />

Principle of least<br />

privilege<br />

Minimizes the number of actors in the<br />

system that are granted high levels of<br />

<strong>In</strong> a traditional Web portal<br />

application, the end user is only<br />

privilege, <strong>and</strong> the amount of time any allowed to read, post content, <strong>and</strong><br />

targets<br />

actor can hold onto its privileges. enter data into HTML forms, while<br />

the Webmaster has all the<br />

Don’t expose<br />

vulnerable or<br />

highconsequence<br />

components<br />

Separation of privileges,<br />

duties, <strong>and</strong> roles<br />

Separation of domains<br />

Keep program data,<br />

executables, <strong>and</strong><br />

configuration data<br />

separated<br />

Segregate trusted<br />

entities from untrusted<br />

entities<br />

Ensures that no single entity (human<br />

or software) should have all the<br />

privileges required to modify, delete,<br />

or destroy the system, components<br />

<strong>and</strong> resources.<br />

Separation of domains makes<br />

separation of roles <strong>and</strong> privileges<br />

easier to implement.<br />

Reduces the likelihood that an<br />

attacker who gains access to<br />

program data will easily locate <strong>and</strong><br />

gain access to program executables<br />

or control/configuration data.<br />

Reduces the exposure of the<br />

software’s high-consequence<br />

functions from its high-risk functions,<br />

which can be susceptible to attacks.<br />

permissions.<br />

Developers should have access to<br />

the development <strong>and</strong> test<br />

code/systems; however, they<br />

should not have access to the<br />

production system. If developers<br />

have access to the production<br />

system, they could make<br />

unauthorized edits that could lead<br />

to a broken application or add<br />

malicious code for their personal<br />

gain. The code needs to go through<br />

the appropriate approvals <strong>and</strong><br />

testing before being deployed into<br />

production. On the other h<strong>and</strong>,<br />

administrators should be able to<br />

deploy the package into production<br />

but should not have the ability to<br />

edit the code.<br />

Database administrators should not<br />

have control over business logic<br />

<strong>and</strong> the application administrator<br />

should not have control over the<br />

database.<br />

On Unix or Linux systems, the<br />

chroot “jail” feature of the st<strong>and</strong>ard<br />

operating system access controls<br />

can be configured to create an<br />

isolated execution area for<br />

software, thus serving the same<br />

purpose as a Java or Perl<br />

“s<strong>and</strong>box.”<br />

Java <strong>and</strong> Perl’s s<strong>and</strong>boxing <strong>and</strong><br />

.NET’s Code Access <strong>Security</strong><br />

mechanism in its Common<br />

Language Runtime (CLR) assigns a<br />

level privilege to executable(s)<br />

contained within it. This privilege<br />

level should be the minimal needed<br />

by the function(s) to perform its<br />

normal expected operation. If any<br />

anomalies occur, the s<strong>and</strong>box/CLR<br />

will generate an exception <strong>and</strong> an<br />

exception h<strong>and</strong>ler will prevent the<br />

executable from performing the<br />

unexpected operation.<br />

<strong>Architecture</strong> <strong>and</strong> <strong>Design</strong> <strong>Considerations</strong> for Secure Software 10

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!