-
Notifications
You must be signed in to change notification settings - Fork 121
Fix broken access control vulnerability in settings API #67
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: 9.x
Are you sure you want to change the base?
Conversation
- Implement methods in task_definition model for numbas data management - Implement routes in task_definition_api for numbas data managemnt - Remove unused upload API in numbas_api
Rubocop offenses are fixed as well
… launching scorm test
- refactor to allow different file roots - remove need for portfolio evidence attribute, while still working with existing values
Use new environment variable to enable archive - false by default.
Add ability to auto archive units
- use archive folder when unit archived - move submission history to archive folder when unit archived - move submission history on task abbr change - move submission history on username change - delete submission history on task delete
- action is too slow for use in sidekiq - removed from scheduled actions
- Modified app/api/settings_api.rb to require authentication for sensitive endpoints - Created a new public endpoint for non-sensitive settings - Added authentication requirement to privacy settings endpoint - Added SettingsApi to the authentication helpers list in app/api/api_root.rb - Prevents unauthorized access to system configuration
EkamBhullar
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hey @theiris6 , PR looks good, I tried accessing the settings endpoint without authenticating and it gave me error as expected and public endpoint worked properly
.
The PR addresses a critical security vulnerability and implements the fix in a clean, maintainable way. However, I believe,
-Basic Error Handling can be added in /settings endpoint, in case if there is any loading failure.
Also, do you think authenticated check can also be added in /settings/privacy?
|
Hi @theiris6, Can you please replace me with somebody else for this PR as at the moment, I'm unable to build the backend for any branch based on the 8.x branch. I've also sent you a private message in Teams. Cheers |
Added authentication check for /settings/privacy endpoint
Thank you for reviewing my PR and testing the fix! I'm glad to see that the implementation is working as expected, with the main settings endpoint properly requiring authentication while the public endpoint is accessible. Based on your feedback, I've made both suggested improvements:
Let me know if you have any other suggestions or if these changes look good to you! |
EkamBhullar
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great Job on fixing this vulnerability, I have verified, it works properly and you have made Changes requested.
|
LGTM. |
Description
This PR addresses a critical vulnerability identified in the security audit report (ref: BAC.md).
The Settings API was exposing sensitive configuration data without proper authentication, which could allow unauthorized users to access system configuration details.
Fixes # (issue)
Type of change
Please delete options that are not relevant.
Files Modified:
app/api/settings_api.rb:
app/api/api_root.rb:
Added AuthenticationHelpers.add_auth_to SettingsApi in the "Add auth details to all endpoints" section
This ensures all protected settings endpoints require proper authentication headers
API Changes:
/api/settings:/api/settings/public:/api/settings/privacy:How Has This Been Tested?
/api/settingsreturn proper 419 authentication errors/api/settingsreturn complete configuration data/api/settings/publicis accessible without authenticationSecurity Impact:
This fix prevents unauthorized users from accessing sensitive system configuration details. Previously, an attacker could determine which integrations were enabled (TurnItIn, D2L, Overseer) and potentially use this information to target specific attack vectors. The fix now ensures proper access controls are in place while still allowing the application to function normally.
Resolves security issue identified in vulnerability report BAC.md.
Checklist: