This idea was inspired by the recent discussion on the "talk" mailing list about the (in)security of the German ID card. The Chaos Computer Club and other researchers claim that the ID card is insecure. Actual attacks that have been demonstrated are based on keyloggers.

Keyloggers might be the biggest security threat for Linux users at this time. Keyloggers are trivial to write for Linux and readily installable, and a keylogger with normal user rights may read root's password. One might ask "Why are we caring about local root exploits at all as long as users run stuff like sudo in X terminals"? Keyloggers can even read the input from devices like the Yubikey.

Various techniques exist. The simplest way is just to read xinput events. More sophistcated attacks (usually requiring root) would read from /dev/input or ttys.

My idea is to explore possibilities for a "secure" keyboard mode. This is all totally crude, not thought-through brainstorm material. I'm thinking of an ioctl that would put an input device in a special mode in which events would be forwarded only to a single process (the process that made the ioctl). Care would need to be taken that this functionality couldn't be abused for locking the input device completely. The ability to use this ioctl could be bound to capabilities and/or further restricted e.g. by SELinux, so that not even root would be able to spy on keyboard input easily.

This "secure" mode would than be available for critical operations such as reading pass phrases. In a second step, we might consider doing the password hashing in the kernel, so that user space would never need to read the clear text password at all; I'm not sure what problems with keyboard mapping we'd encounter in such a setup though.

I'd like to understand if this is total bogus, and if not, discuss implementation steps and perhaps create a PoC.

Looking for hackers with the skills:

kernel c

This project is part of:

Hack Week 15

Activity

  • over 5 years ago: slahl liked this project.
  • over 5 years ago: hennevogel liked this project.
  • over 5 years ago: mwilck added keyword "kernel" to this project.
  • over 5 years ago: mwilck added keyword "c" to this project.
  • over 5 years ago: mwilck liked this project.
  • over 5 years ago: mwilck originated this project.

  • Comments

    Be the first to comment!

    Similar Projects

    Poking technologies for enrolling customer key to kernel trusted keyring by joeyli

    [comment]: # (Please use the project descriptio...


    early stage kdump support by mbrugger

    [comment]: # (Please use the project descriptio...


    Create a DRM driver for Matrox desktop cards by tdz

    (was: Create a DRM driver for Matrox G200)

    E...


    Rust in linux kernel by dsterba

    [comment]: # (Please use the project descriptio...


    Model checking the BPF verifier by shunghsiyu

    Project Description

    BPF verifier plays a ...


    Use ESP-01S as WiFi to UART bridge by iivanov

    Project Description

    Currently with just ...


    Add GObject based introspectable API to libzypp by zbenjamin

    [comment]: # (Please use the project descriptio...