GHSA-7pfv-hr63-h7cw
Admidio: Event participation IDOR - non-leaders can register other users for events via user_uuid parameter
Packages
| Ecosystem | Package | Affected | Fixed in |
|---|---|---|---|
| Packagist | admidio/admidio | < 5.0.6 | 5.0.6 |
Details
As written in the advisory (Markdown source, shown as plain text).
## Vulnerability
In `modules/events/events_function.php`, the event participation logic allows any user who can participate in an event to register OTHER users by manipulating the `user_uuid` GET parameter.
Line 47: `$getUserUuid = admFuncVariableIsValid($_GET, 'user_uuid', 'uuid', ...)`
Line 424: `if ($event->possibleToParticipate() || $participants->isLeader($gCurrentUserId))`
The condition uses `||` (OR), meaning if `possibleToParticipate()` returns true (event is open for participation), ANY user - not just leaders - can specify a different `user_uuid` and register/cancel participation for that user.
The code then operates on `$user->getValue('usr_id')` (the target user from user_uuid) rather than the current user.
## Impact
- Register unwilling users for events (potential harassment/spam)
- Cancel other users' event participation
- Manipulate event participant counts and comments
- If events have participation limits, fill slots with unwanted registrations
## Fix
For non-leader users, force `user_uuid` to the current user:
```php
if (!$participants->isLeader($gCurrentUserId)) {
$getUserUuid = $gCurrentUser->getValue('usr_uuid');
}
```
References
External links from the advisory. They lead to third-party sites.