| Title | Mettle sendportal v3.0.1 Improper Access Controls |
|---|
| Description | The destroy() method in WorkspaceInvitationsController allows any workspace owner to delete invitations belonging to any other workspace (IDOR - CWE-639).
Vulnerability Details
File: app/Http/Controllers/Workspaces/WorkspaceInvitationsController.php, lines 42-47
public function destroy(Invitation $invitation): RedirectResponse
{
$invitation->delete(); // No workspace ownership check
return redirect()->route('users.index');
}
The route group at routes/web.php line 59 applies OwnsCurrentWorkspace::class middleware, which verifies the user owns their current workspace — but does NOT verify the {invitation} parameter belongs to that workspace. Laravel route model binding resolves ANY invitation by ID. |
|---|
| Source | ⚠️ https://github.com/mettle/sendportal/issues/337 |
|---|
| User | B1scuit (UID 97177) |
|---|
| Submission | 05/08/2026 07:52 (3 months ago) |
|---|
| Moderation | 05/31/2026 10:14 (23 days later) |
|---|
| Status | Duplicate |
|---|
| VulDB entry | 359744 [mettle sendportal up to 3.0.1 Invitation WorkspaceInvitationsController.php destroy invitation authorization] |
|---|
| Points | 0 |
|---|