Dell Adding Hardware Privacy Driver for Linux
phoronix.com
phoronix.com
Why not just wire the LEDs up to the same power line that goes to the camera?
Basically any modern laptop with a build-in webcam has a hardware controlled LED, not software controlled.
Besides, the vast majority of users will not be under active attack. Having an on-screen popup when you try to use the webcam telling you that it has been hardware-disabled is quite a must-have. If you don't have something like this, you'll get a lot of support calls which boil down to "you accidentally pressed the kill switch, press it again to re-enable".
For example, when you are "required" [1] to run surveillance software on your computer.
[1] https://www.vice.com/en/article/n7wxvd/students-are-rebellin...
How well would tape work on that?
Yep. This was an extremely common issue in the mid-2000s, when laptops started integrating wireless hardware with hard power switches, often on the side of the laptop where they could easily be toggled by accident.
What exactly do you expect that to accomplish. Anyone actively targeting you getting literally NO SOUND OR VIDEO is going to know that you've flipped the switch just the same.
Even the quietest apartment has HVAC that will be picked up. If they're recording for hours they're going to hear people walking by. The camera itself will still provide an image, even if it's black, that looks different than no signal at all.
If a nation state is able to get to your laptop they're going to figure out pretty quickly that you're "feeding something pre-recorded" into the mic and camera every time you have a meeting. Ignoring the insane effort you'd have to put out to feed that in and make it even semi-believable. For starters they are presumably tracking who you're meeting with - are you going to have a meeting before your meeting to pre-record? Hope they don't figure out that you're saying the exact same thing in two different meetings? Somehow have root on your laptop but aren't bright enough to figure out you're feeding data from a local file into your mic and camera?
If you have a spy device connected to your computer or have malware running, you are very screwed in a million different ways already. Limiting knowledge of hardware state to malware doesn't buy you much.
And the spy device/software knowing the user has "switched off the means" vs "they are broken" is important because?
It's basically a false sense of security which is generally worse than doing nothing.
Detecting the pattern in a prng stream is equivalent to finding its Kolmogorov complexity. https://en.m.wikipedia.org/wiki/Kolmogorov_complexity#Chaiti...
This assumes an attacker is targeting you specifically since otherwise this is all moot (a broad attack could care less as to why your microphone is off).
Really, though, in general there's just no point to this altogether; just cutting power/data to the mic is fine. There's no need to attempt to fool someone with fake audio, outside of some very edge-case scenarios that I'm sure Dell (rightly) does not care about.
It's just difficult enough to not bother considering the market doesn't care.
Webcams are typically USB 2.0 devices using generic drivers from the operating system or manufacturer. It's easy from a hardware and software perspective to send a command to the webcam to disable itself and turn off its LED. If you want to completely cut power then you need to add power switching circuitry.
You could use one of your CPU's limited GPIO pins to control the switching but now you probably need a smart power switch (~$0.30, which is significant) since the low voltage (1.2V?) GPIO can't handle switching a regular mosfet gate. GPIO writes are usually easy (just write to a memory address), but you'd still need to modify the vendor driver to do this and then distribute the driver.
Motherboards typically have embedded controllers which have GPIO - on desktops there is a SuperIO chip, I believe laptops typically use a regular microcontroller. Now you have some 3.3V GPIOs that can handle gate switching so you can use a regular MOSFET (~$0.10). You still need to modify and distribute the webcam driver, and now it might have to communicate with another driver which is handling the embedded controller.
Now you have to deal with the webcam disconnecting and reconnecting as you switch power to it. You want the device to always be present even if it's not enumerating on the USB bus, so you can select the webcam in zoom and turn it on and so you're not constantly playing the hardware connect/disconnect sound - even more driver changes. Maybe the webcam takes significantly longer to turn on now because it has to boot and enumerate.
That was all somewhat informed speculation, but I think it illustrates how a seemingly simple thing gets complicated. The electronics industry could easily solve these issues if there was motivation, but there just isn't.
Edit: Well, I'm posting this on an article talking about a vendor which is doing the work to make this happen. I guess I should say there's just enough motivation to eventually get around to solving this problem in a mature market.
You'll need a special firmware for the cam (like apple device), need to ensure integrity of the said firmware and also need a customized driver which needs maintenance work.
I have an old Logitech Pro 9000 camera with a lot of bells and whistles but, when I found out that its light can be managed by the driver and the UVC client in Linux AND it can turned off while it's recording, I've never kept it connected longer than it should be.
So yes, custom and secure hardware is hard.
The market does care.
People want: hardware kill switches.
They want to cut their camera. (I've seen tape many times)
They want to mute their microphone for real.
Even non-nefarious "on-screen" mute buttons are subject to abuse.
For instance, in webex the conference host can unmute one or all of other people's mute buttons remotely. (To be clear there is a use case for this)
I wonder how many apps are listening even while mute is on. I would expect many of them.
and then there are exploits, which are lower probability but can do much more damage.
Or because once the light is on, it's too late?
Or because I don't want to risk missing the light being on, just because the computer is on but I m not behind it?
Kill switches should be mechanical and should physically disconnect the device from the system. Kill switches and lights that are controllable by software will be exploited.
My lenovo laptop has basically a builtin webcam cover, and I absolutely love it.
I'm not too familiar with the kernel interface for LEDs, but as far as I can understand stubs are added to read back the LED status, but not so much setting it.
Phoronix's description of 'manipulating the relevant LEDs' seems to be misleading.
[0] https://lore.kernel.org/lkml/20201103125542.8572-1-Perry_Yua...
It's just reading the ACPI status bits to update the current state. It doesn't set anything.
static int micmute_led_set(struct led_classdev *led_cdev,
enum led_brightness brightness)
{
acpi_status status;
status = acpi_evaluate_object(NULL, ACPI_PRIVACY_EC_ACK, NULL, NULL);
if (ACPI_FAILURE(status)) {
dev_err(led_cdev->dev, "Error setting privacy audio EC ack value: %d\n",status);
return -EIO;
}
return 0;
}https://lore.kernel.org/lkml/20201104014915.45tbmnrqvccbrd2k...
Might be copy/paste from another driver or they will implement it later.
From https://lkml.org/lkml/2020/11/3/904:
> I don't think it came through in the commit message, but I wanted to mention in the system that prompted this software does not control the LED. The LED is actually controlled by hardware, but has circuitry to delay the hardware mute until software mute is complete to avoid any "popping noises".
That's followed by someone asking about a timeout in case software mute never happens (so that hardware mute still does), and the same person confirms there is a timeout.
By hardware I would presume they mean a system/keyboard controller - one that can monitor events, delay and toggle privacy mode. A controller that likely has updateable firmware and could be compromised via SW given sufficient effort (TLA, Dell, &c).
The privacy mode might be unsubvertible via SW, but I wouldn't take their word for it.
Would be nice if they would release signed, flashable firmware images for remediating compromise.
I also have a dell monitor - I downloaded all the pdf manuals including one that said:
"Statement of Volatility – Dell U3219Q Monitor
The purpose of this document is to certify that the Dell
U3219Q monitor will not save, retain, or reproduce a signal
to any internal or external component after power has been
removed and reapplied to the unit.
The Dell U3219Q monitor contains both volatile and
non-volatile (NV) memory ICs. Volatile memory(s) lose their
data immediately upon removal of power. Non-volatile memory
ICs continue to retain their data even after the power has
been removed. However, no input video data is written into
these memory ICs during operation.
List below contains volatile and non volatile memory ICs
used in the Dell U3219Q monitor."
Then it had a table for each storage chip within the monitor
with its purpose and characteristics including: - system eeprom
- hdmi edid eeprom
- system flash rom
- usb hub eeprom
- pd controller flash romPS: very happy with Dell’s Linux support for XPS laptops (still getting Linux specific Bios updates long after purchase).
This is just something that's never crossed my mind until glancing at this article and thinking back to Microsoft adding all of their Hyper-V/DX12 stuff.
Except the kernel puts the suburban garage to shame.
My kernel config shows:
CONFIG_HAMRADIO=y
CONFIG_BAYCOM_SER_FDX=m (from AX.25 network device drivers)
CONFIG_CAN_SJA1000=m (from CAN device drivers)
CONFIG_NFC_MRVL=m (from Near Field Communication (NFC) devices)
after a while I just scroll faster and faster zooming past: CONFIG_VMWARE_BALLOON=m
CONFIG_HABANA_AI=m
CONFIG_MACINTOSH_DRIVERS=y
CONFIG_HAPPYMEAL=m
...and loadable module support for 4 heart rate monitors, 18 inertial measurement units and 18 magnetometer sensors. Even 2 VME bridge drivers.There are 11,018 lines of this.
=y means it's compiled into the kernel
=m means it's a loadable module (but still takes up some kernel memory and more on disk as a .ko)
Loadable modules are not present in memory, in any form, until they are loaded. Building them has no impact on kernel memory usage.
(Consider that it's possible to build the kernel with all the modules set to "n", then switch the modules to "m" and build them afterwards. The resulting kernel is identical, save for having a slightly different embedded .config.)
For some reason I thought there was a stub but maybe modprobe is smart and keeps things tidy.
And the reason is that distributions usually build in support for a large amount of diverse hardware. These are modules (=m) where possible.
The motivation for this is: when you have that heart rate monitor, intertial measurement unit, magnetometer or something else, you just plug it in, the module gets loaded and the device just works.
Some things have to be =y and are unable to support =m.
To tidy up the garage, build a custom kernel and be loose with the use of =n.
For the latest 5.4.z kernel release, the full source tarball, xz-compressed, is 105 MB.
The fairly full-featured ubuntu build is smaller:
Package: linux-image-5.4.0-52-generic
Installed-Size: 11.7 MB
Download-Size: 8887 kB
Package: linux-modules-5.4.0-52-generic
Installed-Size: 73.3 MB
Download-Size: 14.5 MB
Now compare to, say, the smallest Windows container image you can find, or AMD or NVidia graphics driver installers ...But the kill switch itself is physical.
https://grahamcluley.com/webcam-spying-without-turning-led-r...
Of course, you can always disassemble the laptop and unplug the webcam and microphone from the motherboard.
https://www.cnet.com/news/lenovo-thinkpad-laptops-now-let-yo...
This is incorrectly designed: the LEDs must be hardware-driven, not software driven. Otherwise malicious software could turn off the LED when the camera and microphone are running.
It's right in the line you quoted.
What I mean is that a user could leave the hardware switches in the microphone- or camera-on positions, but malicious software could turn off the LEDs, so that the user would think he had privacy but in fact did not.