Skip to content

Security/fix ability rce vulnerability#1052

Open
ianabc wants to merge 5 commits intoreleasesfrom
security/fix-ability-rce-vulnerability
Open

Security/fix ability rce vulnerability#1052
ianabc wants to merge 5 commits intoreleasesfrom
security/fix-ability-rce-vulnerability

Conversation

@ianabc
Copy link
Copy Markdown
Collaborator

@ianabc ianabc commented Nov 12, 2025

Update rails and fix role ability checks

bigsnarfdude and others added 5 commits November 12, 2025 08:39
…list

Security Issue:
- The check_privilege method was directly calling constantize on
  privilege.privilege_name without validation
- This allowed potential Remote Code Execution if an attacker could
  control the privilege_name field in the database

Solution:
- Added ALLOWED_PRIVILEGES whitelist containing only valid model names
- check_privilege now validates privilege names against whitelist
- Non-whitelisted attempts are logged and rejected
- Maintains backward compatibility for legitimate privileges

Allowed Models:
Proposal, ProposalType, Location, Schedule, User, Role, Answer,
Email, Review, Subject, Participant

Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Added missing models discovered during staging testing:
- AmsSubject, DemographicData, EmailTemplate
- Faq, Feedback, Invite, Option
- PageContent, Person, ProposalField, ProposalForm
- StaffDiscussion, Survey, Validation, SubjectCategory
- SchedulesController, SubmittedProposalsController

Alphabetically sorted for maintainability.

Testing on pstaging revealed these models are used by existing
Staff role privileges. Without these in the whitelist, legitimate
admin/staff operations were being blocked.

Security remains intact: only explicit whitelisted classes can be
used in privilege definitions, preventing RCE via constantize.

Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Ian Allison <iana@pims.math.ca>
Signed-off-by: Ian Allison <iana@pims.math.ca>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants