2 ms·
>"At its core, USBFuzz uses a software-emulated USB device to provide random device data to drivers (when they perform IO operations)," the researchers said."
by peter_d_sherman 6y ago
>"At its core, USBFuzz uses a software-emulated USB device to provide random device data to drivers (when they perform IO operations)," the researchers said."
The key to sniffing out all of these "bugs" (AKA, "security concerns") is to be able to emulate, emulate, emulate, everything as plug-in modules -- even down to hardware itself.
Virtual machine software does this -- but bugs (AKA, "security concerns") have been found in Virtual Machines too, so a "welded together at the seams" Virtual Machine is not the answer -- but rather, a modular, plug-and-play, open interface one is -- where the data moving into and out of interfaces can be monitored, logged, recorded, played back, analyzed, and modified easily to implment a test condition or conditions, as need be.
A software emulated USB device -- is a good step towards this vision.
It's sort of like if we rebuilt a virtual machine from the ground up, starting with the CPU emulation, and then said, OK, do I want to emulate this piece of hardware in the virtual machine software itself, or do I want to proxy it out, maybe via a serial path, ethernet/socket/ tcp/ip connection, or shared memory proxy to another plug-and-playable (and separately testable) module...
I think we need to rethink virtual machines as they exist today. Coding an interface in C for an existing virtual machine and saying that the job is done is not enough; virtual machines must become vastly more modular/proxyable than they are today. The bus of such a machine must become virtual and proxyable as well, such that 3rd party software, modular plug-ins, could observe it in realtime, as should memory, emulated VGA card, etc... any point there's a connection to hardware, real or virtual is a proxy point that must be modular and auditable by 3rd party plug-in programs...
THAT's how you write the virtual machines/systems of the future.
Which also become the debugging systems of the future...
In fact, such a "modular virtual machine" -- could be used by AI driven software to run unit tests, but run them with different combinations of VGA cards, emulated CPU's, emulated BIOS'ses, buses, controller chips, what-have-you...
Oh... and there should be a way to interface the VM with actual hardware chips... in other words, I have a hardware chip that is in question... emulate the entire rest of the system, but proxy a physical connection to that chip on a breakout board... etc.
- sitkack 6y agoAnd the underlying hardware should be designed to virtualize its PCIe registers, many accelerators do this, but it should be transparent to both plumb the virtualized register sets into a guest but also interpose those register sets to build a dynamic out of band firewall to same said hardware.
- jfkebwjsbx 6y agoSuch a system wouldn’t be a VM but an emulator. They already exist and are routinely used. There are also specialized low level emulators, too, and even logic analyzers at the electronics level. But all that does not really help fuzz a kernel quickly, which is much better done with a normal VM plus an emulated device, as the researchers did.