• Injection flaws: untrusted input injected into an application.
  • Cross-site scripting (XSS): untrusted input is included in a web page output.
  • Broken authentication/session management: the application doesn't validate or protect information.
  • Inadequate role-based authorization or allowing users to access functionality beyond their permission.
  • URL tampering to gain access to restricted content.
  • Missing function-level access control or not adequately limiting access to specific functions.
  • Manipulating URL parameters to access restricted areas/resources.
  • Session fixation occurs when an attacker gains unauthorized access by forcing a user to use a specific session ID.
  • Allowing unauthorized domains to access resources by way of improperly configured cross-origin resource sharing (CORS).
  • Accessing authorized data by manipulating the identifier in URLs because the application directly exposed the object identifier (IDOR-insecure direct object references).

How can we prevent/mitigate broken access control? There are several ways to prevent unauthorized individuals from "entering an area or using a resource" by following defense-in-depth and least privilege principles.

  • Follow "deny by default" unless publicly accessible.
  • Make sure there is robust user authentication and authentication mechanisms in place.
  • Validate user inputs.
  • Secure session management.
  • Minimize Cross-Origin Resource Sharing (CORS) usage by using access control in the application.
  • Access validation: an attacker attempts to tamper with an application/database, and the system catches it, checks for credentials, nope? Access not allowed.
  • Test and audit controls put in place! Regularly review and update any access control policies.
  • Conduct regular security audits.

This is just a small excerpt on Broken Access Control. Check out more at OWASP.org! https://owasp.org/Top10/A01_2021-Broken_Access_Control/