<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" media="screen" href="/App_Themes/default/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:evnet="http://www.mscommunities.com/rssmodule/"><channel><title>Comment Feed for Louis Lafreniere: Next Generation Buffer Overrun Protection with /GS++ (Going Deep on Channel 9)</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/default.aspx" /><image><url>http://mschnlnine.vo.llnwd.net/d1/Dev/App_Themes/C9/images/feedimage.png</url><title>Comment Feed for Louis Lafreniere: Next Generation Buffer Overrun Protection with /GS++ (Going Deep on Channel 9)</title><link>http://channel9.msdn.com/shows/Going+Deep/Louis-Lafreniere-Next-Generation-Buffer-Overrun-Protection-gs/</link></image><description>Louis Lafreniere: Next Generation Buffer Overrun Protection with /GS++</description><link>http://channel9.msdn.com/shows/Going+Deep/Louis-Lafreniere-Next-Generation-Buffer-Overrun-Protection-gs/</link><language>en-us</language><pubDate>Wed, 11 Nov 2009 20:19:01 GMT</pubDate><lastBuildDate>Wed, 11 Nov 2009 20:19:01 GMT</lastBuildDate><generator>EvNet (EvNet, Version=1.0.3608.3122, Culture=neutral, PublicKeyToken=null)</generator><item><title>Re: Re: Louis Lafreniere: Next Generation Buffer Overrun Protection with gs++</title><description>&lt;p&gt;&amp;gt;is there a utility to quickly check if an executable or a DLL contains modules that were compiled with /gs or /gs++ flag?&lt;/p&gt;
&lt;p&gt;in fact, there is! we just released BinScope that does exactly this check, along with a number of other security checks.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=90e6181c-5905-4799-826a-772eafd4440a"&gt;http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=90e6181c-5905-4799-826a-772eafd4440a&lt;/a&gt;&amp;nbsp;&lt;/p&gt;</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/Louis-Lafreniere-Next-Generation-Buffer-Overrun-Protection-gs/?CommentID=505603</link><pubDate>Wed, 11 Nov 2009 20:16:48 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/Louis-Lafreniere-Next-Generation-Buffer-Overrun-Protection-gs/?CommentID=505603</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/505603/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>&amp;gt;is there a utility to quickly check if an executable or a DLL contains modules that were compiled with /gs or /gs++ flag?
in fact, there is! we just released BinScope that does exactly this check, along with a number of other security&amp;#8230;</evnet:previewtext><dc:creator>mattthom</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/505603/Trackback.aspx</trackback:ping></item><item><title>Re: Re: Louis Lafreniere: Next Generation Buffer Overrun Protection with /GS++</title><description>&lt;p&gt;Well, not really. Windows was used for&amp;nbsp;/gs++ &lt;em&gt;testing&lt;/em&gt;. That's what Louis was referring to. The actual shipping version of&amp;nbsp;Windows 7 was &lt;em&gt;not&lt;/em&gt; compiled with /gs++ (because /gs++ doesn't ship until VS 2010 ships&amp;nbsp;- would we use a beta compiler technology to build a shipping product?)&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;So, to be clear: /gs++ was not used for compiling any part of shipping versions of Windows 7.&lt;/p&gt;
&lt;p&gt;C&lt;/p&gt;</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/Louis-Lafreniere-Next-Generation-Buffer-Overrun-Protection-gs/?CommentID=481454</link><pubDate>Wed, 29 Jul 2009 15:15:48 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/Louis-Lafreniere-Next-Generation-Buffer-Overrun-Protection-gs/?CommentID=481454</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/481454/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Well, not really. Windows was used for&amp;nbsp;/gs++ testing. That's what Louis was referring to. The actual shipping version of&amp;nbsp;Windows 7 was not compiled with /gs++ (because /gs++ doesn't ship until VS 2010 ships&amp;nbsp;- would we use a beta compiler technology to build a shipping&amp;#8230;</evnet:previewtext><dc:creator>Charles</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/481454/Trackback.aspx</trackback:ping></item><item><title>Re: Louis Lafreniere: Next Generation Buffer Overrun Protection with /GS++</title><description>&lt;p&gt;Great video!&amp;nbsp; At the end you mention that Windows 7 was built using /GS++ to some extent.&amp;nbsp; For the record, so to speak, can you say more about what percentage and/or types of binaries&amp;nbsp;in Windows 7 and Server 2008-R2 were compiled with /GS++ please?&amp;nbsp; And how much would you attribute the improved performance of Win7 over Vista to the new compiler optimizations?&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;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++ might be important to a CISO at a large organization who needs to justify his/her recommendation to upper management.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Thank You!&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;/p&gt;</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/Louis-Lafreniere-Next-Generation-Buffer-Overrun-Protection-gs/?CommentID=480606</link><pubDate>Fri, 24 Jul 2009 14:44:07 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/Louis-Lafreniere-Next-Generation-Buffer-Overrun-Protection-gs/?CommentID=480606</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/480606/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Great video!&amp;nbsp; At the end you mention that Windows 7 was built using /GS++ to some extent.&amp;nbsp; For the record, so to speak, can you say more about what percentage and/or types of binaries&amp;nbsp;in Windows 7 and Server 2008-R2 were compiled with /GS++ please?&amp;nbsp; And how much would you&amp;#8230;</evnet:previewtext><dc:creator>Jason Fossen</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/480606/Trackback.aspx</trackback:ping></item><item><title>Re: Re: Re: Re: Re: Louis Lafreniere: Next Generation Buffer Overrun Protection with gs++</title><description>&lt;p&gt;Outstanding, it doesn't even look all that scary :)&amp;nbsp;A lot of thanks, Louis!&lt;/p&gt;</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/Louis-Lafreniere-Next-Generation-Buffer-Overrun-Protection-gs/?CommentID=472142</link><pubDate>Fri, 05 Jun 2009 02:33:46 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/Louis-Lafreniere-Next-Generation-Buffer-Overrun-Protection-gs/?CommentID=472142</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/472142/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Outstanding, it doesn't even look all that scary :)&amp;nbsp;A lot of thanks, Louis!</evnet:previewtext><dc:creator>sokhaty</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/472142/Trackback.aspx</trackback:ping></item><item><title>Re: Re: Re: Re: Louis Lafreniere: Next Generation Buffer Overrun Protection with gs++</title><description>&lt;p&gt;Plain GS frames are pretty easy to find in disassembly.&amp;nbsp;&amp;nbsp;Plain GS frames&amp;nbsp;look like:&lt;/p&gt;
&lt;p&gt;sub&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; esp, 16&lt;br /&gt;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eax, DWORD PTR ___security_cookie&lt;br /&gt;xor&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;eax, ebp|esp&lt;br /&gt;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DWORD PTR __$ArrayPad$[ebp|esp], eax&lt;/p&gt;
&lt;p&gt;The scheduler can sometimes interleave some instructions in there.&amp;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.&amp;nbsp; But you could look for the helper code in the image (there are multiple versions to look for), and&amp;nbsp;search for calls to it.&amp;nbsp; Depending on coding styles though, GS frames can be pretty rare...&amp;nbsp; Some code doesn't need stack buffers or local structs.&amp;nbsp; So not finding one doesn't mean the code isn't compiled with /GS.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Louis Lafreniere&lt;/p&gt;</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/Louis-Lafreniere-Next-Generation-Buffer-Overrun-Protection-gs/?CommentID=472120</link><pubDate>Thu, 04 Jun 2009 22:01:28 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/Louis-Lafreniere-Next-Generation-Buffer-Overrun-Protection-gs/?CommentID=472120</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/472120/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Plain GS frames are pretty easy to find in disassembly.&amp;nbsp;&amp;nbsp;Plain GS frames&amp;nbsp;look like:
sub&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; esp, 16mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eax, DWORD PTR ___security_cookiexor&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;eax, ebp|espmov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DWORD PTR&amp;#8230;</evnet:previewtext><dc:creator>louisl</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/472120/Trackback.aspx</trackback:ping></item><item><title>Re: Re: Re: Louis Lafreniere: Next Generation Buffer Overrun Protection with gs++</title><description>&lt;p&gt;Thank you for the pointers, Louis.&lt;/p&gt;
&lt;p&gt;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 "optimized out beyond recognition"?&lt;/p&gt;
&lt;p&gt;Best,&lt;/p&gt;
&lt;p&gt;Seva.&lt;/p&gt;</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/Louis-Lafreniere-Next-Generation-Buffer-Overrun-Protection-gs/?CommentID=471973</link><pubDate>Thu, 04 Jun 2009 01:37:51 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/Louis-Lafreniere-Next-Generation-Buffer-Overrun-Protection-gs/?CommentID=471973</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/471973/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Thank you for the pointers, Louis.
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&amp;#8230;</evnet:previewtext><dc:creator>sokhaty</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/471973/Trackback.aspx</trackback:ping></item><item><title>Re: Re: Louis Lafreniere: Next Generation Buffer Overrun Protection with gs++</title><description>&lt;p&gt;Microsoft does have an internal tool which groups are required to run before shipping binaries.&amp;nbsp; This tool ensures several things, and one of these is that /GS was enabled on each modules.&amp;nbsp; It also requires the binaries to be compiled by a certain minimum compiler version.&amp;nbsp; So once Dev10 ships and the tool sets the minimum bar to Dev10, it will guarantee all Microsoft products are compiled with /GS++.&lt;/p&gt;
&lt;p&gt;This tool isn't available externally AFAIK, but someone could easily write their own.&amp;nbsp; The tool looks at the .pdb file.&amp;nbsp; Using DIA, you could look to make sure each module has /GS using IDiaSymbol::get_hasSecurityChecks().&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Louis Lafreniere&lt;/p&gt;</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/Louis-Lafreniere-Next-Generation-Buffer-Overrun-Protection-gs/?CommentID=471868</link><pubDate>Wed, 03 Jun 2009 15:59:53 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/Louis-Lafreniere-Next-Generation-Buffer-Overrun-Protection-gs/?CommentID=471868</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/471868/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Microsoft does have an internal tool which groups are required to run before shipping binaries.&amp;nbsp; This tool ensures several things, and one of these is that /GS was enabled on each modules.&amp;nbsp; It also requires the binaries to be compiled by a certain minimum compiler version.&amp;nbsp; So once&amp;#8230;</evnet:previewtext><dc:creator>louisl</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/471868/Trackback.aspx</trackback:ping></item><item><title>Re: Louis Lafreniere: Next Generation Buffer Overrun Protection with gs++</title><description>&lt;p&gt;Good video. It's been quite a while I had to write anything in C/C++, so excuse my ignorance.&lt;/p&gt;
&lt;p&gt;But, is there a utility to quickly check if an executable or a DLL contains modules that were compiled with /gs or /gs++ flag? In another words to do&amp;nbsp;some&amp;nbsp;sort&amp;nbsp;of a&amp;nbsp;static analysis of program binaries to have at least some level of confidence that it was hardened against buffer overflows?&lt;/p&gt;
&lt;p&gt;Cheers,&lt;/p&gt;
&lt;p&gt;Seva.&lt;/p&gt;</description><comments></comments><link>http://channel9.msdn.com/shows/Going+Deep/Louis-Lafreniere-Next-Generation-Buffer-Overrun-Protection-gs/?CommentID=471852</link><pubDate>Wed, 03 Jun 2009 14:50:58 GMT</pubDate><guid isPermaLink="false">http://channel9.msdn.com/shows/Going+Deep/Louis-Lafreniere-Next-Generation-Buffer-Overrun-Protection-gs/?CommentID=471852</guid><evnet:views>0</evnet:views><evnet:viewtrackingurl>http://channel9.msdn.com/471852/WebViewBug.aspx?EVT=0</evnet:viewtrackingurl><evnet:previewtext>Good video. It's been quite a while I had to write anything in C/C++, so excuse my ignorance.
But, is there a utility to quickly check if an executable or a DLL contains modules that were compiled with /gs or /gs++ flag? In another words to do&amp;nbsp;some&amp;nbsp;sort&amp;nbsp;of a&amp;nbsp;static analysis of&amp;#8230;</evnet:previewtext><dc:creator>sokhaty</dc:creator><slash:comments>0</slash:comments><wfw:commentRss></wfw:commentRss><trackback:ping>http://channel9.msdn.com/471852/Trackback.aspx</trackback:ping></item></channel></rss>