4,244 research outputs found
Machine Assisted Proof of ARMv7 Instruction Level Isolation Properties
In this paper, we formally verify security properties of the ARMv7 Instruction Set Architecture (ISA) for user mode executions.
To obtain guarantees that arbitrary (and unknown) user processes are able to run isolated from privileged software and other user processes, instruction level noninterference and integrity properties are provided, along with proofs that transitions to privileged modes can only occur in a controlled manner.
This work establishes a main requirement for operating system and hypervisor verification, as demonstrated for the PROSPER separation kernel. The proof is performed in the HOL4 theorem prover, taking the Cambridge model of ARM as basis.
To this end, a proof tool has been developed, which assists the verification of relational state predicates semi-automatically
Fast and Precise Symbolic Analysis of Concurrency Bugs in Device Drivers
© 2015 IEEE.Concurrency errors, such as data races, make device drivers notoriously hard to develop and debug without automated tool support. We present Whoop, a new automated approach that statically analyzes drivers for data races. Whoop is empowered by symbolic pairwise lockset analysis, a novel analysis that can soundly detect all potential races in a driver. Our analysis avoids reasoning about thread interleavings and thus scales well. Exploiting the race-freedom guarantees provided by Whoop, we achieve a sound partial-order reduction that significantly accelerates Corral, an industrial-strength bug-finder for concurrent programs. Using the combination of Whoop and Corral, we analyzed 16 drivers from the Linux 4.0 kernel, achieving 1.5 - 20× speedups over standalone Corral
High-level Proofs about Low-level Programs
Functional verification of low-level code requires
abstractions over the memory model to be effective, since
the number of side-conditions induced by byte-addressed
memory is prohibitive even with modern automated reasoners.
We propose a flexible solution to this challenge: assertions
contain explicit memory layouts which carry the necessary
side-conditions as invariants. The memory-related proof
obligations arising during verification can then be solved
using specialized automatic proof procedures. The remaining
verification conditions about the content of data structures
directly reflect a developer's understanding.
The development is formalized in Isabelle/HOL
What Java Developers Know About Compatibility, And Why This Matters
Real-world programs are neither monolithic nor static -- they are constructed
using platform and third party libraries, and both programs and libraries
continuously evolve in response to change pressure. In case of the Java
language, rules defined in the Java Language and Java Virtual Machine
Specifications define when library evolution is safe. These rules distinguish
between three types of compatibility - binary, source and behavioural. We claim
that some of these rules are counter intuitive and not well-understood by many
developers. We present the results of a survey where we quizzed developers
about their understanding of the various types of compatibility. 414 developers
responded to our survey. We find that while most programmers are familiar with
the rules of source compatibility, they generally lack knowledge about the
rules of binary and behavioural compatibility. This can be problematic when
organisations switch from integration builds to technologies that require
dynamic linking, such as OSGi. We have assessed the gravity of the problem by
studying how often linkage-related problems are referenced in issue tracking
systems, and find that they are common
Poly Drop
Poly Drop is a software interface to control an Open Drop digital micro-fluidics system. We obtained a hardware system from Gaudi labs. Our task was to create a Graphical User Interface that made the control of the device easier and more automated for better testing. We created software that had 3 parts: a control GUI, arduino code to control the hardware, and Image Analysis that gives the user information such as location and color of liquid drops as they move across the electrode grid of the Open Drop system. The GUI was developed using Java Swing. The communication between the GUI and the arduino was accomplished using the open source RXTX library. The image analysis portion was created using the open source OpenCV software
- …