<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" media="screen" href="/styles/xslt/rss.xslt"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:c9="http://channel9.msdn.com">
<channel>
	<title>Comment Feed for Channel 9 - Louis Lafreniere: Next Generation Buffer Overrun Protection with /GS++</title>
	<atom:link rel="self" type="application/rss+xml" href="http://channel9.msdn.com/Shows/Going+Deep/Louis-Lafreniere-Next-Generation-Buffer-Overrun-Protection-gs/RSS"></atom:link>
	<image>
		<url>http://ecn.channel9.msdn.com/o9/previewImages/100/469150_100x75.jpg</url>
		<title>Channel 9 - Louis Lafreniere: Next Generation Buffer Overrun Protection with /GS++</title>
		<link></link>
	</image>
	<description>From 
the C&amp;#43;&amp;#43; Team Blog: A lot of code written in C and C&amp;#43;&amp;#43; has vulnerabilities that leave their users open to buffer overrun attacks. There are two major reasons for this. One reason is that the languages provide unfettered access to the vulnerable memory;
 the other reason is that developers make mistakes. The simple fact is that even following the best practices and performing quality checks, by the end of the day, no developers can get 100 percent of their code right all the time. Thus, additional built-in
 layers of defense to help track down vulnerable areas of code are in order. The Visual C&amp;#43;&amp;#43; compiler’s GS switch, which is on by default, is one of the built-in defenses designed to mitigate the buffer overrun attacks.
With VC 10, the next iteration of VC that ships with Visual Studio 2010, Louis Lafreniere and team have delivered the next iteration of /GS, /GS&amp;#43;&amp;#43;. /GS proved to be invaluable for C&amp;#43;&amp;#43; developers wanting compile time checking for buffer overrun vulnerabilities
 in their code. specifically targetting string buffers. Well, turns out that certain structs proved to be a suitable exploit and /GS did not check data structures like structs. Louis et al, with /GS&amp;#43;&amp;#43;, now check for certain typed of struct vulnerability (stack
 allocated). Here, Principal Developer Louis Lafreniere takes us through the history and future of /GS, in a deep way, of course. Most of the time is spent at the whiteboard mapping out exactly how /GS works and what to expect from /GS&amp;#43;&amp;#43;.
