The vulnerability is a classic timing side-channel (CWE-208) in the authentication process. An attacker can distinguish between existing and non-existing usernames by measuring the server's response time. The analysis of the patch in commit cf4c6f6acf70b569d80396d323b067c00d45c034 confirms this. The primary vulnerable function is AuthService.GetAccessToken in backend/services/auth.go. Before the patch, this function would exit quickly if a user was not found in the database. If the user was found, it would proceed to call bcrypt.CompareHashAndPassword (via IsPasswordMatch), a computationally intensive operation. This created a significant and measurable timing difference. The fix involves modifying AuthService.GetAccessToken to execute a password comparison even when the user is not found. This is achieved by calling user.IsPasswordMatch(password) in the error-handling block. The IsPasswordMatch function in backend/db/models.go was also updated to ensure it always performs a bcrypt comparison, using a pre-calculated null hash if the user has no password, making the execution time constant and closing the timing leak.