Bug 2521819 (CVE-2026-78360) - CVE-2026-78360 anitya: anitya: missing authorization check in delete_user allows any authenticated user to delete arbitrary users
Summary: CVE-2026-78360 anitya: anitya: missing authorization check in delete_user all...
Keywords:
Status: NEW
Alias: CVE-2026-78360
Product: Security Response
Classification: Other
Component: vulnerability
Version: unspecified
Hardware: All
OS: Linux
high
high
Target Milestone: ---
Assignee: Product Security
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2026-08-24 11:34 UTC by OSIDB Bzimport
Modified: 2026-08-25 14:07 UTC (History)
1 user (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed:
Embargoed:


Attachments (Terms of Use)

Description OSIDB Bzimport 2026-08-24 11:34:02 UTC
A missing authorization flaw was found in fedora-infra/anitya. The delete_user() function in anitya/admin.py (around line 671) is decorated with @login_required but lacks the is_admin() authorization check that is present on every other administrative route in the same module (12+ sibling functions). This allows any authenticated user to delete arbitrary user records, including administrator accounts, by sending requests to /users/<user_id>/delete. The route accepts both GET and POST methods. CSRF is not a barrier: an authenticated attacker can obtain a valid token from the GET confirmation page, then POST confirm=true to commit db.session.delete(user).

Dynamic reproduction (local Flask test client, SQLite, Anitya 2.2.2): a non-admin user (attacker, admin=False) received HTTP 200 on GET /users/<victim_id>/delete and successfully deleted an admin victim. After the POST, the victim row was gone from the database. A control request to GET /distro/TestDistro/delete as the same non-admin correctly returned 401 because that sibling route has is_admin().

The vulnerability exists in version 2.2.2 and appears to have been introduced when the route was first added. No upstream fix is available yet.

Reporter: Arpit Jain (independent security researcher, GitHub: arpitjain099)
PSIRT ticket: PSIRTSUPT-21968


Note You need to log in before you can comment on or make changes to this bug.