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


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

  • Comments

    Be the first to comment!

    Similar Projects

    Test mainline kernel on an older Qualcomm SOC (msm89xx), explore current Qualcomm mainlining kernel effort by pvorel

    Project Description

    Qualcomm concentrate ...

    Separate kernel module signature to a independent file by joeyli

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

    work on sunxi a64 cpufreq driver (for teres-1, pine64) by mbrugger

    With the teres-1 [1] laptop we have a first arm...

    DRM driver for USB-based SiS graphics cards by tdz

    Back in the late 90s to early 2000s, SiS graphi...

    multipath-tools: cleaner model for path device information by mwilck

    Project Description

    Obtaining correct inf...

    Phoebe - where AI meets Linux by mvarlese

    Project Description

    Phoeβe (/ˈfiːbi/) wan...

    multipath-tools: improve CI by mwilck

    Project Description

    multipath-tools is ...

    NeoMutt: Show index and body of emails in a horizontal split by iivanov

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

    multithreaded network benchmark by mkubecek

    Project Description

    There are multiple ne...