Warning: include(api.php): failed to open stream: No such file or directory in /home/shapings/public_html/wp-content/themes/arthemia/functions.php on line 2

Warning: include(): Failed opening 'api.php' for inclusion (include_path='.:/usr/local/php55/pear') in /home/shapings/public_html/wp-content/themes/arthemia/functions.php on line 2
Shaping Software » Blog Archive » Security Frame
Home » Frames, Security

Security Frame

7 April 2008 2 Comments

While working on Improving Web Application Security: Threats and Countermeasures, my team created the software security frame.  We used the Security Frame to organize and prioritize software security issues.  We used this frame throughout the guide to organize our guidelines and checklists.  We also used the Security Frame to build evaluation criteria to help find key security decisions that can have a large impact.

Categories

We found that we could organize the majority of our security principles, patterns and practices using the following buckets:

Category Key Considerations
Auditing and Logging Who did what and when? Auditing and logging refer to how your application records security-related events.
Authentication Who are you? Authentication is the process where an entity proves the identity of another entity, typically through credentials, such as a user name and password.
Authorization What can you do? Authorization is how your application provides access controls for resources and operations.
Configuration Management Who does your application run as? Which databases does it connect to? How is your application administered? How are these settings secured? Configuration management refers to how your application handles these operational issues.
Cryptography How are you keeping secrets (confidentiality)? How are you tamper-proofing your data or libraries (integrity)? How are you providing seeds for random values that must be cryptographically strong? Cryptography refers to how your application enforces confidentiality and integrity.
Exception Management When a method call in your application fails, what does your application do? How much do you reveal? Do you return friendly error information to end users? Do you pass valuable exception information back to the caller? Does your application fail gracefully?
Input and Data Validation How do you know that the input your application receives is valid and safe? Input validation refers to how your application filters, scrubs, or rejects input before additional processing. Consider constraining input through entry points and encoding output through exit points. Do you trust data from sources such as databases and file shares?
Sensitive Data How does your application handle sensitive data? Sensitive data refers to how your application handles any data that must be protected either in memory, over the network, or in persistent stores.
Session Management How does your application handle and protect user sessions? A session refers to a series of related interactions between a user and your Web application.

 

Threats and Attacks Organized by the Security Frame

With the Security Frame, it’s easy to walk the categories and think of potential security problems.  Here’s a list of potential software performance problems, organized by the Security Frame:

Category Threats
Auditing and Logging
  • User denies performing an operation.
  • Attacker exploits an application without trace.
  • Attacker covers his tracks.
Authentication
  • Network eavesdropping.
  • Brute force attacks.
  • Dictionary attacks.
  • Cookie replay attacks.
  • Credential theft.
Authorization
  • Elevation of privilege.
  • Disclosure of confidential data.
  • Data tampering.
  • Luring attacks.
configuration Management
  • Unauthorized access to administration interfaces.
  • Unauthorized access to configuration stores.
  • Retrieval of clear text configuration secrets.
  • Lack of individual accountability.
  • Over-privileged process and service accounts.
Cryptography
  • Loss of decryption keys.
  • Encryption cracking.
Exception Management
  • Revealing sensitive system or application details.
  • Denial of service attacks.
Input and Data Validation
  • Buffer overflows.
  • Cross-site scripting.
  • SQL injection.
  • Canonicalization attacks.
  • Query string manipulation.
  • Form field manipulation.
  • Cookie manipulation.
  • HTTP header manipulation.
Sensitive Data
  • Accessing sensitive data in storage.
  • Accessing sensitive data in memory (including process dumps.)
  • Network eavesdropping.
  • Information disclosure.
Session Management
  • Session hijacking.
  • Session replay.
  • Man-in-the-middle attacks.

Vulnerabilities Organized by the Security Frame
You can also use the Security Frame to identify common mistakes that lead to the security problems above.   Here’s a list of common design mistakes we find in applications:

Category Vulnerabilities
Auditing and Logging
  • Failing to audit failed logons.
  • Failing to secure audit files.
  • Failing to audit across application tiers.
