<br><br><div class="gmail_quote">On Mon, Jan 16, 2012 at 13:45, Greg Freemyer <span dir="ltr">&lt;<a href="mailto:greg.freemyer@gmail.com">greg.freemyer@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">On Thu, Jan 12, 2012 at 12:00 PM, Jonathan Neuschäfer<br>
&lt;<a href="mailto:j.neuschaefer@gmx.net">j.neuschaefer@gmx.net</a>&gt; wrote:<br>
&gt; On Wed, Jan 11, 2012 at 12:52:33PM -0500, Scott Lovenberg wrote:<br>
&gt;&gt; Real world example in C; I fixed a security bug in Samba that dealt with<br>
&gt;&gt; this exact problem.  Credential files were read to memory as the root user<br>
&gt;&gt; and then the memory was freed without being zeroed.  A user could therefore<br>
&gt;&gt; read the contents of a file that they didn&#39;t have permission to read<br>
&gt;&gt; because the whole thing was put in memory by a user that had permission to<br>
&gt;&gt; view the file.  Someone clever could churn through memory and find the<br>
&gt;&gt; credentials if they knew that the mount command was just run.<br>
&gt;&gt;<br>
&gt;&gt; I added a memset() to the end of the parsing function to zero out the<br>
&gt;&gt; memory before freeing back to the OS.<br>
&gt;<br>
&gt; Could you please clarify how this &quot;churning through memory&quot; would work?<br>
&gt;<br>
&gt; Of course someone could find another security bug and access heap space,<br>
&gt; but that requires said other bug. Debuggers are also irrelevant to this,<br>
&gt; because you need certain parmissions to run a program through a<br>
&gt; debugger, and if you do that, you might also set a breakpoint in the<br>
&gt; function and catch the credentials when it&#39;s run.<br>
&gt;<br>
&gt; Swap disk are a real issue under some circumstances, though.<br>
&gt; A page containing sensitive data may be swapped out and not be over-<br>
&gt; written before an attacker can boot from an external medium (CD etc.)<br>
&gt; and peek through the swap disk.<br>
<br>
</div>Boot CDs mean physical access.  If the bad guy has physical access, all is lost.<br>
<br>
=== specifically<br>
If you want to defend against reboots to a boot CD, then all of memory<br>
is potential leak.<br>
<br>
<a href="http://citp.princeton.edu/research/memory/" target="_blank">http://citp.princeton.edu/research/memory/</a><br>
<br>
My personal favorite is when they actually move the RAM chips from one<br>
PC to another to get the data out of it.<br>
<br>
After removing power, they immediately spray freon (or something<br>
similarly cold) on the RAM chips to stabilize them, then move them to<br>
another PC and recover the content.<br>
<br>
I can&#39;t get the video to work right now, but here&#39;s a walk-thru with photos.<br>
<br>
I quote:<br>
===<br>
We stored data in these memory modules, then cooled them, removed them<br>
from the computer, and placed them in a container of liquid nitrogen<br>
for an hour. After returning them to the computer, we found<br>
practically no information had been lost. (Using liquid nitrogen would<br>
be overkill for most attacks, since cheap, widely-available duster<br>
spray would adequately cool the chips.)<br>
===<br>
<span class="HOEnZb"><font color="#888888"><br>
Greg<br>
</font></span></blockquote></div><div><br></div>I should clarify (because someone asked), the memory that I was talking about wouldn&#39;t be allocatable until after the process that read it and freed it exited.<br><br clear="all">
<div><br></div>-- <br>Peace and Blessings,<br>-Scott.<br><br>