Control: severity -1 serious Control: retitle -1 problems with filtering/sanitizing input without libperl5.40 thanks
Justification: affects the installer On Sun, Mar 30, 2025 at 09:21:32AM +0200, Marc Haber wrote: > We should test that adduser does the right things when weird characters > are given in the comment field. This has turned out to be a major issue, affecting the installer. The issue is that adduserm in the installer, runs with a rather minimal version of perl. For example, libperl is not installed there. The adduser code already has a number of places where it runs with less functionality if certain libraries are not found at run time. Without libperl, regular expression processing seems to be rather limited. Especially, Unicode character classes like \p{L} don't seem to properly work, so it is hard to sanitize input that goes beyond US-ASCII. This is especially annoying with the comment field, where the real name of a new user is entered, and such, Thœmaß O'Málley can't have their real name entered in the installer. To make things worse, it is possible to install with an UTF-8 locale without libperl, so that the perl code sees UTF-8 characters as two characters, making it even impossible to match on \x{a0}-\x{ff} (the ISO-8859 range where international characters are placed). Short of implementing my own UTF-8 parser, there is no easy way to handle this. Thankfully, adduser doesn't really do anything with the comment short of handing it down to chfn. Therefore, a possible solution is to leave the comment from the command line tainted as it was read, and just remove the taint without doing any sanitation right before the call to the low-level tool (which will be changed to usermod -c in the process). The system() call is constructed with the command line already separated into an array and therefore usermod is called without a shell. Thus, adduser doesn't need to worry about weird characters here and leaves the pain to usermod (which is a compiled binary and thus is in a much better position to do safety checks in the installer). Greetings Marc