Authentication
  • Using weak passwords.
  • Storing clear text credentials in configuration files.
  • Passing clear text credentials over the network.
  • Permitting over-privileged accounts.
  • Permitting prolonged session lifetime.
  • Mixing personalization with authentication.
Authorization
  • Relying on a single gatekeeper.
  • Failing to lock down system resources against application identities.
  • Failing to limit database access to specified stored procedures.
  • Using inadequate separation of privileges.
  • Inappropriate isolation levels
Configuration Management
  • Using insecure administration interfaces.
  • Using insecure configuration stores.
  • Storing clear text configuration data.
  • Having too many administrators.
  • Using over-privileged process accounts and service accounts.
Crytpography
  • Using custom cryptography.
  • Using the wrong algorithm or a key size that is too small.
  • Failing to secure encryption keys.
  • Using the same key for a prolonged period of time.
  • Distributing keys in an insecure manner.
Exception Management
  • Failing to use structured exception handling.
  • Revealing too much information to the client.
Input and Data Validation
  • Using non-validated input in the HTML output stream.
  • Using non-validated input used to generate SQL queries.
  • Relying on client-side validation.
  • Using input file names, URLs, or user names for security decisions.
  • Using application-only filters for malicious input.
  • Looking for known bad patterns of input.
  • Trusting data read from database, file shares, and other network resources.
  • Failing to validate input from all sources including cookies, query string parameters, HTTP headers, databases, and network resources.
Sensitive Data
  • Storing secrets when you do not need to.
  • Storing secrets in code.
  • Storing secrets in clear text.
  • Passing sensitive data in clear text over networks.
Session Management
  • Passing session identifies over unencrypted channels.
  • Permitting prolonged session lifetime.
  • Having insecure session state stores.
  • Placing session identifies in query strings.

Countermeasures Organized by the Security Frame

Here’s a list of common design strategies that lead to improved security:

Category Countermeasures
Auditing and Logging
  • Identify malicious behavior.
  • Know your baseline (know what good traffic looks like.)
  • Use application instrumentation to expose behavior that can be monitored.
  • Avoid distributed coherent caches.
Authentication
  • Use strong password policies.
  • Do not store credentials.
  • Use authentication mechanisms that do not require clear text credentials to be passed over the network.
  • Encrypt communication channels to secure authentication tokens.
  • Use HTTPS only with forms authentication cookies.
  • Separate anonymous from authenticated pages.
Authorization
  • Use least privileged accounts.
  • Consider granularity of access.
  • Enforce separation of privileges.
  • Secure system resources against system identities.
Configuration Management
  • Use least privileged service accounts.
  • Do not store credentials in clear text.
  • Use strong authentication and authorization on administrative interfaces.
  • Do not use the Local Security Authority (LSA.)
  • Avoid storing sensitive information in the Web space.
  • Use only local administration.
Configuration Management
  • Use least privileged service accounts.
  • Do not store credentials in clear text.
  • Use strong authentication and authorization in administrative interfaces.
  • Do not use the Local Security Authority (LSA)
  • Avoid storing sensitive information in the Web space.
  • Use only local administration.
Cryptography
  • Do not develop and use proprietary algorithms (XOR is not encryption. Use platform-provided cryptography.)
  • use platform features for generating random numbers over rolling your own.
  • Avoid key management. For example, in Windows use DPAPI where appropriate.
  • Periodically change your keys.
Exception Management
  • Use structured exception handling (by using try/catch blocks.)
  • Catch and wrap exceptions only if the operation adds value/information.
  • Do not reveal sensitive system or application information.
  • Do not log private data such as passwords.
Input and Data Validation
  • Do not trust input.
  • Validate input: length, range, format, and type.
  • Constrain, reject and sanitize input.
  • Encode output.
Sensitive Data
  • Do not store secrets in software.
  • Encrypt sensitive data over the network.
  • Secure the channel.
Session Management
  • Partition site by anonymous, identified, and authenticated users.
  • Reduce session timeouts.
  • Avoid storing sensitive data in session stores.
  • Secure the channel to the session store.
  • Authenticate and authorize access to the session store.

My Related Posts

2 Comments »