Threat Modeling with STRIDE

One of the most popular frameworks for creating threat models is STRIDE, which stands for Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, and Elevation of Privilege. These are the six categories of threats that can affect a system.

To illustrate how STRIDE works, let’s consider a simple web application that allows users to create and share blog posts. The web application has the following components:

  • A web server that hosts the application and communicates with the database.
  • A database server that stores the user accounts and blog posts.
  • A browser that allows the user to interact with the web server.

Using STRIDE, we can identify the following threats and countermeasures for each component:

  • Web server:
    • Spoofing: An attacker could impersonate a legitimate user or the web server itself to gain unauthorized access to the system. To prevent this, the web server should use strong authentication and encryption mechanisms, such as HTTPS and SSL certificates.
    • Tampering: An attacker could modify the data or code on the web server to compromise its integrity or functionality. To prevent this, the web server should use secure coding practices, input validation, output encoding, and file integrity checks.
    • Repudiation: An attacker could deny performing an action or claim that an action was performed by someone else. To prevent this, the web server should use logging and auditing mechanisms to record and verify the actions and identities of the users and the web server itself.
    • Information Disclosure: An attacker could access or leak sensitive information from the web server, such as user credentials, blog posts, or configuration files. To prevent this, the web server should use encryption, access control, and data minimization techniques to protect the data in transit and at rest.
    • Denial of Service: An attacker could overload or crash the web server by sending a large number of requests or malicious inputs. To prevent this, the web server should use throttling, caching, and load balancing techniques to handle the traffic and mitigate the impact of malicious requests.
    • Elevation of Privilege: An attacker could exploit a vulnerability or misconfiguration on the web server to gain higher privileges or access to restricted resources. To prevent this, the web server should use the principle of least privilege, secure configuration, and patch management to limit the permissions and exposure of the web server.
  • Database server:
    • Spoofing: An attacker could impersonate the web server or a legitimate user to access or modify the data on the database server. To prevent this, the database server should use strong authentication and encryption mechanisms, such as mutual authentication and database encryption.
    • Tampering: An attacker could modify the data on the database server to compromise its integrity or functionality. To prevent this, the database server should use secure coding practices, input validation, output encoding, and integrity constraints.
    • Repudiation: An attacker could deny performing an action or claim that an action was performed by someone else. To prevent this, the database server should use logging and auditing mechanisms to record and verify the actions and identities of the web server and the users.
    • Information Disclosure: An attacker could access or leak sensitive information from the database server, such as user credentials, blog posts, or database schema. To prevent this, the database server should use encryption, access control, and data minimization techniques to protect the data in transit and at rest.
    • Denial of Service: An attacker could overload or crash the database server by sending a large number of queries or malicious inputs. To prevent this, the database server should use throttling, caching, and backup techniques to handle the queries and mitigate the impact of malicious inputs.
    • Elevation of Privilege: An attacker could exploit a vulnerability or misconfiguration on the database server to gain higher privileges or access to restricted data. To prevent this, the database server should use the principle of least privilege, secure configuration, and patch management to limit the permissions and exposure of the database server.
  • Browser:
    • Spoofing: An attacker could impersonate the web server or another user to trick the user into providing sensitive information or performing malicious actions. To prevent this, the browser should use HTTPS and SSL certificates to verify the identity and legitimacy of the web server, and display visual indicators to warn the user of potential phishing or spoofing attempts.
    • Tampering: An attacker could modify the content or behavior of the web application on the browser by injecting malicious code or altering the HTML, CSS, or JavaScript files. To prevent this, the browser should use secure coding practices, input validation, output encoding, and content security policy to prevent cross-site scripting (XSS) and other code injection attacks.
    • Repudiation: An attacker could deny performing an action or claim that an action was performed by someone else. To prevent this, the browser should use logging and auditing mechanisms to record and verify the actions and identities of the user and the web server.
    • Information Disclosure: An attacker could access or leak sensitive information from the browser, such as user credentials, blog posts, or browsing history. To prevent this, the browser should use encryption, access control, and data minimization techniques to protect the data in transit and at rest, and provide the user with options to clear or manage their data.
    • Denial of Service: An attacker could overload or crash the browser by sending a large number of requests or malicious inputs. To prevent this, the browser should use throttling, caching, and sandboxing techniques to handle the requests and mitigate the impact of malicious inputs.
    • Elevation of Privilege: An attacker could exploit a vulnerability or misconfiguration on the browser to gain higher privileges or access to restricted resources. To prevent this, the browser should use the principle of least privilege, secure configuration, and patch management to limit the permissions and exposure of the browser.