SAFECode: A Platform for Developing Reliable Software in Unsafe Languages

Subscribers:
344,000
Published on ● Video Link: https://www.youtube.com/watch?v=Sn2W1l-T6vY



Duration: 1:17:19
29 views
0


A vast majority of current software is written in weakly typed languages such as C and C++. These unsafe languages provide very weak semantic guarantees due to the possibility of undetected memory errors such as dangling pointer references, array bounds overflow and arbitrary casting between types. This failing has two major implications. The first, which has been studied previously, is that systems written in these languages are vulnerable to security attacks. The second, which is perhaps more important in the context of developing reliable software, is that most software analysis and verification tools assume the absence of memory errors and so cannot provide any guarantees on software written in these languages. In this talk, I'll describe a compiler and runtime system called SAFECode, which enables development of reliable software in unsafe languages. SAFECode operates in two different modes with varying levels of guarantees and run-time overheads. In the first mode, SAFECode detects (nearly) all memory errors including dangling pointer dereferences at run-time. In this talk, I'll present two novel techniques that SAFECode uses to detect array bounds violations and dangling pointer dereferences. Both techniques are backwards-compatible, fully automatic and require no source changes. Experiments show that the bounds checking technique has low overhead than previous techniques and is applicable to most C programs. The dangling pointer detection technique, however, has low overheads only when the frequency of heap allocation/deallocation is not high (regardless of the memory access frequency). In the second mode, SAFECode can guarantee memory safety and sound alias analysis for nearly arbitrary C programs without actually detecting dangling pointer dereferences (while retaining explicit memory deallocation). Experiments show that this approach has even lesser overhead than previous techniques. We formalize this approach using a type system, define operational semantics, and prove that the approach is sound for a subset of C. I'll present the main insights behind this approach and briefly discuss our formalism. I'll then show that our semantics provide a foundation for other software verification tools to be applied to C programs with a guarantee of soundness.




Other Videos By Microsoft Research


2016-09-06Efficient Data Dissemination in Bandwidth-Asymmetric P2P Networks
2016-09-06Tractable Learning of Structured Prediction Models
2016-09-06Future Hype: The Myths of Technology Change
2016-09-06Improving Packet Delivery Efficiency Using Multi-Radio Diversity in Wireless LANs
2016-09-06Algorithmic Foundations of P2P and Wireless Networks
2016-09-06Semi-unsupervised learning of taxonomic and non-taxonomic relationships from the web
2016-09-06The Weather Makers: How Man is Changing the Climate and What it Means for Life on Earth
2016-09-06Touched with Light: Scanned beams display or capture information at video rates
2016-09-06Internet Background Radiation
2016-09-06Understanding and Improving Wireless Networks
2016-09-06SAFECode: A Platform for Developing Reliable Software in Unsafe Languages
2016-09-06Enabling Internet Malware Investigation and Defense Using Virtualization
2016-09-06Cohomology in Grothendieck Topologies and Lower Bounds in Boolean Complexity
2016-09-06Approximate inference techniques for optimal design in self-assembly and automated programming
2016-09-06Machine Learning Methods for Structured and Collective Classification
2016-09-06Communication Technology: Interruption and Overload
2016-09-06ParaEval: Using Paraphrases to Improve Machine Translation and Summarization Evaluations
2016-09-06Rethinking Processor and System Architecture
2016-09-06Crashing the Gate: Netroots, Grassroots, and the Rise of People-Powered Politics
2016-09-06Improving Routing Scalability through Mobile Geographic Hashing in MANETs
2016-09-06The Semantic Web: Myth and Reality



Tags:
microsoft research