A "Missing Access Control" vulnerability refers to a security issue where an application fails to properly enforce restrictions on what authenticated users are allowed to do, or the absence/improper implementation of mechanisms that restrict access to resources or functionalities based on user roles, permissions, or other criteria. This can lead to unauthorized access to sensitive data or functionality, allowing users to perform actions beyond their intended permissions. This often happens when CRUD (Create, Read, Update, Delete) or FLS (Field-Level Security) checks are not properly enforced.
To mitigate "Missing Access Control" issues in your application:
1. **Use "with sharing" classes** wherever possible to enforce sharing rules automatically.
2. **Implement explicit access control checks** for "without sharing" classes, such as using custom permissions or feature management checks to validate user authorization.
3. **Avoid overly broad permissions** like "View All" or "Modify All," unless absolutely necessary.
4. **Validate user permissions explicitly** using methods like `Schema.sObjectType` to check object and field-level access, including `isAccessible()`, `isCreateable()`, `isUpdateable()`, and `isDeletable()`.
5. **Implement proper CRUD and FLS checks** at both the object and field levels.
6. **Leverage USER_MODE operations** where applicable, as it automatically enforces CRUD and FLS checks.
7. **Justify and carefully review** any custom sharing logic for security implications.
8. **Regularly review and test** your application to identify and address any gaps in access control.
9. **Document false positives** in a false positive document and include it in your submission.
These practices will help ensure proper access control and reduce vulnerabilities. If you need further assistance, consider opening a support case for guidance.