Bouncer: Static Program Analysis in Hardware
Bouncer: Static Program Analysis in Hardware
复制标题
DOI:
10.1145/3307650.3322256
复制
发表时间:
2019-06
期刊:
影响因子:
--
通讯作者:
Joseph McMahan;Michael Christensen;Kyle Dewey;B. Hardekopf;T. Sherwood
中科院分区:
文献类型:
--
作者:
Joseph McMahan;Michael Christensen;Kyle Dewey;B. Hardekopf;T. Sherwood
When discussing safety and security for embedded systems, we typically divide the world into software checks (which are either static or dynamic) or hardware checks (which are dynamic). As others have pointed out, hardware checks offer more than just efficiency. They are intrinsic to the device's functionality and thus are live from power-up; they require little to no dependency on other software functioning correctly, and due to the fact they are wired directly into the operation of the system, are difficult or impossible to bypass. We explore an experimental new embedded system that uses special-purpose hardware for static analysis that prevents all program binaries with memory errors, invalid control flow, and several other undesirable properties from ever being loaded onto the device. Static analysis often requires whole-binary-level, rather than instruction-level, examination. We show that a carefully constructed hardware state machine, using available scratch-pad memory, is capable of efficiently checking functional binaries in a streaming and verifiably non-bypassable way directly in hardware as they are loaded into the embedded program store. The resulting system is surprisingly small (taking no more than .0079 mm2), efficient (capable of checking binaries at an average throughput of around 60 cycles per instruction), and yet guarantees execution free from many of the fragile behaviors that result in security and safety concerns. We believe this is the first time any static analysis has been implemented at the hardware level and opens the door to more complex hardware-checked properties.