The vulnerability is a user enumeration issue in the password reset functionality of NocoDB. The endpoint POST /api/v2/auth/password/forgot would return different responses depending on whether the email address provided was registered or not, allowing an attacker to build a list of valid user emails.
My analysis began by comparing the vulnerable version 0.301.2 with the patched version 0.301.3. Within the commits between these two tags, I identified the security fix in commit 7d9ba8ccbfc49e2a01b756e9e3988510240d881e, which has the descriptive message: fix(security): return uniform response on password forgot to prevent user enumeration (GHSA-387m).
The patch for this commit modifies the packages/nocodb/src/services/users/users.service.ts file. Specifically, it removes the else block that returned the error message 'Your email has not been registered.'. This change ensures that the endpoint returns a uniform response regardless of whether the user's email exists in the system, thus mitigating the user enumeration vulnerability.
Based on the API endpoint and the context of the fix within the UsersService class, the vulnerable function is identified as UsersService.passwordForgot. During an exploit attempt, this function would be present in runtime profiles and stack traces when a request is made to the password reset endpoint with an unregistered email.