<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Eugene Siu's Thoughts on Security</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/esiu/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/esiu/feed.xml</link>
    <description>Share my latest security research and techniques</description>
    <lastBuildDate>Tue, 16 Apr 2019 05:05:52 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>(In)Security of MultiByteToWideChar and WideCharToMultiByte (Part 2)</title>
      <link>https://docs.microsoft.com/archive/blogs/esiu/insecurity-of-multibytetowidechar-and-widechartomultibyte-part-2</link>
      <pubDate>Sat, 15 Nov 2008 00:59:34 GMT</pubDate>
      <dc:creator><![CDATA[Eugene Security]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/esiu/2008/11/15/insecurity-of-multibytetowidechar-and-widechartomultibyte-part-2/</guid>
      <description><![CDATA[Part 1 of this installment discussed the unsafe nature of MultiByteToWideChar and...]]></description>
      <content:encoded><![CDATA[<p>Part 1 of this installment discussed the unsafe nature of MultiByteToWideChar and WideCharToMultiByte.&#160; They do not guarantee terminating strings properly.&#160; In this installment, I want to focus on the count parameters.&#160; There are three count parameters that warrant your attention in order to use these two functions properly.</p>  <p>Since these two functions deal with conversion, the size of MultiByte and WideChar buffers are expected.&#160; In addition, upon successful return, the number of converted characters is also returned.&#160; These three counts must be carefully provided in order to ensure security.</p>  <p><strong>Rules of thumb</strong>    <br />1. MultiByte parameters always expect byte counts, the number of bytes in the corresponding buffer    <br />2. WideChar parameters always expect character counts, the number of wide characters in the corresponding buffer    <br />3. Return value follows rule #1 or #2, depending the type of output</p>  <p>Let’s study a bad example to illustrate some common errors.</p>  <p><em>wchar_t wstrTest1[] = L&quot;123456789&quot;;      <br />&#160;&#160;&#160; char strTest1[9]; </em></p>  <p><em></em><em>     <br />&#160;&#160;&#160; int result = WideCharToMultiByte(CP_UTF8, 0, (LPCWSTR) wstrTest1, sizeof(wstrTest1), strTest1, sizeof(strTest1), NULL, NULL); </em></p>  <p>Using sizeof() seems reasonable for both parameters, as WideCharToMultiByte expects size of the corresponding buffers.&#160; sizeof() returns the byte count of a buffer.&#160; Following the rules of thumb, let’s find the bug.&#160; </p>  <p>The bug lies in the count of <em>wstrTest1.&#160; </em>It expects the number of wchar_t characters, rather than the byte count.&#160; The proper value should be character count, not byte count, therefore, <em>sizeof(wstrTest1)/sizeof(wchar_t).</em></p>  <p>The correct call should be as follows:</p>  <blockquote>   <p><em>int result = WideCharToMultiByte(CP_UTF8, 0,&#160; (LPCWSTR) wstrTest1,        <br /></em><em>sizeof(wstrTest1)/sizeof(wchar_t),        <br /></em><em>strTest1, sizeof(strTest1), NULL, NULL); </em></p> </blockquote>  <p>What is so bad about getting the count wrong?&#160; It is possible to cause buffer overflows.&#160; Considering MultiByteToWideChar, destination count is expected to be the count of wchar_t.&#160; If the actual size is used, destination size erroneously doubles.&#160; MultiByteToWideChar would gladly copy data up to double the size of the valid buffer.&#160; As a result, buffer overflow occurs.</p>]]></content:encoded>
    </item>
    <item>
      <title>(In)Security of MultiByteToWideChar and WideCharToMultiByte (Part 1)</title>
      <link>https://docs.microsoft.com/archive/blogs/esiu/insecurity-of-multibytetowidechar-and-widechartomultibyte-part-1</link>
      <pubDate>Thu, 06 Nov 2008 13:22:38 GMT</pubDate>
      <dc:creator><![CDATA[Eugene Security]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/esiu/2008/11/06/insecurity-of-multibytetowidechar-and-widechartomultibyte-part-1/</guid>
      <description><![CDATA[There are a few well-known unsafe APIs in the standard C library, such as strcpy and memcpy.&#160;...]]></description>
      <content:encoded><![CDATA[<p>There are a few well-known unsafe APIs in the standard C library, such as strcpy and memcpy.&#160; These routines are unsafe as buffer and destination buffer size are not taken into consideration.&#160; Buffer overflows may take place because destination buffer is not large enough to hold incoming data.&#160; Safe version of APIs checks that destination buffer has enough spaces to hold the source data.&#160; In addition, strcpy has another potential risk as it does not guarantee production of null-terminating strings. </p>  <p>A couple functions that are almost as dangerous are still lurking without corresponding safe versions.&#160; They are <a href="https://msdn.microsoft.com/en-us/library/ms776413(VS.85).aspx">MultiByteToWideChar</a> and <a href="https://msdn.microsoft.com/en-us/library/ms776420(VS.85).aspx">WideCharToMultiByte</a>, which are used for translating strings between Unicode and ANSI.&#160; <a href="https://msdn.microsoft.com/en-us/library/cc500362.aspx">https://msdn.microsoft.com/en-us/library/cc500362.aspx</a>.&#160; Similar to strcpy, they are dangerous because they are not guaranteed to produce null-terminated strings.&#160; Unlike strcpy, they return 0 when destination buffer is not large enough.&#160; Even though they perform size checks, I will explain the security pitfalls of using MultiByteToWideChar and WideCharToMultiByte.&#160; </p>  <p>The first installment focuses on the possibility of producing non-null terminating strings.&#160; Let's start with explaining the return values of MultiByteToWideChar and WideCharToMultiByte.&#160; They return 0 when destination buffer is not large enough, or fails with other reasons.&#160; They return the number of characters saved in the destination buffer if execution is successful.&#160; Non-null terminated strings can be produced by both successful and unsuccessful execution of these APIs.&#160; Let's illustrate them with a couple examples.&#160; WideCharToMultiByte is used in all examples, as the same principle applies to MultiByteToWideChar too. </p>  <p><em>&#160;&#160;&#160; wchar_t wstrTest1[] = L&quot;123456789&quot;;      <br />&#160;&#160;&#160; char strTest1[9]; </em></p>  <p><em>&#160;&#160;&#160; // Case 1: Parse 2 characters without a null-terminating character      <br />&#160;&#160;&#160; int result = WideCharToMultiByte(CP_UTF8, 0, (LPCWSTR) wstrTest1, 2, strTest1, sizeof(strTest1), NULL, NULL); </em></p>  <p><em>&#160;&#160;&#160; // Result: 2 (Success) strTest1: 2 characters long without null-terminated      <br />&#160;&#160;&#160; printf(&quot;Result: %d\n&quot;, result);       <br />&#160;&#160;&#160; printf(&quot;Converted: %s\n&quot;, strTest1); </em></p>  <p><em>&#160;&#160;&#160; // Case 2: Parse all characters, which are larger than the destination buffer      <br />&#160;&#160;&#160; result = WideCharToMultiByte(CP_UTF8, 0, (LPCWSTR) wstrTest1, 10, strTest1, sizeof(strTest1), NULL, NULL); </em></p>  <p><em>&#160;&#160;&#160; // Result: 0 (Fail) strTest1: 9 characters long without null-terminated      <br />&#160;&#160;&#160; printf(&quot;Result: %d\n&quot;, result);       <br />&#160;&#160;&#160; printf(&quot;Converted: %s\n&quot;, strTest1); </em></p>  <p>From these two code examples, it illustrates that both successful and unsuccessful execution can result in non-null terminated strings.&#160; In the first code example, WideCharToMultiByte is asked to process two characters without a trailing null character.&#160; WideCharToMultiByte successfully converts the first two characters, but does not terminate the output string with a null character.&#160; This case is somewhat acceptable as &quot;garbage in, garbage out&quot; principle applies.</p>  <p>However, the second case is worse. Destination buffer is not large enough to hold translated data.&#160; WideCharToMultiByte fails correctly by returning 0, but destination buffer is nevertheless filled with data without a null trailing character.&#160; If destination buffer is used without checking return value, a non-null terminating string will propagate through subsequent use of the string.</p>  <p>Some developers are aware of this issue, and they have an elegant way of handling the return value.&#160; They add a null character to the destination buffer at the index indicated by the return value.&#160; </p>  <p><em>&#160;&#160;&#160; wchar_t wstrTest1[] = L&quot;123456789&quot;;      <br />&#160;&#160;&#160; char strTest1[9]; </em></p>  <p><em>&#160;&#160;&#160; // Parse 2 characters without a null-terminating character      <br />&#160;&#160;&#160; int result = WideCharToMultiByte(CP_UTF8, 0, (LPCWSTR) wstrTest1, 2, strTest1, sizeof(strTest1), NULL, NULL);</em></p>  <p><em>&#160;&#160;&#160; // Some developers add this check      <br />&#160;&#160;&#160; strTest1[result] = NULL; </em></p>  <p><em>&#160;&#160;&#160; // Result: 2 (Success) strTest1: 2 characters long and null-terminated      <br />&#160;&#160;&#160; printf(&quot;Result: %d\n&quot;, result);       <br />&#160;&#160;&#160; printf(&quot;Converted: %s\n&quot;, strTest1); </em></p>  <p>When WideCharToMultiByte fails, it returns 0, and strTest1[0] is set to NULL.&#160; It is a reasonable outcome because failed execution should return an empty string.&#160; On the other hand,&#160; When WideCharToMultiByte succeeds, it returns the number of characters written to the destination buffer. strTest1[result] means that a null character is appended to the return string.</p>  <p>The above code works very elegantly in most cases, except a boundary case.&#160; It is always the boundary case, isn’t it?&#160; It has a subtle non-exploitable buffer overflow bug.&#160; What happen if the return value is equal to number of characters allowed in the destination buffer?&#160; </p>  <p>When that occurs, a null character is written past the end of the destination buffer.&#160; It can potentially destabilize the system and cause denial of service. There are many ways to fix this issue.&#160; A fix is to add a conditional statement to handle where return value is equal to the number of characters in the buffer.&#160; Another fix is to increase the size of destination buffer by 1 to accommodate the extra null character.&#160; This example illustrates the first fix.</p>  <p><em>&#160;&#160;&#160; wchar_t wstrTest1[] = L&quot;123456789&quot;;      <br />&#160;&#160;&#160; char strTest1[10]; </em></p>  <p><em>&#160;&#160;&#160; // Parse all characters      <br />&#160;&#160;&#160; int result = WideCharToMultiByte(CP_UTF8, 0, (LPCWSTR) wstrTest1, 10, strTest1, sizeof(strTest1), NULL, NULL);       <br />&#160;&#160;&#160; if (result == sizeof(strTest1))       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; strTest1[result-1] = NULL;       <br />&#160;&#160;&#160; else       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; strTest1[result] = NULL; </em></p>  <p><em>&#160;&#160;&#160; // Result: 10 (Success) strTest1: 9 characters long and null-terminated      <br />&#160;&#160;&#160; printf(&quot;Result: %d\n&quot;, result);       <br />&#160;&#160;&#160; printf(&quot;Converted: %s\n&quot;, strTest1); </em></p>  <h3><strong>Developer Checklist</strong></h3>  <p>1. Always check the return values of MultiByteToWideChar and WideCharToMultiByte.&#160; If not, code reviewers should file them as bugs    <br />2. Adopt the suggested fixes if you don’t need any custom error handling</p>  <p>&#160;</p>  <p>There are more common pitfalls related to using these two APIs.&#160; It will be in the next installment.</p>]]></content:encoded>
    </item>
    <item>
      <title>My favorite security blogs and podcasts</title>
      <link>https://docs.microsoft.com/archive/blogs/esiu/my-favorite-security-blogs-and-podcasts</link>
      <pubDate>Thu, 23 Oct 2008 21:18:04 GMT</pubDate>
      <dc:creator><![CDATA[Eugene Security]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/esiu/2008/10/23/my-favorite-security-blogs-and-podcasts/</guid>
      <description><![CDATA[What are your favorite security blogs or podcasts?&#160; Here are mine.&#160; Please leave yours in...]]></description>
      <content:encoded><![CDATA[<p>What are your favorite security blogs or podcasts?&#160; Here are mine.&#160; Please leave yours in the comment section.</p>  <h2><strong>Podcasts</strong></h2>  <p>Security Now (<a title="https://www.grc.com/securitynow.htm" href="https://www.grc.com/securitynow.htm">https://www.grc.com/securitynow.htm</a>)</p>  <p>CNet Security Bites (<a href="https://securitybites.cnet.com">https://securitybites.cnet.com</a>)</p>  <h2><strong>Blogs</strong></h2>  <p>Schneier on Security    <br /><a href="https://feeds.feedburner.com/schneier/fulltext">https://feeds.feedburner.com/schneier/fulltext</a></p>  <p>Security Vulnerability Research &amp; Defense    <br /><a href="https://blogs.technet.com/swi/rss.xml">https://blogs.technet.com/swi/rss.xml</a></p>  <p>The Microsoft Security Response Center (MSRC)    <br /><a href="https://blogs.technet.com/msrc/rss.xml">https://blogs.technet.com/msrc/rss.xml</a></p>  <p>Dark Reading    <br /><a href="https://www.darkreading.com/">https://www.darkreading.com/</a></p>  <p>The Security Development Lifecycle    <br /><a href="https://blogs.msdn.com/sdl/rss.xml">https://blogs.msdn.com/sdl/rss.xml</a></p>  <p>Microsoft Hackers blog    <br /><a title="https://blogs.msdn.com/hackers/" href="https://blogs.msdn.com/hackers/">https://blogs.msdn.com/hackers/</a></p> Mark Curphey - SecurityBuddha.com   <br /><a href="https://securitybuddha.com/feed/">https://securitybuddha.com/feed/</a>]]></content:encoded>
    </item>
    <item>
      <title>“Out of Band” security patch MS08-067</title>
      <link>https://docs.microsoft.com/archive/blogs/esiu/out-of-band-security-patch-ms08-067</link>
      <pubDate>Thu, 23 Oct 2008 20:52:18 GMT</pubDate>
      <dc:creator><![CDATA[Eugene Security]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/esiu/2008/10/23/out-of-band-security-patch-ms08-067/</guid>
      <description><![CDATA[Out of Band security patch MS08-067 is released today.&#160; Microsoft strives to keep our monthly...]]></description>
      <content:encoded><![CDATA[<p>Out of Band security patch MS08-067 is released today.&#160; Microsoft strives to keep our monthly patch Tuesday release cycle so that enterprise administrators can plan ahead for their testing and deployment.&#160; When out of band is released, it must be very urgent due to serious ramifications or presence of known exploits in the wild.&#160; You should install this patch as soon as possible.</p>  <p>MS08-067 fixes a vulnerability in the Server service that would allow malicious code to remotely execute code on successfully exploited computers.</p>  <p>This impacts all versions of Windows.&#160; Bug severity is critical for platforms other than Windows Vista and Windows Server 2008.&#160; For Vista and Windows Server 2008, its severity is important.</p>  <p>For more information, please refer to <a href="https://www.microsoft.com/technet/security/bulletin/ms08-oct.mspx">https://www.microsoft.com/technet/security/bulletin/ms08-oct.mspx</a>.</p>]]></content:encoded>
    </item>
    <item>
      <title>What is unique about patch Tuesday of October 2008?</title>
      <link>https://docs.microsoft.com/archive/blogs/esiu/what-is-unique-about-patch-tuesday-of-october-2008</link>
      <pubDate>Wed, 15 Oct 2008 19:48:00 GMT</pubDate>
      <dc:creator><![CDATA[Eugene Security]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/esiu/2008/10/15/what-is-unique-about-patch-tuesday-of-october-2008/</guid>
      <description><![CDATA[Technorati Tags: Security  Every second Tuesday, MSRC releases security patches for Microsoft...]]></description>
      <content:encoded><![CDATA[<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:ac22d348-01a4-4c76-abdd-2a0a127e6406" class="wlWriterEditableSmartContent">Technorati Tags: <a href="https://technorati.com/tags/Security" rel="tag">Security</a></div>  <p>Every second Tuesday, MSRC releases security patches for Microsoft products that have fixed vulnerabilities.&#160; The best is to have no patches for patch Tuesdays, and many administrators can take a break from installing patches across their server farms and enterprise desktops.&#160; It will be a long road ahead before Microsoft can get to zero security bugs for all products.</p>  <p>Before reaching the elusive zero-bug milestone, Microsoft continues to innovate on security bug release process to better inform the public of those vulnerabilities so that administrators can make informed decisions on their patching schedule.</p>  <p>From <a href="https://blogs.technet.com/swi/archive/2008/10/14/bulletin-severity-for-october-bulletins.aspx" mce_href="https://blogs.technet.com/swi/archive/2008/10/14/bulletin-severity-for-october-bulletins.aspx">October 2008 patch Tuesday</a>, <a href="https://technet.microsoft.com/en-us/security/cc998259.aspx" mce_href="https://technet.microsoft.com/en-us/security/cc998259.aspx">Exploitability Index</a> will be associated with each bulletin.&#160; Exploitability index is a number from 1 to 3 to indicating exploitability, with 1 being the most serious in terms of exploitability.</p>  <div align="center">   <table class="class" border="1" cellspacing="0" cellpadding="2" width="414" align="center"><tbody>       <tr>         <td class="class" valign="top" width="200"><strong>Exploitability Index Assessment</strong></td>          <td class="class" valign="top" width="212"><strong>Short Definition</strong></td>       </tr>        <tr>         <td class="class" valign="top" width="200">1</td>          <td class="class" valign="top" width="212">Consistent exploit code likely</td>       </tr>        <tr>         <td class="class" valign="top" width="200">2</td>          <td class="class" valign="top" width="212">Inconsistent exploit code likely</td>       </tr>        <tr>         <td class="class" valign="top" width="200">3</td>          <td class="class" valign="top" width="212">Functioning exploit code unlikely</td>       </tr>     </tbody></table> </div>  <p mce_keep="true">&#160;</p>  <p>Here is another data point to measure risk and decide on priority of patching for any given bulletins.</p>]]></content:encoded>
    </item>
    <item>
      <title>&lt;script&gt;alert()&lt;/script&gt;</title>
      <link>https://docs.microsoft.com/archive/blogs/esiu/scriptalertscript</link>
      <pubDate>Tue, 25 Mar 2008 20:14:00 GMT</pubDate>
      <dc:creator><![CDATA[Eugene Security]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/esiu/2008/03/25/scriptalertscript/</guid>
      <description><![CDATA[&lt;script&gt;alert()&lt;/script&gt;]]></description>
      <content:encoded><![CDATA[&lt;script&gt;alert()&lt;/script&gt;]]></content:encoded>
    </item>
    <item>
      <title>Troubleshooting Networking and IPSec Issues</title>
      <link>https://docs.microsoft.com/archive/blogs/esiu/troubleshooting-networking-and-ipsec-issues</link>
      <pubDate>Mon, 05 Nov 2007 03:30:00 GMT</pubDate>
      <dc:creator><![CDATA[Eugene Security]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/esiu/2007/11/05/troubleshooting-networking-and-ipsec-issues/</guid>
      <description><![CDATA[&nbsp;
I had a very strange networking issue last weekend.&nbsp; After connecting to corpnet via...]]></description>
      <content:encoded><![CDATA[<BLOCKQUOTE>
<P mce_keep="true">&nbsp;</P></BLOCKQUOTE>
<P>I had a very strange networking issue last weekend.&nbsp; After connecting to corpnet via VPN and direct hookup, I was able to ping all remote servers, but was not able to do anything, such as web browsing and remote desktop.&nbsp; It was not the first time that I faced this issue, and helpdesk told me that IPSec settings may have messed up.</P>
<P>The following set of commands has helped me flush settings related to networking and IPSec, and restored my corpnet connection in both situations.</P>
<P>1. Launch a DOS command prompt<BR>2. netsh int ip reset all<BR>3. netsh winsock reset<BR>4. ipconfig /flushdns<BR>5. nbtstat -RR<BR>6. gpupdate /force</P>
<P>Akin to "Ctrl-Atl-Del" of your networking settings, this series of commands should flush IP interface, DNS, Winsock, NetBIOS and group policy settings.&nbsp;</P>
<P>Good luck to troubleshooting your networking and IPSec issues.</P>]]></content:encoded>
    </item>
    <item>
      <title>ASP.NET ValidateRequest does not mitigate XSS completely</title>
      <link>https://docs.microsoft.com/archive/blogs/esiu/asp-net-validaterequest-does-not-mitigate-xss-completely</link>
      <pubDate>Fri, 19 Oct 2007 17:26:17 GMT</pubDate>
      <dc:creator><![CDATA[Eugene Security]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/esiu/2007/10/19/asp-net-validaterequest-does-not-mitigate-xss-completely/</guid>
      <description><![CDATA[As a security guy, I can safely say that there is no magic bullet to mitigate any security problems...]]></description>
      <content:encoded><![CDATA[<p>As a security guy, I can safely say that there is no magic bullet to mitigate any security problems completely, and cross-site scripting(XSS) bugs are not exceptions.&nbsp; Since ASP.NET 1.1, ValidateRequest can be configured in web.config to check and reject dangerous inputs, and <a href="https://msdn2.microsoft.com/en-us/library/system.web.httprequestvalidationexception(vs.80).aspx">HttpRequestValidationException</a>&nbsp;is thrown before the input is even processed by your code.&nbsp; For example, <em>&lt;script&gt;</em> would be caught by ValidateRequest.</p> <p>During my security reviews, I routinely find that many web applications turn on ValidateRequest (It is on by default), and do not follow XSS mitigation techniques, such as output encoding by HTMLEncode or <a href="https://msdn2.microsoft.com/en-us/library/aa973813.aspx">ACE Anti-XSS library</a>.&nbsp; They believe that ValidateRequest can fix all XSS problems.</p> <p>However, there are a couple downsides of relying on ValidateRequest:<br>1. ValidateRequest may miss some crafty inputs.&nbsp; Please read MS07-040 for <a href="https://www.microsoft.com/technet/security/Bulletin/MS07-040.mspx">a recent MSRC fix</a> on ValidateRequest.</p> <p>2. ValidateRequest cannot be turned on in all cases, as characters that trigger XSS may also be needed in valid user scenarios.&nbsp; For example, AJAX transmits XML blobs between client and server,&nbsp;but ValidateRequest will throw <a href="https://msdn2.microsoft.com/en-us/library/system.web.httprequestvalidationexception(vs.80).aspx">HttpRequestValidationException</a>&nbsp;as it contains "dangerous" characters, such as &lt; and &gt;.&nbsp; Exchange 2007 OWA cannot run with ValidateRequest turned on.&nbsp; </p> <p>In conclusion, ValidateRequest should be turned on if it does not block valid user scenarios.&nbsp; However, even with ValidateRequest turned on, it MUST not be regarded as a sure-fire way to mitigate XSS.&nbsp; Please read <a title="https://msdn2.microsoft.com/en-us/library/ms998274.aspx" href="https://msdn2.microsoft.com/en-us/library/ms998274.aspx">https://msdn2.microsoft.com/en-us/library/ms998274.aspx</a>&nbsp;for full XSS mitigation.</p>]]></content:encoded>
    </item>
    <item>
      <title>Read Office Files as ZIP</title>
      <link>https://docs.microsoft.com/archive/blogs/esiu/read-office-files-as-zip</link>
      <pubDate>Fri, 19 Oct 2007 15:33:38 GMT</pubDate>
      <dc:creator><![CDATA[Eugene Security]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/esiu/2007/10/19/read-office-files-as-zip/</guid>
      <description><![CDATA[It is interesting to me that Office 2007 Metro formats can be broken down as a ZIP file.&nbsp; To...]]></description>
      <content:encoded><![CDATA[<p>It is interesting to me that Office 2007 Metro formats can be broken down as a ZIP file.&nbsp; To see this in action, you can pick an Office 2007 Metro file, such as XLSX and DOCX, and rename its extension with ZIP.&nbsp; Then open the renamed file with WINZIP.&nbsp; You will see that Office 2007 content is laid out neatly in a ZIP.&nbsp; Check out this sample picture.</p> <p>Let me illustrate a picture from <a title="https://www.devx.com/MicrosoftISV/Article/34934" href="https://www.devx.com/MicrosoftISV/Article/34934">https://www.devx.com/MicrosoftISV/Article/34934</a></p> <p><img alt="" src="https://assets.devx.com/destination/19678.jpg" border="0"></p>]]></content:encoded>
    </item>
    <item>
      <title>Is Microsoft Office Isolated Conversion Environment(MOICE) mocha on ice?</title>
      <link>https://docs.microsoft.com/archive/blogs/esiu/is-microsoft-office-isolated-conversion-environmentmoice-mocha-on-ice</link>
      <pubDate>Fri, 19 Oct 2007 14:49:38 GMT</pubDate>
      <dc:creator><![CDATA[Eugene Security]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/esiu/2007/10/19/is-microsoft-office-isolated-conversion-environmentmoice-mocha-on-ice/</guid>
      <description><![CDATA[MOICE may sound like mocha on ice, but it is really a strong dark espresso shot offered by Office...]]></description>
      <content:encoded><![CDATA[<p>MOICE may sound like mocha on ice, but it is really a strong dark espresso shot offered by Office TWC team to jolt up security.&nbsp; Microsoft Office Isolated Conversion Environment (MOICE) is a new security tool that helps protect Office users from malicious documents. Office team strives to&nbsp;enhance their security, and&nbsp;MOICE is another evidence that they are committed to security.&nbsp; </p> <p>MOICE converts Office 2003 documents of supported types to Office 2007 XML formats (Metro) in an isolated environment.&nbsp; Granted that the same conversion engine is used in the Microsoft Office Compatibility Pack, how does running in an isolated environment enhance security?</p> <p>Think of wearing pads and helmets while playing American football.&nbsp; It is the nature of American football that players will get hit hard.&nbsp; Wearing pads and helmets does not change the nature of American football, but it does&nbsp;lessen the chance&nbsp;of inflicting serious injuries on players</p> <p>The same principle applies to MOICE.&nbsp; MOICE does not alter the fact that malicious documents are out there to&nbsp;exploit vulnerable machines.&nbsp; MOICE is like a pad and a helmet to reduce the chance of Office softwares being being exploited.&nbsp; Exploitation may still happen, but isolated environment provided by MOICE reduces possible damages inflicted by the malicious documents.</p> <p>In addition, applying MOICE is as simple as putting on a pad and a helmet.&nbsp; MOICE can be installed as a recommended update via Microsoft Update, and execution of ASSOC&nbsp;replaces regular rendering with MOICE.&nbsp; For more information, please visit <a title="https://support.microsoft.com/kb/935865" href="https://support.microsoft.com/kb/935865">https://support.microsoft.com/kb/935865</a>.</p> <p>Last but not least, MOICE is not a replacement of properly patching your machines.&nbsp; Now, go patch your machines, enjoy a cup of MOICE and most importantly,&nbsp;don't click on suspicious Office documents via emails.</p>]]></content:encoded>
    </item>
  </channel>
</rss>