[Bug 1927078] Re: Don't allow useradd to use fully numeric names
Steve Langasek
1927078 at bugs.launchpad.net
Wed Jun 16 21:15:32 UTC 2021
> I think our preference would be to disallow leading numeric digits
> entirely so that for example, 0x0 and 0o0 would be blocked as well,
> to try to prevent both user and programmatic confusion.
Disallowing leading numeric digits entirely would, unfortunately,
disable a significant class of valid usernames in conflict with
historical usage.
The main motivation in fixing this is that allowing fully-numeric
usernames means there is ambiguity in contexts that can reference both
uids and usernames and do not have strong typing. Aside from systemd,
this is mostly about shells and invocations of various commandline
tools; and neither bash nor the tools appear to interpret 0o0 or 0x0 as
numbers:
$ id 0o0
id: ‘0o0’: no such user
$ id 0x0
id: ‘0x0’: no such user
$ getent passwd 0x0
$ getent passwd 0o0
Let's please focus on the known problem case of all-numeric usernames.
If there are other confirmed security issues with octal/hex
representations of numbers, then we should also close those, but it
needs a more precise fix than disabling leading digits.
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to shadow in Ubuntu.
https://bugs.launchpad.net/bugs/1927078
Title:
Don't allow useradd to use fully numeric names
Status in shadow package in Ubuntu:
New
Status in shadow source package in Focal:
New
Status in shadow source package in Groovy:
New
Status in shadow source package in Hirsute:
New
Status in shadow source package in Impish:
New
Bug description:
[Description]
Fully numeric names support in Ubuntu is inconsistent in Focal onwards
because systemd does not like them[1] but are still allowed by default
by useradd, leaving the session behavior in hands of the running
applications. Two examples:
1. After creating a user named "0", the user can log in via ssh or
console but loginctl won't create a session for it:
root at focal:/home/ubuntu# useradd -m 0
root at focal:/home/ubuntu# id 0
uid=1005(0) gid=1005(0) groups=1005(0)
..
0 at 192.168.122.6's password:
Welcome to Ubuntu 20.04.2 LTS (GNU/Linux 5.8.0-48-generic x86_64)
Last login: Thu Apr 8 16:17:06 2021 from 192.168.122.1
$ loginctl
No sessions.
$ w
16:20:09 up 4 min, 1 user, load average: 0.03, 0.14, 0.08
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
0 pts/0 192.168.122.1 16:17 0.00s 0.00s 0.00s w
And pam-systemd shows the following message:
Apr 08 16:17:06 focal sshd[1584]: pam_unix(sshd:session): session opened for user 0 by (uid=0)
Apr 08 16:17:06 focal sshd[1584]: pam_systemd(sshd:session): pam-systemd initializing
Apr 08 16:17:06 focal sshd[1584]: pam_systemd(sshd:session): Failed to get user record: Invalid argument
2. With that same username, every successful authentication in gdm will loop back to gdm again instead of starting gnome, making the user unable to login.
Making useradd fail (unless --badnames is set) when a fully numeric name is used will make the default OS behavior consistent.
[Other info]
- Upstream does not support fully numeric usernames
- useradd has a --badnames parameter that would still allow the use of these type of names
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/shadow/+bug/1927078/+subscriptions
More information about the foundations-bugs
mailing list