<html>
<head>
<meta content="text/html; charset=windows-1252"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div class="moz-cite-prefix">On 3/16/15 11:51 PM, Aditya Verma IDD M
Tech Computer Sc & Engg., IIT(BHU), Varanasi (U.P.) wrote:<br>
</div>
<blockquote
cite="mid:CA+59L6gXLTw8KBsgTa7Rqz_+1JNZQvYhnuAW+5Bv1cXLweo_zA@mail.gmail.com"
type="cite">
<meta http-equiv="Context-Type" content="text/html; charset=UTF-8">
<div dir="ltr">Hi
<div><br>
</div>
<div>I want to pursue a project based to improve the existing
KCoFI method which is the Control Flow integrity method for
commodity os. Since KCoFI is a llvm based project I plan to
undertake the project to improve the existing KCoFI method.
Following are the improvements that I want to pursue:</div>
</div>
</blockquote>
<br>
You might want to include a link to the KCoFI paper for those who do
not know what KCoFI is.<br>
<br>
<blockquote
cite="mid:CA+59L6gXLTw8KBsgTa7Rqz_+1JNZQvYhnuAW+5Bv1cXLweo_zA@mail.gmail.com"
type="cite">
<div dir="ltr">
<div><br>
</div>
<div>1. To improve the call graph used in KCoFI. Implement a
stronger call graph.</div>
<div>2. Port the KCoFI to another architecture such as ARM or
x86-32.</div>
<div>3 .T<span>o replace KCoFI's SFI instrumentation with that
found in Portable Native Client (PNaCL)</span></div>
</div>
</blockquote>
<br>
A fourth option would be to update the KCoFI code to the latest
version of FreeBSD. That would require updating the LLVM passes to
work in a newer version of LLVM and porting a newer version of the
FreeBSD kernel to the SVA-OS instruction set.<br>
<br>
Reviewing the three improvements that you listed, I think that doing
all three during a single GSoC would be too much work, namely
because improvement #2 would be a project in and of itself.
Improvements #1 and #3 might be doable together in a single summer
(depending on how things go).<br>
<br>
For improvement #1, you'll need to enable libLTO when compiling the
FreeBSD kernel (in order to compute a whole-program call graph).
You should try to compile the FreeBSD kernel with the -flto option
to see if it's going to work. If it doesn't, then your GSoC project
would devolve into getting LLVM to compile the FreeBSD kernel with
the -flto option.<br>
<br>
For improvement #2, I would not do x86-32. The CFI code already
works for 32-bit x86, and so there's not a lot of LLVM work to do
for x86-32; all of the work would be to get the SVA-OS layer working
(which should be easy as we have a 32-bit implementation upon which
the 64-bit implementation is based). You should also specify
whether you're porting just the CFI instrumentation, the SVA-OS
protections, or both.<br>
<br>
If you do improvement #3, you should first very that PNaCL is
open-source. I think it is, but I haven't checked, so you should do
that. :)<br>
<br>
<blockquote
cite="mid:CA+59L6gXLTw8KBsgTa7Rqz_+1JNZQvYhnuAW+5Bv1cXLweo_zA@mail.gmail.com"
type="cite">
<div dir="ltr">
<div><br>
</div>
<div>Can anyone review my idea for the projects? I believe
pursuing a project on KCoFI will be worth because it is the
only Control Flow Integrity protection for commodity operating
systems which does not uses any expensive memory safety. I
believe this project will have a wide scope for the future.</div>
</div>
</blockquote>
<br>
I'm curious as to whether others in the LLVM community are
interested in this GSoC project. I believe someone mentioned a CFI
project on specialized hardware (the CHERI machine?), but I can't
find the email on it.<br>
<br>
Regards,<br>
<br>
John Criswell<br>
<br>
<blockquote
cite="mid:CA+59L6gXLTw8KBsgTa7Rqz_+1JNZQvYhnuAW+5Bv1cXLweo_zA@mail.gmail.com"
type="cite">
<div dir="ltr">
<div><br>
<div>
<div class="gmail_signature">
<div dir="ltr">Regards
<div>Aditya Verma</div>
<div>Junior Undergraduate</div>
<div>IDD Computer Sc & Engg</div>
<div>IIT(BHU), Varanasi(UP)</div>
</div>
</div>
</div>
</div>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
LLVM Developers mailing list
<a class="moz-txt-link-abbreviated" href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a> <a class="moz-txt-link-freetext" href="http://llvm.cs.uiuc.edu">http://llvm.cs.uiuc.edu</a>
<a class="moz-txt-link-freetext" href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a>
</pre>
</blockquote>
<br>
<br>
<pre class="moz-signature" cols="72">--
John Criswell
Assistant Professor
Department of Computer Science, University of Rochester
<a class="moz-txt-link-freetext" href="http://www.cs.rochester.edu/u/criswell">http://www.cs.rochester.edu/u/criswell</a></pre>
</body>
</html>