Samanta Navarro 8fc8de382a login_prompt: Do not parse environment variables
Parsing optional environment variables after a login name is a feature
which is neither documented nor available in util-linux or busybox
login which are other wide spread login utilities used in Linux
distributions as reference.

Removing this feature resolves two issues:

- A memory leak exists if variables without an equal sign are used,
  because set_env creates copies on its own. This could lead to OOM
  situations in privileged part of login or may lead to heap spraying.
- Environment variables are not reset between login attempts. This
  could lead to additional environment variables set for a user who
  never intended to do so.

Proof of Concept on a system with shadow login without PAM and
util-linux agetty:

1. Provoke an invalid login, e.g. user `noone` and password `invalid`.
   This starts shadow login and subsequent inputs are passed through
   the function login_prompt.
2. Provoke an invalid login with environment variables, e.g.
   user `noone HISTFILE=/tmp/owo` and password `invalid`.
3. Log in correctly with user `root`.

Now you can see with `echo $HISTFILE` that `/tmp/owo` has been set for
the root user.

This requires a malicious failed login attempt and a successful login
within the configured login timeout (default 60 seconds).

Signed-off-by: Samanta Navarro <ferivoz@riseup.net>
2023-05-03 07:54:28 -05:00
..
2023-02-23 20:28:43 -06:00
2023-02-23 20:28:43 -06:00
2023-03-27 10:10:37 -05:00
2023-02-16 13:23:08 -06:00
2023-02-23 20:28:43 -06:00
2023-03-28 13:00:38 +02:00
2023-02-23 20:28:43 -06:00
2023-02-23 20:28:43 -06:00
2023-02-23 20:28:43 -06:00
2023-03-20 08:47:52 +01:00
2023-02-23 20:28:43 -06:00
2023-02-23 20:28:43 -06:00
2023-02-23 20:28:43 -06:00
2023-02-23 20:28:43 -06:00
2023-02-16 11:29:33 +01:00
2023-02-23 20:28:43 -06:00
2023-02-23 20:28:43 -06:00
2023-02-23 20:28:43 -06:00
2023-02-16 11:29:33 +01:00
2023-02-16 11:29:33 +01:00
2023-02-09 10:03:03 -06:00
2023-02-16 13:23:08 -06:00
2023-03-28 13:00:38 +02:00
2023-02-16 13:23:08 -06:00
2023-02-16 13:23:08 -06:00
2023-02-16 13:23:08 -06:00
2023-02-16 13:23:08 -06:00
2023-02-23 20:28:43 -06:00
2023-04-28 11:22:48 -05:00