<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style style="display: none;" type="text/css"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr"><div><div style="font-family: Calibri,sans-serif; font-size: 11pt;">> I am Zhengyang, a M.S. candidate at Beijing University of Posts and Telecomunications working in the area of static program analysis. My CV can be found in [2]. Most of my works are based on Clang Static Analyzer.  I have contributed to Static Analysis Suite (SAS) from CERN PH-SFT as Google Summer of Code 2015 project. About the preparation for this proposal, I have studied several research papers of compiler time transform and runtime program hardening techniques. I am interested in working with LLVM community, and hoping to contribute to this summer with LLVM. <br><br>You sound super cool :)<br><br>I'm curious, what kind of static analysis stuff are you into?<br><br>Also: Can you give examples of the kinds of bugs you're looking for? I'd like to make sure were not duplicating effort.<br><br>sent from my (stupid) windows phone</div></div><div dir="ltr"><hr><span style="font-family: Calibri,sans-serif; font-size: 11pt; font-weight: bold;">From: </span><span style="font-family: Calibri,sans-serif; font-size: 11pt;"><a href="mailto:llvm-dev@lists.llvm.org">Zhengyang Liu via llvm-dev</a></span><br><span style="font-family: Calibri,sans-serif; font-size: 11pt; font-weight: bold;">Sent: </span><span style="font-family: Calibri,sans-serif; font-size: 11pt;">‎3/‎24/‎2016 10:47 AM</span><br><span style="font-family: Calibri,sans-serif; font-size: 11pt; font-weight: bold;">To: </span><span style="font-family: Calibri,sans-serif; font-size: 11pt;"><a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a></span><br><span style="font-family: Calibri,sans-serif; font-size: 11pt; font-weight: bold;">Subject: </span><span style="font-family: Calibri,sans-serif; font-size: 11pt;">[llvm-dev] [GSoC'16] Proposal for Enhance SAFECode’s Baggy Bounds Checking</span><br><br></div>
<div id="divtagdefaultwrapper" style="color: rgb(0, 0, 0); font-family: Calibri,Arial,Helvetica,sans-serif; font-size: 12pt; background-color: rgb(255, 255, 255);">
<p></p>
<div><span style="font-size: 12pt;">Abstraction</span><br>
</div>
<div>----------------------------------</div>
<div><span style="font-size: 12pt;"><br>
</span></div>
<div>This projects will enhance the ‘Baggy Bounds with Accurate Checking’ [1] work. I will provide more efficient runtime checks in BBAC framework by adding more informations to the memory object’s padding area. A new padding area scheme will be designed to
 make these informations compact and efficient to fetch. I will create some new runtime checks on these additional informations. </div>
<div><br>
</div>
<div>Project Background</div>
<div><span style='font-family: Calibri, Arial, Helvetica, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 16px;'>----------------------------------</span><br>
</div>
<div><span style='font-family: Calibri, Arial, Helvetica, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 16px;'><br>
</span></div>
<div>Baggy [2] is a compiler-time transform and runtime hardening solution that detects out-of-bounds pointer arithmetic errors. The memory allocation in Baggy are wrapped with a allocator that aligns all memory objects on a power-of-two address space and pads
 the size of the memory object to be an equivalent power-of-two. In this way the layout of memory can be encoded compactly, and the meta-data about the memory object can be fetched in constant time. Baggy stores its memory objects layout in a contiguous array.
 With the memory object’s location and size informations, Beggy can do a simple check to determine if a pointer q computed from pointer p stays within the same allocation size.</div>
<div><br>
</div>
<div>Baggy Bounds with Accurate Checking (BBAC) inherits the memory layout from Baggy. It stores precise object size at the end of the padding data, making it accurate and efficient to lookup object bounds meta-data at runtime.</div>
<div><br>
</div>
<div>Overview</div>
<div><span style='font-family: Calibri, Arial, Helvetica, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 16px;'>----------------------------------</span><br>
</div>
<div><br>
</div>
<div>Inspired by Beggy and BBAC, I realize that there is still a lot we can do on BBAC. We can use padding area of a memory object to prevent various memory errors. Concretely speaking, first, I will focus on the kinds of errors we will check. Second, I need
 to come up with addtional data needed to be stored. Third, this work needs a well-designed meta-data encoding to ensure the additional data to be compact in size and efficient in lookup. Thus I will design a padding area encoding scheme. And a runtime hardening
 support is needed to guarantee the safety of program execution. Finally I will adopt some benchmarks, to evaluate the performance of this scheme.</div>
<div><br>
</div>
<div>For example, to implement accurate dangling pointer error checks, we can add points-to sets to the padding area. This enhancement will make it possible to find the dangling pointer stored in heap. With the help of runtime check on memory objects, we can
 easily locate the pointers which points to the deallocated memory.</div>