Enjoy! </description>
	<link></link>
	<language>en</language>
	<pubDate>Tue, 21 May 2013 13:45:02 GMT</pubDate>
	<lastBuildDate>Tue, 21 May 2013 13:45:02 GMT</lastBuildDate>
	<generator>Rev9</generator>
	<item>
		<title>Re: Louis Lafreniere: Next Generation Buffer Overrun Protection with /GS++</title>
		<description>
			<![CDATA[
<p>Good video. It's been quite a while I had to write anything in C/C&#43;&#43;, so excuse my ignorance.</p>
<p>But, is there a utility to quickly check if an executable or a DLL contains modules that were compiled with /gs or /gs&#43;&#43; flag? In another words to do&nbsp;some&nbsp;sort&nbsp;of a&nbsp;static analysis of program binaries to have at least some level of confidence that it was
 hardened against buffer overflows?</p>
<p>Cheers,</p>
<p>Seva.</p>
<p>posted by sokhaty</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Louis-Lafreniere-Next-Generation-Buffer-Overrun-Protection-gs#c633796374570000000</link>
		<pubDate>Wed, 03 Jun 2009 14:50:57 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Louis-Lafreniere-Next-Generation-Buffer-Overrun-Protection-gs#c633796374570000000</guid>
		<dc:creator>sokhaty</dc:creator>
	</item>
	<item>
		<title>Re: Louis Lafreniere: Next Generation Buffer Overrun Protection with /GS++</title>
		<description>
			<![CDATA[
<p>Microsoft does have an internal tool which groups are required to run before shipping binaries.&nbsp; This tool ensures several things, and one of these is that /GS was enabled on each modules.&nbsp; It also requires the binaries to be compiled by a certain minimum
 compiler version.&nbsp; So once Dev10 ships and the tool sets the minimum bar to Dev10, it will guarantee all Microsoft products are compiled with /GS&#43;&#43;.</p>
<p>This tool isn't available externally AFAIK, but someone could easily write their own.&nbsp; The tool looks at the .pdb file.&nbsp; Using DIA, you could look to make sure each module has /GS using IDiaSymbol::get_hasSecurityChecks().</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- Louis Lafreniere</p>
<p>posted by louisl</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Louis-Lafreniere-Next-Generation-Buffer-Overrun-Protection-gs#c633796415930000000</link>
		<pubDate>Wed, 03 Jun 2009 15:59:53 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Louis-Lafreniere-Next-Generation-Buffer-Overrun-Protection-gs#c633796415930000000</guid>
		<dc:creator>louisl</dc:creator>
	</item>
	<item>
		<title>Re: Louis Lafreniere: Next Generation Buffer Overrun Protection with /GS++</title>
		<description>
			<![CDATA[
<p>Thank you for the pointers, Louis.</p>
<p>Is there anything that can be used in cases when binaries are coming not from the internal dev.team or a major vendor, like Microsoft, and there is no .pdbs immediately available? Is it possible to blindly search for a sequence of machine code instructions
 (naive signature matching)? Or in this case /gs injected code &quot;optimized out beyond recognition&quot;?</p>
<p>Best,</p>
<p>Seva.</p>
<p>posted by sokhaty</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Louis-Lafreniere-Next-Generation-Buffer-Overrun-Protection-gs#c633796762710000000</link>
		<pubDate>Thu, 04 Jun 2009 01:37:51 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Louis-Lafreniere-Next-Generation-Buffer-Overrun-Protection-gs#c633796762710000000</guid>
		<dc:creator>sokhaty</dc:creator>
	</item>
	<item>
		<title>Re: Louis Lafreniere: Next Generation Buffer Overrun Protection with /GS++</title>
		<description>
			<![CDATA[
<p>Plain GS frames are pretty easy to find in disassembly.&nbsp;&nbsp;Plain GS frames&nbsp;look like:</p>
<p>sub&nbsp;&nbsp;&nbsp;&nbsp; esp, 16<br />mov&nbsp;&nbsp;&nbsp;&nbsp; eax, DWORD PTR ___security_cookie<br />xor&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;eax, ebp|esp<br />mov&nbsp;&nbsp;&nbsp;&nbsp; DWORD PTR __$ArrayPad$[ebp|esp], eax</p>
<p>The scheduler can sometimes interleave some instructions in there.&nbsp; EH frames are quite a bit trickier to find if compiled for size however, because we use helper calls (like __EH_prolog3_GS) to setup/unlink the frames.&nbsp; But you could look for the helper
 code in the image (there are multiple versions to look for), and&nbsp;search for calls to it.&nbsp; Depending on coding styles though, GS frames can be pretty rare...&nbsp; Some code doesn't need stack buffers or local structs.&nbsp; So not finding one doesn't mean the code isn't
 compiled with /GS.</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- Louis Lafreniere</p>
<p>posted by louisl</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Louis-Lafreniere-Next-Generation-Buffer-Overrun-Protection-gs#c633797496880000000</link>
		<pubDate>Thu, 04 Jun 2009 22:01:28 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Louis-Lafreniere-Next-Generation-Buffer-Overrun-Protection-gs#c633797496880000000</guid>
		<dc:creator>louisl</dc:creator>
	</item>
	<item>
		<title>Re: Louis Lafreniere: Next Generation Buffer Overrun Protection with /GS++</title>
		<description>
			<![CDATA[
<p>Outstanding, it doesn't even look all that scary <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-1.gif' alt='Smiley' />&nbsp;A lot of thanks, Louis!</p>
<p>posted by sokhaty</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Louis-Lafreniere-Next-Generation-Buffer-Overrun-Protection-gs#c633797660260000000</link>
		<pubDate>Fri, 05 Jun 2009 02:33:46 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Louis-Lafreniere-Next-Generation-Buffer-Overrun-Protection-gs#c633797660260000000</guid>
		<dc:creator>sokhaty</dc:creator>
	</item>
	<item>
		<title>Re: Louis Lafreniere: Next Generation Buffer Overrun Protection with /GS++</title>
		<description>
			<![CDATA[
<p>Great video!&nbsp; At the end you mention that Windows 7 was built using /GS&#43;&#43; to some extent.&nbsp; For the record, so to speak, can you say more about what percentage and/or types of binaries&nbsp;in Windows 7 and Server 2008-R2 were compiled with /GS&#43;&#43; please?&nbsp; And
 how much would you attribute the improved performance of Win7 over Vista to the new compiler optimizations?&nbsp;
</p>
<p>&nbsp;</p>
<p>It would be good for Windows 7 if you could provide some definitive detail here, since security enhancements are one of the main reasons a company would choose to migrate from XP to 7 sooner rather than later, and things like /GS&#43;&#43; might be important to
 a CISO at a large organization who needs to justify his/her recommendation to upper management.&nbsp;
</p>
<p>&nbsp;</p>
<p>Thank You!</p>
<p>&nbsp; </p>
<p>posted by Jason Fossen</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Louis-Lafreniere-Next-Generation-Buffer-Overrun-Protection-gs#c633840434470000000</link>
		<pubDate>Fri, 24 Jul 2009 14:44:07 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Louis-Lafreniere-Next-Generation-Buffer-Overrun-Protection-gs#c633840434470000000</guid>
		<dc:creator>Jason Fossen</dc:creator>
	</item>
	<item>
		<title>Re: Louis Lafreniere: Next Generation Buffer Overrun Protection with /GS++</title>
		<description>
			<![CDATA[
<p>Well, not really. Windows was used for&nbsp;/gs&#43;&#43; <em>testing</em>. That's what Louis was referring to. The actual shipping version of&nbsp;Windows 7 was
<em>not</em> compiled with /gs&#43;&#43; (because /gs&#43;&#43; doesn't ship until VS 2010 ships&nbsp;- would we use a beta compiler technology to build a shipping product?)&nbsp;</p>
<p>&nbsp;</p>
<p>So, to be clear: /gs&#43;&#43; was not used for compiling any part of shipping versions of Windows 7.</p>
<p>C</p>
<p>posted by Charles</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Louis-Lafreniere-Next-Generation-Buffer-Overrun-Protection-gs#c633844773480000000</link>
		<pubDate>Wed, 29 Jul 2009 15:15:48 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Louis-Lafreniere-Next-Generation-Buffer-Overrun-Protection-gs#c633844773480000000</guid>
		<dc:creator>Charles</dc:creator>
	</item>
	<item>
		<title>Re: Louis Lafreniere: Next Generation Buffer Overrun Protection with /GS++</title>
		<description>
			<![CDATA[
<p>&gt;is there a utility to quickly check if an executable or a DLL contains modules that were compiled with /gs or /gs&#43;&#43; flag?</p>
<p>in fact, there is! we just released BinScope that does exactly this check, along with a number of other security checks.</p>
<p>&nbsp;</p>
<p><a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=90e6181c-5905-4799-826a-772eafd4440a">http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=90e6181c-5905-4799-826a-772eafd4440a</a>&nbsp;</p>
<p>posted by mattthom</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Louis-Lafreniere-Next-Generation-Buffer-Overrun-Protection-gs#c633935675410000000</link>
		<pubDate>Wed, 11 Nov 2009 20:19:01 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Louis-Lafreniere-Next-Generation-Buffer-Overrun-Protection-gs#c633935675410000000</guid>
		<dc:creator>mattthom</dc:creator>
	</item>
	<item>
		<title>Re: Louis Lafreniere: Next Generation Buffer Overrun Protection with /GS++</title>
		<description>
			<![CDATA[
<p>thanks a lot</p>
<p>&nbsp;</p>
<p><a href="http://mycomputersland.com"><img src="http://1.bp.blogspot.com/_6R1aYLOwKHg/TD8SNeT-XXI/AAAAAAAAADo/IWjMd6H91Xk/s1600/nucc" border="0" alt="comland" hspace="2" vspace="2"></a><a href="http://mycomputersland.com"><img src="http://1.bp.blogspot.com/_6R1aYLOwKHg/TD8SNeT-XXI/AAAAAAAAADo/IWjMd6H91Xk/s1600/nucc" border="0" alt="computersland" hspace="2" vspace="2"></a><a href="http://itcomputerzone.com"><img src="http://1.bp.blogspot.com/_6R1aYLOwKHg/TD8SNeT-XXI/AAAAAAAAADo/IWjMd6H91Xk/s1600/nucc" border="0" alt="itcomputer" hspace="2" vspace="2"></a><br /><a href="http://computerslookup.com"><img src="http://1.bp.blogspot.com/_6R1aYLOwKHg/TD8SNeT-XXI/AAAAAAAAADo/IWjMd6H91Xk/s1600/nucc" border="0" alt="computerslookup" hspace="2" vspace="2"></a><br /><a href="http://itcomputerzone.com/batch/"><img src="http://1.bp.blogspot.com/_6R1aYLOwKHg/TD8SNeT-XXI/AAAAAAAAADo/IWjMd6H91Xk/s1600/nucc" border="0" alt="batch" hspace="2" vspace="2"></a><a href="http://sevenwebhosting.org"><img src="http://1.bp.blogspot.com/_6R1aYLOwKHg/TD8SNeT-XXI/AAAAAAAAADo/IWjMd6H91Xk/s1600/nucc" border="0" alt="sevenwebhosting.org"></a></p>
<p>posted by petersan</p>]]>
		</description>
		<link>http://channel9.msdn.com/Shows/Going+Deep/Louis-Lafreniere-Next-Generation-Buffer-Overrun-Protection-gs#c634156150500000000</link>
		<pubDate>Sun, 25 Jul 2010 00:37:30 GMT</pubDate>
		<guid isPermaLink="true">http://channel9.msdn.com/Shows/Going+Deep/Louis-Lafreniere-Next-Generation-Buffer-Overrun-Protection-gs#c634156150500000000</guid>
		<dc:creator>petersan</dc:creator>
	</item>
</channel>
</rss>