Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Match VT device paths to be blocked from mounting exactly #17104

Closed
wants to merge 1 commit into from

Commits on Jan 20, 2023

  1. Match VT device paths to be blocked from mounting exactly

    As @mheon pointed out in PR containers#17055[^1], isVirtualConsoleDevice() does
    not only matches VT device paths but also devices named like
    /dev/tty0abcd.
    This causes that non VT device paths named /dev/tty[0-9]+[A-Za-z]+ are
    not mounted into privileged container and systemd containers accidentally.
    
    This is an unlikely issue because the Linux kernel does not use device
    paths like that.
    To make it failproof and prevent issues in unlikely scenarios, change
    isVirtualConsoleDevice() to exactly match ^/dev/tty[0-9]+$ paths.
    
    Because it is not possible to match this path exactly with Glob syntax,
    the path is now checked with strings.TrimPrefix() and
    strconv.ParseUint().
    ParseUint uses a bitsize of 16, this is sufficient because the max
    number of TTY devices is 512 in Linux 6.1.5.
    (Checked via 'git grep -e '#define' --and -e 'TTY_MINORS').
    
    The commit also adds a unit-test for isVirtualConsoleDevice().
    
    Fixes: f4c81b0 ("Only prevent VTs to be mounted inside...")
    
    [^1]: containers#17055 (comment)
    
    Signed-off-by: Fabian Holler <mail@fholler.de>
    fho committed Jan 20, 2023
    Configuration menu
    Copy the full SHA
    ed0249f View commit details
    Browse the repository at this point in the history