Notes - MCS
Robust Software
Notes - MCS
Robust Software
  • Robust Software
  • Secure Software Design Principles
    • Motivation
    • Secure and Resilient/Robust Software
    • Best Practices for Resilient Applications
    • Designing Applications for Security and Resilience
    • Architecture for the Web/Cloud
  • Software Security Lifecycle
    • Motivation
    • Secure Development Lifecycle
    • Software Security Touchpoints
    • Software Assurance Forum for Excellence in Code (SAFECode)
    • Secure SW Lifecycle Processes Summary
    • Adaptations of the Secure Software Lifecycle
    • Assessing the Secure Software Lifecycle
    • Recommendations
  • Software Quality Attributes
    • Motivation
    • Software Quality Assurance
    • Software Quality Standards
    • Software Quality Attributes
    • Extra Software Quality Assurance Properties
  • Security Requirements
    • Motivation
    • Security Requirements
    • Threats
    • Defenses
    • Confidentiality
    • Integrity
    • Availability
    • What about other goals/properties?
    • Security Requirements Engineering
    • Types of Security Requirements
    • Security Policy
    • Precision
    • Completeness and Consistency
    • Examples of Non-Functional Requirements
    • Goals and Requirements
    • Measures
    • Requirements Interaction
    • Natural Language Requirements
    • Best Practices
  • Common Software Attacks
    • Objectives
    • 10 Major Cyber-Attacks of 21st Century
    • Software Security Basics
    • Defenses Methods
    • SANS SWAT Checklist
  • Safe Programming
    • Secure Coding Practices
    • Top 10 Secure Coding Practices (CERT/SEI)
    • 7 Pernitious Kingdoms
  • Robustness, PenTest, Fuzzy and Static Code Analysis
    • Security/Robustness Testing
    • Robustness Tests Checklist Example
    • Penetration Testing
    • Penetration Testing Roadmap
    • Tools
    • Fuzz Testing
    • Static Code Analysis
    • Side Channels
  • Safety (and Security)
    • Safety
    • A safety Lifecycle Example
    • Risk Management Process
    • System Definition
    • Hazard Identification and Classification
    • Desk-based Hazard Identification
    • Workshop-based Hazard Identification
    • HAZOP
    • Hazard Identification and Classification
      • Broadly acceptable risks
    • Risk Evaluation and Risk Acceptance
    • Use of codes of practice
    • Use of reference system
    • Explicit risk estimation
    • Qualitative risk estimation
    • Quantitative risk estimation
    • Safety measures
    • Safety requirements
    • Hazard Management
    • Hazard life cycle
    • Independent Assessment
    • Safety Plan
    • Safety Case
    • FMEA Example
    • DevSecOps
Powered by GitBook
On this page
  • Error handling & logging
  • Data protection
  • Configuration and operations
  • Authentication
  • Session management
  • Input & output handling
  • Access control
  1. Common Software Attacks

SANS SWAT Checklist

Error handling & logging

  • Display generic error messages.

  • No unhandled exceptions.

  • Suppress framework-generated errors.

  • Log all authentication activities.

  • Log all privilege changes.

  • Log administrative activities.

  • Log access to sensitive data.

  • Do not log inappropriate data.

  • Store logs securely.

Data protection

  • Use SSL everywhere.

  • Disable HTTP access for all SSL-enabled resources.

  • Use the strict-Transport-security header.

  • Store user passwords using a strong, iterative, salted hash.

  • Securely exchange encryption keys.

  • Disable weak SSL ciphers on servers.

  • Use valid SSL certificates from a reputable CA.

  • Disable data caching using cache control headers and autocomplete.

  • Limit the use and storage of sensitive data.

Configuration and operations

  • Establish a rigorous change management process.

  • Define security requirements.

  • Conduct a design review.

  • Perform code reviews.

  • Perform security testing.

  • Harden the infrastructure.

  • Define an incident handling plan.

  • Educate the team on security.

Authentication

  • Don't hardcode credentials.

  • Develop a strong password reset system Implement a strong password policy.

  • Implement account lockout against brute force attacks.

  • Don't disclose too much information in error messages.

  • Store database credentials securely.

  • Applications and Middleware should run with minimal privileges.

Session management

  • Ensure that session identifiers are sufficiently random.

  • Regenerate session tokens.

  • Implement an idle session timeout.

  • Implement an absolute session timeout.

  • Destroy sessions at any sign of tampering.

  • Invalidate the session after logout.

  • Place a logout button on every page.

  • Use secure cookie attributes (i.e. httponly and secure flags).

  • Set the cookie domain and path correctly.

  • Set the cookie expiration time.

Input & output handling

  • Conduct contextual output encoding.

  • Prefer “whitelists over blacklists”.

  • Use parameterized SQL queries.

  • Use tokens to prevent forged requests.

  • Set the encoding for your application.

  • Validate uploaded files.

  • Use the nosniff header for uploaded content.

  • Validate the source of input.

  • Use the X-frame-options header.

  • Use content security Policy (csP) or X-Xss-Protection headers.

Access control

  • Apply access control checks consistently.

  • Apply the principle of least privilege.

  • Don’t use direct object references for access control checks.

  • Don’t use unvalidated forwards or redirects.

Last updated 1 year ago