<div><br>
</div>
<div>For another example, to ensure thread safety at runtime, we can add guarded_by relations to the memory object’s padding area. With the help of constant time runtime check, this enhancement will efficiently gurantee that all the operations to a memory are
 provided by a particular mutex lock.</div>
<div><br>
</div>
<div>Criteria of Success</div>
<div><span style='font-family: Calibri, Arial, Helvetica, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 16px;'>----------------------------------</span><br>
</div>
<div>I will mainly focus on the points-to enhanment of BBAC, so the criteria of success is :</div>
<div><br>
</div>
<div>1. Expand padding area to store some additional informations (at least points-to sets).</div>
<div>2. A encoding scheme to keep these informations in a limited memory space.</div>
<div>3. Runtime support to check the memory object related bugs (at least pointer dangling in heaps).</div>
<div>4. Benchmarks on the generated executables.</div>
<div><br>
</div>
<div>Timeline </div>
<div><span style='font-family: Calibri, Arial, Helvetica, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 16px;'>----------------------------------</span><br>
</div>
<div>Before GSoC’16 Official Startup </div>
<div>+ Port SAFECode to latest LLVM release (LLVM 3.8.0).</div>
<div>+ Get familiar with SAFECode compiler.</div>
<div>+ Design the new checks and list the informations needed by these checks.</div>
<div>+ Read more publications on runtime memory hardening.</div>
<div>Week 1</div>
<div>+ Design the encoding scheme of padding area.</div>
<div>Week 2 - 4</div>
<div>+ Build the pass infrastructure on SAFECode to automatically generate hardening instructions.</div>
<div>+ Implement new memory operating functions, to support embedding the additional informations to the padding area.</div>
<div>Week 5 - 6</div>
<div>+ Implement points-to related checks (mainly pointer dangling check).</div>
<div>Week 7 - 8</div>
<div>+ Implement the other checks. This will be discussed with John Criswell.</div>
<div>Week 9 - 11</div>
<div>+ Adopt benchmarks on the generated executables. Evaluate the performance.</div>
<div>+ After GSoC’16 </div>
<div>Work out a research paper on this work.</div>
<div><br>
</div>
<div>About Me</div>
<div><span style='font-family: Calibri, Arial, Helvetica, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 16px;'>----------------------------------</span><br>
</div>
<div>I am Zhengyang, a M.S. candidate at Beijing University of Posts and Telecomunications working in the area of static program analysis. My CV can be found in [2]. Most of my works are based on Clang Static Analyzer.  I have contributed to Static Analysis
 Suite (SAS) from CERN PH-SFT as Google Summer of Code 2015 project. About the preparation for this proposal, I have studied several research papers of compiler time transform and runtime program hardening techniques. I am interested in working with LLVM community,
 and hoping to contribute to this summer with LLVM. </div>
<div><br>
</div>
<div>Contact</div>
<div><span style='font-family: Calibri, Arial, Helvetica, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 16px;'>----------------------------------</span><br>
</div>
<div>Zhengyang Liu,</div>
<div>Networking Security Research Center,</div>
<div>State Key Labs of Networking and Switching Technology,</div>
<div>Beijing University of Posts and Telecommunications, Beijing, China.</div>
<div><br>
</div>
<div>Email: zhengyang-liu@hotmail.com</div>
<div>Mobilie: (+86) 185-1911-7347</div>
<div><br>
</div>
<div>Reference</div>
<div><span style='font-family: Calibri, Arial, Helvetica, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 16px;'>----------------------------------</span><br>
</div>
<div>[1] Ding, Baozeng, et al. "Baggy bounds with accurate checking." Software Reliability Engineering Workshops (ISSREW), 2012 IEEE 23rd International Symposium on. IEEE, 2012.</div>
<div>[2] Akritidis, Periklis, et al. "Baggy Bounds Checking: An Efficient and Backwards-Compatible Defense against Out-of-Bounds Errors." USENIX Security Symposium. 2009.</div>
<div>[2] http://zhengyangl.com/cv.pdf</div>
<div><br>
</div>
<div><br>
</div>
<div>The latest update of this proposal can be found in the following link. Please let me know your comments on this proposal as a GSoC project. Any comments on how to refine this proposal are welcome. I will be very grateful if someone puts me in the right
 direction for the project.</div>
<div><br>
</div>
<div>https://docs.google.com/document/d/1SNmdULUqN52zDhM1Odw93DW_vX-2WlL0VgceNWaMLP0/edit?usp=sharing</div>
<div><br>
</div>
<br>
<p></p>
</div>


</body></html>