Spooky Security

Eric Bailey

Written on 7 September, 2018
Tags: darwin, keyboard, security, skhd, chunkwm

Update (21 September, 2018): It turns out Keybase.app was to blame. I've since quit it and removed it from my login items, and all is well again. This skhd issue thread details some excellent debugging strategies, which I've modified slightly here.

ioreg -lw 0 \
    | perl -nle 'print $1 if /"kCGSSessionSecureInputPID"=(\d+)/' \
    | uniq \
    | xargs ps -o comm= -p

For example, when I enable secure keyboard entry in Terminal.app, I see the following output.

/Applications/Utilities/Terminal.app/Contents/MacOS/Terminal

I've been using chunkwm and skhd to help make Darwin more palatable, but skhd suddenly stopped working. When I try to start it manually, I get the following error.

skhd: secure keyboard entry is enabled! abort..

The internet suggested I disable iTerm 2's Secure Keyboard Entry, but I've switched to kitty.

After some further frantic DuckDuckGo-ing, I came across a function, DisableSecureEventInput, which seemed like the answer, so I wrote a quick program to call it and try to end my troubles.

#include <Carbon/Carbon.h>


int main(int argc, const char *argv[])
{
    if (IsSecureEventInputEnabled())
        printf("Secure keyboard entry is enabled.\n");

    DisableSecureEventInput();

    if (IsSecureEventInputEnabled())
        printf("Secure keyboard entry is still enabled.\n");


    return 0;
}
Secure keyboard entry is enabled.
Secure keyboard entry is still enabled.

No such luck. I'm literally dying.