From 287c6228b54488fb2dd225cd1ad20df95f502c1b Mon Sep 17 00:00:00 2001 From: Peter Elliott Date: Tue, 26 Apr 2022 19:58:54 -0600 Subject: [PATCH] LoginServer: Change login fail message to avoid enumeration attacks The current message distinguishes between a user that doesn't exist, and an invalid password. This is considered to be bad practice, because an attack can first check if a user exists before guessing that users password. Also it's just tradition or something. --- Userland/Services/LoginServer/LoginWindow.gml | 2 -- Userland/Services/LoginServer/main.cpp | 6 ++++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Userland/Services/LoginServer/LoginWindow.gml b/Userland/Services/LoginServer/LoginWindow.gml index 100329ffdc..a1d2749596 100644 --- a/Userland/Services/LoginServer/LoginWindow.gml +++ b/Userland/Services/LoginServer/LoginWindow.gml @@ -30,8 +30,6 @@ text_alignment: "CenterLeft" } - @GUI::Widget {} - @GUI::Button { name: "log_in" text: "Log in" diff --git a/Userland/Services/LoginServer/main.cpp b/Userland/Services/LoginServer/main.cpp index 77fc8fbad4..327c584fa1 100644 --- a/Userland/Services/LoginServer/main.cpp +++ b/Userland/Services/LoginServer/main.cpp @@ -72,15 +72,17 @@ ErrorOr serenity_main(Main::Arguments arguments) window->set_password(""); + auto fail_message = "Can't log in: invalid username or password."; + auto account = Core::Account::from_name(username.characters()); if (account.is_error()) { - window->set_fail_message(String::formatted("Can't log in: {}.", account.error())); + window->set_fail_message(fail_message); dbgln("failed graphical login for user {}: {}", username, account.error()); return; } if (!account.value().authenticate(password)) { - window->set_fail_message("Can't log in: invalid password."); + window->set_fail_message(fail_message); dbgln("failed graphical login for user {}: invalid password", username); return; }