DFL-023-25: Prototype Pollution via Constructor Override

API Endpoints

Vulnerability

The POST /api/config endpoint uses a vulnerable recursive merge function that does not sanitize __proto__ keys. User sessions are stored as plain objects (not class instances). The admin check uses user.constructor.name === 'AdminUser'.

An attacker can pollute Object.prototype.constructor with {"name": "AdminUser"} via: {"__proto__": {"constructor": {"name": "AdminUser"}}}

After pollution, all plain objects will report their constructor.name as "AdminUser", bypassing the admin check on GET /api/admin/flag.