Expected Findings
- Filter is built with `(uid=` + user input + `)` and no escaping.
- `*)(uid=*` matches every user.
- Login endpoint uses the same code path with the same flaw.
The directory search builds the LDAP filter by string concatenation, so attacker-controlled parentheses turn user lookup into a wildcard.
CWE-90
filter = "(uid=" + req.uid + ")"