<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title><![CDATA[[SecurityRatty] tag: properly]]></title>
    <link>http://securityratty.com/tag/properly</link>
    <description></description>
    <pubDate>Tue, 05 Aug 2008 20:16:14 +0000</pubDate>
    <generator>iRatty Engine</generator>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <item>
      <title><![CDATA[Boston Court's Meddling With 'Full Disclosure' Is Unwelcome]]></title>
      <link>http://securityratty.com/article/b65bde3bbcffdced12efa1287ce8e1e0</link>
      <guid>http://securityratty.com/article/b65bde3bbcffdced12efa1287ce8e1e0</guid>
      <description><![CDATA[In eerily similar cases in the Netherlands and the United States, courts have recently grappled with the computer-security norm of &quot;full disclosure,&quot; asking whether researchers should be permitted to...]]></description>
      <content:encoded><![CDATA[<p>
In eerily similar cases in the Netherlands and the United States, courts have recently grappled with the computer-security norm of "full disclosure," asking whether researchers should be permitted to disclose details of a fare-card vulnerability that allows people to ride the subway for free.
</p><p>
The "Oyster card" used on the <a href="http://www.schneier.com/essay-229.html">London Tube</a> was at issue in the Dutch case, and a similar fare card used on the <a href="http://blog.wired.com/27bstroke6/2008/08/injunction-requ.html">Boston "T"</a> was the center of the U.S. case. The Dutch court got it right, and the American court, in Boston, <a href="http://blog.wired.com/27bstroke6/2008/08/computer-scient.html ">got it wrong</a> from the start -- despite facing an open-and-shut case of First Amendment prior restraint.
</p><p>
The U.S. court has since <a href="http://blog.wired.com/27bstroke6/2008/08/federal-judge-t.html ">seen the error</a> of its ways -- but the damage is done. The MIT security researchers who were prepared to discuss their Boston findings at the DefCon security conference were <a href="http://blog.wired.com/27bstroke6/2008/08/eff-to-appeal-r.html ">prevented</a> from giving their talk.
</p><p>
The <a href="http://www.schneier.com/essay-146.html">ethics</a> of <a href="http://www.schneier.com/crypto-gram-0111.html#1">full disclosure</a> are intimately familiar to those of us in the computer-security field.  Before full disclosure became the norm, researchers would quietly disclose vulnerabilities to the vendors -- who would routinely ignore them. Sometimes vendors would even threaten researchers with legal action if they disclosed the vulnerabilities. 
</p><p>
Later on, researchers started disclosing the existence of a vulnerability but not the details.  Vendors responded by denying the security holes' existence, or calling them just theoretical.  It wasn't until full disclosure became the norm that vendors began consistently fixing vulnerabilities quickly.  Now that vendors routinely patch vulnerabilities, researchers generally give them advance notice to allow them to patch their systems before the vulnerability is published.  But even with this "responsible disclosure" protocol, it's the threat of disclosure that motivates them to patch their systems.  Full disclosure <a href="http://www.eff.org/files/filenode/MBTA_v_Anderson/letter081208.pdf">is the mechanism</a> (.pdf) by which computer security improves.
</p><p>
Outside of computer security, secrecy is much more the norm.  Some security communities, like locksmiths, behave much like medieval guilds, divulging the secrets of their profession only to those within it.  These communities <a href="http://news.cnet.com/8301-1009_3-10002138-83.html?tag=mncol">hate</a> <a href="http://www.slate.com/id/2195862/">open</a> <a href="http://www.theglobeandmail.com/servlet/story/RTGAM.20080711.wlpicking11/EmailBNStory/lifeMain/">research</a>, and have <a href="http://www.schneier.com/crypto-gram-0302.html#1">responded</a> with <a href="http://www.crypto.com/papers/kiss.html">surprising vitriol</a> to <a href="http://www.crypto.com/papers/flattery.html">researchers</a> who have found serious vulnerabilities in <a href="http://www.wired.com/culture/lifestyle/news/2004/09/64987">bicycle locks</a>, <a href="http://www.crypto.com/papers/safelocks.pdf">combination safes</a> (.pdf), <a href="http://www.crypto.com/masterkey.html">master-key systems</a> and <a href="http://blog.wired.com/27bstroke6/2008/08/medeco-locks-cr.html">many</a> other <a href="http://en.wikipedia.org/wiki/Lock_bumping">security devices</a>.  
</p><p>
Researchers have received a similar reaction from other communities more used to secrecy than openness.  Researchers -- sometimes <a href="http://compsci.ca/blog/lanschool-threatens-compscica-with-legal-actions/">young students</a> -- who discovered and published flaws in copyright-protection schemes, <a href="http://www.freedom-to-tinker.com/?p=1265">voting-machine security</a> and now wireless access cards have all suffered recriminations and sometimes lawsuits for not keeping the vulnerabilities secret.  When Christopher Soghoian created a website allowing people to print fake airline boarding passes, he got <a href="http://www.schneier.com/blog/archives/2006/11/forge_your_own.html">several unpleasant visits</a> from the FBI.
</p><p>
This preference for secrecy comes from confusing a vulnerability with information <em>about</em> that vulnerability.  Using <a href="http://www.schneier.com/crypto-gram-0205.html#1">secrecy as a security measure</a> is fundamentally fragile.  It assumes that the bad guys don't do their own security research.  It assumes that no one else will find the same vulnerability.  It assumes that information won't leak out even if the research results are suppressed.  These assumptions are all incorrect.
</p><p>
The problem isn't the researchers; it's the products themselves.  Companies will only design security as good as what their customers know to ask for.  Full disclosure helps customers evaluate the security of the products they buy, and educates them in how to ask for better security.  The Dutch court got it exactly right when it <a href="http://zoeken.rechtspraak.nl/resultpage.aspx?snelzoeken=true&searchtype=ljn&ljn=BD7578&u_ljn=BD7578">wrote</a>: "Damage to NXP is not the result of the publication of the article but of the production and sale of a chip that appears to have shortcomings."
</p><p>
In a world of forced secrecy, vendors make inflated claims about their products, vulnerabilities don't get fixed, and customers are no wiser.  Security research is stifled, and security technology doesn't improve.  The only beneficiaries are the bad guys.
</p><p>
If you'll forgive the analogy, the ethics of full disclosure parallel the ethics of not paying kidnapping ransoms.  We all know why we don't pay kidnappers: It encourages more kidnappings.  Yet in every kidnapping case, there's someone -- a spouse, a parent, an employer -- with a good reason why, in this one case, we should make an exception. 
</p><p>
The reason we want researchers to publish vulnerabilities is because that's how security improves. But in every case there's someone -- the Massachusetts Bay Transit Authority, the locksmiths, an election machine manufacturer -- who argues that, in this one case, we should make an exception.
</p><p>
We shouldn't.  The benefits of responsibly publishing attacks greatly outweigh the potential harm. Disclosure encourages companies to build security properly rather than relying on shoddy design and secrecy, and discourages them from promising security based on their ability to threaten researchers.  It's how we learn about security, and how we improve future security.
</p>
<p>---</p>

<p>
<em>Bruce Schneier is Chief Security Technology Officer of BT Global Services and author of </em><a href="http://www.schneier.com/bf.html">Beyond Fear: Thinking Sensibly About Security in an Uncertain World</a><em>. You can read more of his writings on his <a href="http://www.schneier.com/">website</a>.</em>
</p><br style="clear: both;"/>
  <img alt="" style="border: 0; height:1px; width:1px;" border="0" src="http://www.pheedo.com/img.phdo?i=bca653e99d30d29fe90a724af1243458" height="1" width="1"/>
<img src="http://www.pheedo.com/feeds/tracker.php?i=bca653e99d30d29fe90a724af1243458" style="display: none;" border="0" height="1" width="1" alt=""/><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/wired/politics/privacy?a=FBzLDK"><img src="http://feeds.feedburner.com/~f/wired/politics/privacy?i=FBzLDK" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/wired/politics/privacy?a=I2e1pk"><img src="http://feeds.feedburner.com/~f/wired/politics/privacy?i=I2e1pk" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/wired/politics/privacy?a=znpbtk"><img src="http://feeds.feedburner.com/~f/wired/politics/privacy?i=znpbtk" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/wired/politics/privacy?a=bR68YK"><img src="http://feeds.feedburner.com/~f/wired/politics/privacy?i=bR68YK" border="0"></img></a>
 <a href="http://feeds.wired.com/~f/wired/politics/security?a=AMJk5K"><img src="http://feeds.wired.com/~f/wired/politics/security?i=AMJk5K" border="0"></img></a> <a href="http://feeds.wired.com/~f/wired/politics/security?a=ZF5tzk"><img src="http://feeds.wired.com/~f/wired/politics/security?i=ZF5tzk" border="0"></img></a> <a href="http://feeds.wired.com/~f/wired/politics/security?a=iWkWjk"><img src="http://feeds.wired.com/~f/wired/politics/security?i=iWkWjk" border="0"></img></a> <a href="http://feeds.wired.com/~f/wired/politics/security?a=f5xemK"><img src="http://feeds.wired.com/~f/wired/politics/security?i=f5xemK" border="0"></img></a> </div><img src="http://feeds.feedburner.com/~r/wired/politics/privacy/~4/370586608" height="1" width="1"/><img src="http://feeds.wired.com/~r/wired/politics/security/~4/370586609" height="1" width="1"/>]]></content:encoded>
      <pubDate>Thu, 21 Aug 2008 00:00:00 +0000</pubDate>
      <category domain="http://securityratty.com/tag/computer security improves">computer security improves</category>
      <category domain="http://securityratty.com/tag/security improves">security improves</category>
      <category domain="http://securityratty.com/tag/computer security">computer security</category>
      <category domain="http://securityratty.com/tag/security">security</category>
      <category domain="http://securityratty.com/tag/mit security researchers">mit security researchers</category>
      <category domain="http://securityratty.com/tag/security devices">security devices</category>
      <category domain="http://securityratty.com/tag/security holes">security holes</category>
      <category domain="http://securityratty.com/tag/disclosure">disclosure</category>
      <category domain="http://securityratty.com/tag/security properly">security properly</category>
      <source url="http://feeds.wired.com/~r/wired/politics/security/~3/370586609/securitymatters_0821">Boston Court's Meddling With 'Full Disclosure' Is Unwelcome</source>
    </item>
    <item>
      <title><![CDATA[Serializable XmlDocument]]></title>
      <link>http://securityratty.com/article/94c84cd2ea7a6ea71c9712991d27722d</link>
      <guid>http://securityratty.com/article/94c84cd2ea7a6ea71c9712991d27722d</guid>
      <description><![CDATA[It's surprising that XmlDocument isn't marked [Serializable], because it's very natural to serialize one into a stream. I wanted to put an object into ASP.NET ViewState the other day, and quickly ran...]]></description>
      <content:encoded><![CDATA[<p>It&#39;s surprising that XmlDocument isn&#39;t marked [Serializable], because it&#39;s very natural to serialize one into a stream. I wanted to put an object into ASP.NET ViewState the other day, and quickly ran into this roadblock, because part of the object included an XmlDocument, which is not serializable. A quick search revealed that most people deal with this problem by storing a string instead. Indeed, that was where I started, but I quickly realized that there are multiple places in my code where I want to do this sort of thing, and I don&#39;t want to have to mess with it in each data structure that contains an XmlDocument.</p>
<p>So I put together a simple class that holds an XmlDocument and implements ISerializable and called it SerializableXmlDocument. I&#39;m sharing the source code here in the hopes that</p>
<blockquote>
<p>a) somebody will find it useful, and</p>
<p>b) somebody smarter than I am will point out how I screwed it up and help me make it better.</p>
</blockquote>
<p>SerializableXmlDocument includes implicit conversion operators to make it easy to convert to/from an XmlDocument. It holds the actual document in a property called Value. This &quot;isomorph&quot; pattern is one that I picked up from <a href="http://www.pluralsight.com/community/blogs/craig/default.aspx" target="_blank">Craig</a>.</p>
<p>While writing this code, I also wrote a helpful extension method for getting a byte array out of a MemoryStream that is exactly the length of the data written to the stream so far (CopyUpToSeekPointer). So don&#39;t go looking in the docs for MemoryStream for this method :) This is obviously not the most efficient way to consume bytes written to a MemoryStream since it copies the data into a new byte array, but it&#39;s very convenient in many scenarios.</p>
<p>Here is SerializableXmlDocument.cs:</p>
<pre class="csharpcode"><span class="kwrd">using</span> System;<br /><span class="kwrd">using</span> System.Runtime.Serialization;<br /><span class="kwrd">using</span> System.Xml;<br /><span class="kwrd">using</span> System.IO;<br /><br /><span class="kwrd">namespace</span> Pluralsight.Samples<br />{<br />    [Serializable]<br />    <span class="kwrd">public</span> <span class="kwrd">class</span> SerializableXmlDocument : ISerializable<br />    {<br />        <span class="kwrd">public</span> SerializableXmlDocument() { }<br />        <span class="kwrd">public</span> SerializableXmlDocument(XmlDocument <span class="kwrd">value</span>)<br />        {<br />            <span class="kwrd">this</span>.Value = <span class="kwrd">value</span>;<br />        }<br /><br />        <span class="kwrd">public</span> XmlDocument Value { get; set; }<br /><br />        <span class="preproc">#region</span> ISerializable implementation<br />        <span class="kwrd">public</span> SerializableXmlDocument(SerializationInfo info,<br />                                       StreamingContext context)<br />        {<br />            <span class="kwrd">byte</span>[] serializedData = (<span class="kwrd">byte</span>[])info.GetValue(<span class="str">&quot;doc&quot;</span>,<br />                <span class="kwrd">typeof</span>(<span class="kwrd">byte</span>[]));<br />            <span class="kwrd">if</span> (<span class="kwrd">null</span> != serializedData)<br />                <span class="kwrd">this</span>.Value = Deserialize(serializedData);<br />        }<br /><br />        <span class="kwrd">public</span> <span class="kwrd">void</span> GetObjectData(SerializationInfo info,<br />                                  StreamingContext context)<br />        {<br />            <span class="kwrd">byte</span>[] serializedData = <span class="kwrd">null</span>;<br />            <span class="kwrd">if</span> (<span class="kwrd">null</span> != Value)<br />                serializedData = Serialize(Value);<br />            info.AddValue(<span class="str">&quot;doc&quot;</span>, serializedData);<br />        }<br />        <span class="preproc">#endregion</span><br /><br />        <span class="preproc">#region</span> <span class="kwrd">implicit</span> conversion to/from XmlDocument<br />        <span class="kwrd">public</span> <span class="kwrd">static</span> <span class="kwrd">implicit</span> <span class="kwrd">operator</span> SerializableXmlDocument(<br />            XmlDocument doc)<br />        {<br />            <span class="kwrd">return</span> <span class="kwrd">new</span> SerializableXmlDocument(doc);<br />        }<br />        <span class="kwrd">public</span> <span class="kwrd">static</span> <span class="kwrd">implicit</span> <span class="kwrd">operator</span> XmlDocument(<br />            SerializableXmlDocument sdoc)<br />        {<br />            <span class="kwrd">return</span> sdoc.Value;<br />        }<br />        <span class="preproc">#endregion</span><br /><br />        <span class="preproc">#region</span> Xml serialization helper methods<br />        <span class="kwrd">private</span> <span class="kwrd">static</span> <span class="kwrd">byte</span>[] Serialize(XmlDocument doc)<br />        {<br />            MemoryStream stream = <span class="kwrd">new</span> MemoryStream();<br />            doc.Save(stream);<br />            <span class="kwrd">return</span> stream.CopyUpToSeekPointer();<br />        }<br />        <span class="kwrd">private</span> <span class="kwrd">static</span> XmlDocument Deserialize(<span class="kwrd">byte</span>[] serializedData)<br />        {<br />            XmlDocument doc = <span class="kwrd">new</span> XmlDocument();<br />            doc.Load(<span class="kwrd">new</span> MemoryStream(serializedData, <span class="kwrd">false</span>));<br />            <span class="kwrd">return</span> doc;<br />        }<br />        <span class="preproc">#endregion</span><br />    }<br />}</pre>
<p>...and here&#39;s the CopyUpToSeekPointer extension method for MemoryStream:</p>
<pre class="csharpcode"><span class="kwrd">using</span> System;<br /><span class="kwrd">using</span> System.IO;<br /><br /><span class="kwrd">namespace</span> Pluralsight.Samples<br />{<br />    <span class="kwrd">public</span> <span class="kwrd">static</span> <span class="kwrd">class</span> MemoryStreamExtensionMethods<br />    {<br />        <span class="kwrd">public</span> <span class="kwrd">static</span> <span class="kwrd">byte</span>[] CopyUpToSeekPointer(<br />            <span class="kwrd">this</span> MemoryStream stream)<br />        {<br />            <span class="rem">// copy only the part of the buffer</span><br />            <span class="rem">// that contains the serialized document</span><br />            <span class="kwrd">long</span> length = stream.Position;<br />            <span class="kwrd">byte</span>[] buffer = stream.GetBuffer();<br />            <span class="kwrd">byte</span>[] result = <span class="kwrd">new</span> <span class="kwrd">byte</span>[length];<br />            <span class="kwrd">for</span> (<span class="kwrd">int</span> i = 0; i &lt; length; ++i)<br />                result[i] = buffer[i];<br />            <span class="kwrd">return</span> result;<br />        }<br />    }<br />}</pre>
<p>...and here&#39;s a sample object that uses SerializableXmlDocument:</p>
<pre class="csharpcode"><span class="kwrd">using</span> System;<br /><br /><span class="kwrd">namespace</span> Pluralsight.Samples<br />{<br />    [Serializable]<br />    <span class="kwrd">public</span> <span class="kwrd">class</span> Item<br />    {<br />        <span class="kwrd">public</span> <span class="kwrd">string</span> Name { get; set; }<br />        <span class="kwrd">public</span> SerializableXmlDocument Data { get; set; }<br /><br />        <span class="kwrd">public</span> <span class="kwrd">void</span> Print()<br />        {<br />            Console.WriteLine(<span class="str">&quot;Name: {0}&quot;</span>, Name);<br />            Console.WriteLine(Data.Value.OuterXml);<br />        }<br />    }<br />}</pre>
<p>...and here&#39;s a sample program that creates an instance of Item, serializes it, then deserializes it, printing diagnostics along the way to show that it&#39;s working properly.</p>
<pre class="csharpcode"><span class="kwrd">using</span> System;<br /><span class="kwrd">using</span> System.Xml;<br /><span class="kwrd">using</span> System.Runtime.Serialization.Formatters.Binary;<br /><span class="kwrd">using</span> System.IO;<br /><span class="kwrd">using</span> Pluralsight.Samples;<br /><br /><span class="kwrd">class</span> DemoProgram<br />{<br />    <span class="kwrd">static</span> <span class="kwrd">void</span> Main(<span class="kwrd">string</span>[] args)<br />    {<br />        XmlDocument doc = <span class="kwrd">new</span> XmlDocument();<br />        doc.LoadXml(<span class="str">&quot;&lt;root&gt;&lt;child&gt;text&lt;/child&gt;&lt;/root&gt;&quot;</span>);<br /><br />        Item item = <span class="kwrd">new</span> Item<br />        {<br />            Name = <span class="str">&quot;Testing 123&quot;</span>,<br />            Data = doc,<br />        };<br /><br />        <span class="rem">// print object before serialization</span><br />        item.Print();<br /><br />        BinaryFormatter formatter = <span class="kwrd">new</span> BinaryFormatter();<br />        MemoryStream stream = <span class="kwrd">new</span> MemoryStream();<br />        formatter.Serialize(stream, item);<br /><br />        <span class="kwrd">byte</span>[] serializedItem = stream.CopyUpToSeekPointer();<br /><br />        Console.WriteLine(<span class="str">&quot;Serialized data (base64): {0}&quot;</span>,<br />            Convert.ToBase64String(serializedItem));<br /><br />        item = (Item)formatter.Deserialize(<br />            <span class="kwrd">new</span> MemoryStream(serializedItem, <span class="kwrd">false</span>));<br /><br />        <span class="rem">// print object after deserialization</span><br />        item.Print();<br />    }<br />}</pre>
<p>Here&#39;s the output of the previous sample program:</p>
<p><a href="http://www.pluralsight.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/keith/sample_2D00_output_5F00_2.jpg"><img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" alt="sample-output" src="http://www.pluralsight.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/keith/sample_2D00_output_5F00_thumb.jpg" width="422" border="0" height="214" /></a>&nbsp;</p>
<p>Flame away!</p><div style="clear:both;"></div><img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=52538" width="1" height="1">]]></content:encoded>
      <pubDate>Mon, 18 Aug 2008 22:58:00 +0000</pubDate>
      <category domain="http://securityratty.com/tag/public class item">public class item</category>
      <category domain="http://securityratty.com/tag/public">public</category>
      <category domain="http://securityratty.com/tag/public void getobjectdata">public void getobjectdata</category>
      <category domain="http://securityratty.com/tag/public static byte">public static byte</category>
      <category domain="http://securityratty.com/tag/xmldocument">xmldocument</category>
      <category domain="http://securityratty.com/tag/return doc">return doc</category>
      <category domain="http://securityratty.com/tag/return">return</category>
      <category domain="http://securityratty.com/tag/static byte">static byte</category>
      <category domain="http://securityratty.com/tag/public class">public class</category>
      <source url="http://www.pluralsight.com/community/blogs/keith/archive/2008/08/18/serializable-xmldocument.aspx">Serializable XmlDocument</source>
    </item>
    <item>
      <title><![CDATA[Active Directory database basics: Performing an offline defrag]]></title>
      <link>http://securityratty.com/article/e4ab300dcef4edec3478151937a6380b</link>
      <guid>http://securityratty.com/article/e4ab300dcef4edec3478151937a6380b</guid>
      <description><![CDATA[A fundamental understanding of how the Active Directory database works is important for Windows admins. Learn how the database sits in the AD architecture, as well as how to properly defrag the...]]></description>
      <content:encoded><![CDATA[A fundamental understanding of how the Active Directory database works is important for Windows admins. Learn how the database sits in the AD architecture, as well as how to properly defrag the database for peak performance.<img src="http://feeds.feedburner.com/~r/WhatisEnterpriseItTipsAndExpertAdvice/~4/366115430" height="1" width="1"/>]]></content:encoded>
      <pubDate>Fri, 15 Aug 2008 16:51:46 +0000</pubDate>
      <category domain="http://securityratty.com/tag/database">database</category>
      <category domain="http://securityratty.com/tag/active directory database">active directory database</category>
      <category domain="http://securityratty.com/tag/database sits">database sits</category>
      <category domain="http://securityratty.com/tag/properly defrag">properly defrag</category>
      <category domain="http://securityratty.com/tag/windows admins">windows admins</category>
      <category domain="http://securityratty.com/tag/peak performance">peak performance</category>
      <category domain="http://securityratty.com/tag/architecture">architecture</category>
      <category domain="http://securityratty.com/tag/fundamental">fundamental</category>
      <source url="http://feeds.feedburner.com/~r/WhatisEnterpriseItTipsAndExpertAdvice/~3/366115430/0,289483,sid68_gci1325578,00.html">Active Directory database basics: Performing an offline defrag</source>
    </item>
    <item>
      <title><![CDATA[Privileged password management steps to success]]></title>
      <link>http://securityratty.com/article/0ba2e5415c9fc526533bd064859062b2</link>
      <guid>http://securityratty.com/article/0ba2e5415c9fc526533bd064859062b2</guid>
      <description><![CDATA[Privileged password management is a pain point at many financial services firms. They're costly, hard to tame and not always secured properly. In this tip, learn how to create the foundation for your...]]></description>
      <content:encoded><![CDATA[Privileged password management is a pain point at many financial services firms. They're costly, hard to tame and not always secured properly. In this tip, learn how to create the foundation for your privileged password management program.<img src="http://feeds.feedburner.com/~r/WhatisEnterpriseItTipsAndExpertAdvice/~4/365004786" height="1" width="1"/>]]></content:encoded>
      <pubDate>Thu, 14 Aug 2008 10:20:44 +0000</pubDate>
      <category domain="http://securityratty.com/tag/password management">password management</category>
      <category domain="http://securityratty.com/tag/password management program">password management program</category>
      <category domain="http://securityratty.com/tag/financial services firms">financial services firms</category>
      <category domain="http://securityratty.com/tag/pain">pain</category>
      <category domain="http://securityratty.com/tag/costly">costly</category>
      <category domain="http://securityratty.com/tag/foundation">foundation</category>
      <category domain="http://securityratty.com/tag/tip">tip</category>
      <category domain="http://securityratty.com/tag/tame">tame</category>
      <category domain="http://securityratty.com/tag/properly">properly</category>
      <source url="http://feeds.feedburner.com/~r/WhatisEnterpriseItTipsAndExpertAdvice/~3/365004786/0,289483,sid185_gci1325290,00.html">Privileged password management steps to success</source>
    </item>
    <item>
      <title><![CDATA[Using the ORDER BY clause of the SELECT query in SQL]]></title>
      <link>http://securityratty.com/article/d21f3e153ee7ea4053ffe296de842e24</link>
      <guid>http://securityratty.com/article/d21f3e153ee7ea4053ffe296de842e24</guid>
      <description><![CDATA[Learn how to use the ORDER BY clause of the SELECT query to specify the sequence of rows in this excerpt from &quot;SQL Queries for Mere Mortals: A Hands-On Guide to Data Manipulation in SQL, Second...]]></description>
      <content:encoded><![CDATA[Learn how to use the ORDER BY clause of the SELECT query to specify the sequence of rows in this excerpt from "SQL Queries for Mere Mortals: A Hands-On Guide to Data Manipulation in SQL, Second Edition."  You'll find out how to properly sort your results, along with how to save your SELECT statements.<img src="http://feeds.feedburner.com/~r/WhatisEnterpriseItTipsAndExpertAdvice/~4/364012399" height="1" width="1"/>]]></content:encoded>
      <pubDate>Wed, 13 Aug 2008 07:34:55 +0000</pubDate>
      <category domain="http://securityratty.com/tag/sql">sql</category>
      <category domain="http://securityratty.com/tag/select query">select query</category>
      <category domain="http://securityratty.com/tag/sql queries">sql queries</category>
      <category domain="http://securityratty.com/tag/mere mortals">mere mortals</category>
      <category domain="http://securityratty.com/tag/properly sort">properly sort</category>
      <category domain="http://securityratty.com/tag/data manipulation">data manipulation</category>
      <category domain="http://securityratty.com/tag/clause">clause</category>
      <category domain="http://securityratty.com/tag/hands-on guide">hands-on guide</category>
      <category domain="http://securityratty.com/tag/select statements">select statements</category>
      <source url="http://feeds.feedburner.com/~r/WhatisEnterpriseItTipsAndExpertAdvice/~3/364012399/0,295582,sid87_gci1321507,00.html">Using the ORDER BY clause of the SELECT query in SQL</source>
    </item>
    <item>
      <title><![CDATA[BlackHat Recap]]></title>
      <link>http://securityratty.com/article/bec2ea65daab94e0e7001ef1ba7b1b9a</link>
      <guid>http://securityratty.com/article/bec2ea65daab94e0e7001ef1ba7b1b9a</guid>
      <description><![CDATA[Another BlackHat has come and gone. As usual, it was a very busy week juggling customer meetings, recruiting, conference planning, vendor parties, and, oh yes, the actual BlackHat presentations. I had...]]></description>
      <content:encoded><![CDATA[<p>Another BlackHat has come and gone.  As usual, it was a very busy week juggling customer meetings, recruiting, conference planning, vendor parties, and, oh yes, the actual BlackHat presentations.  I had a fantastic time catching up with old friends and finally getting the opportunity to meet more of the <a href="http://n0where.org/security-twits/">Security Twits</a> and others in the security community.  I didn&#8217;t submit a talk this year, but nevertheless, fake Dan Kaminsky was still excited to see me.</p>
<p><a href="http://www.veracode.com/blog/wp-content/uploads/2008/08/chris_2742966251_1b47297b33_b.jpg"><center><img src="http://www.veracode.com/blog/wp-content/uploads/2008/08/chris_2742966251_1b47297b33_b-300x225.jpg" alt="" title="chris_2742966251_1b47297b33_b" width="300" height="225" class="aligncenter size-medium wp-image-215 photoborder" /></center></a></p>
<p>My favorite talk, as expected, was the Sotirov/Dowd talk on <a href="http://taossa.com/archive/bh08sotirovdowd.pdf">How To Impress Girls With Browser Memory Protection Bypasses</a>.  The attack is a conceptually simple, yet completely reliable technique for exploiting vulnerabilities in web browsers.  Of course, the media has <a href="http://searchsecurity.techtarget.com/news/article/0,289142,sid14_gci1324395,00.html">sensationalized </a> the impact of their findings, but ultimately, this is still significant as far as browser-based exploits are concerned.  It&#8217;s worth mentioning that part of the technique allowing them to load a .NET DLL at an arbitrary location under Vista was reliant on an implementation bug wherein the OS disables ASLR if the version in the .NET COR header was below a certain value.  However, the address space spraying and stack spraying techniques are likely to be extended to other platforms utilizing similar memory protection mechanisms.  </p>
<p>As for the girls?  I can report first-hand that the ladies at TAO on Wednesday night were hanging on <a href="http://twitter.com/alexsotirov">Alex</a>&#8217;s every word.  They were particularly impressed when he whipped out the laptop for a live demo.  Unfortunately, none of the dozen iPhone owners in the immediate vicinity thought to snap a picture (too busy Twittering).  Oh well.  </p>
<p>I also enjoyed Hovav Shacham&#8217;s talk on return-oriented programming.  Simply put, he described a generalization of the return-to-libc shellcode approach with the intent to demonstrate that one could achieve Turing-complete computation using &#8220;found code&#8221; in process images.  By chaining together series of mini-computations ending in return (RET) instructions, it was possible to build higher-level programming constructs such as branches and loops.  The nature of the x86 instruction set provides some flexibility because instructions are interpreted differently depending on how you align the instruction pointer (i.e. the old shellcode trick of searching the process image for any JMP EBX instruction and using that as your EIP).  In RISC architectures such as SPARC, however, you don&#8217;t have that luxury; if your %pc isn&#8217;t aligned properly you get a bus error.  So it was quite interesting to see that they were able to extend the concept to RISC.  The practicality of the attack technique is limited by the fact that the shellcode is tuned to a particular binary image &#8212; if the shellcode was built using instructions extrapolated from glibc 2.3.5, it won&#8217;t work for a system running glibc 2.4.  </p>
<p>I thought Scott Stender&#8217;s talk on <a href="http://isecpartners.com/files/iSEC%20Partners%20-%20Concurrency%20Attacks%20in%20Web%20Applications.pdf">Concurrency Attacks in Web Applications</a> was interesting as well.  In a nutshell, spewing thousands of simultaneous requests at web application transactions that are not thread-safe can create interesting problems.  In the presentation, Scott ran his demo against a VM running on the attack machine.  I found myself wondering how effective the same attack would be over the Internet &#8212; would it be significantly less reliable (or not at all)?  Race conditions are generally easier to exploit locally than remotely due to more predictable execution conditions.  Certainly this is an under-tested vulnerability class though.</p>
<p>One presentation I wasn&#8217;t able to attend but want to follow up on is <a href="http://twitter.com/nate_mcfeters">Nate McFeters</a>, John Heasman, and Rob Carter&#8217;s talk which discussed the GIFAR attack I&#8217;ve been hearing so much about lately.  The gist is that you can create a file that is both a valid GIF and a valid JAR, then use some Java applet tricks to initiate HTTP requests on behalf of the victim.  </p>
<p>Finally, the <a href="http://pwnie-awards.org/2008/">Pwnie Awards</a> didn&#8217;t fail to disappoint.  Drama ensued over the Most Overhyped award, but at least this year some of the winners showed up to claim their awards!  <a href="http://twitter.com/halvarflake">Halvar</a> rapping Symantec lyrics was also quite memorable.</p>
<p>All in all, a fun and informative week, but as usual, I was relieved to get the hell out of Vegas and head home on Friday morning. </p>
<p>P.S. For a much more entertaining BlackHat/Defcon Recap, read <a href="http://securityuncorked.net/2008/08/anecdotes-blackhat-defcon/">Jennifer Jabbusch&#8217;s account</a> of the week&#8217;s events.  It&#8217;s my favorite one so far!</p>
]]></content:encoded>
      <pubDate>Tue, 12 Aug 2008 18:43:18 +0000</pubDate>
      <category domain="http://securityratty.com/tag/favorite">favorite</category>
      <category domain="http://securityratty.com/tag/favorite talk">favorite talk</category>
      <category domain="http://securityratty.com/tag/talk">talk</category>
      <category domain="http://securityratty.com/tag/sotirovdowd talk">sotirovdowd talk</category>
      <category domain="http://securityratty.com/tag/scott stenders talk">scott stenders talk</category>
      <category domain="http://securityratty.com/tag/completely reliable technique">completely reliable technique</category>
      <category domain="http://securityratty.com/tag/reliable">reliable</category>
      <category domain="http://securityratty.com/tag/attack">attack</category>
      <category domain="http://securityratty.com/tag/technique">technique</category>
      <source url="http://www.veracode.com/blog/?p=202">BlackHat Recap</source>
    </item>
    <item>
      <title><![CDATA[BlackHat Recap]]></title>
      <link>http://securityratty.com/article/6b779e65a6ad790dd8e631057208ff77</link>
      <guid>http://securityratty.com/article/6b779e65a6ad790dd8e631057208ff77</guid>
      <description><![CDATA[Another BlackHat has come and gone. As usual, it was a very busy week juggling customer meetings, recruiting, conference planning, vendor parties, and, oh yes, the actual BlackHat presentations. I had...]]></description>
      <content:encoded><![CDATA[<p>Another BlackHat has come and gone.  As usual, it was a very busy week juggling customer meetings, recruiting, conference planning, vendor parties, and, oh yes, the actual BlackHat presentations.  I had a fantastic time catching up with old friends and finally getting the opportunity to meet more of the <a href="http://n0where.org/security-twits/">Security Twits</a> and others in the security community.  I didn&#8217;t submit a talk this year, but nevertheless, <a href="http://flickr.com/photos/fakedankaminsky/">fake Dan Kaminsky</a> was still excited to see me.</p>
<p><a href="http://www.veracode.com/blog/wp-content/uploads/2008/08/chris_2742966251_1b47297b33_b.jpg"><center><img src="http://www.veracode.com/blog/wp-content/uploads/2008/08/chris_2742966251_1b47297b33_b-300x225.jpg" alt="" title="chris_2742966251_1b47297b33_b" width="300" height="225" class="aligncenter size-medium wp-image-215 photoborder" /></center></a></p>
<p>My favorite talk, as expected, was the Sotirov/Dowd talk on <a href="http://taossa.com/archive/bh08sotirovdowd.pdf">How To Impress Girls With Browser Memory Protection Bypasses</a>.  The attack is a conceptually simple, yet completely reliable technique for exploiting vulnerabilities in web browsers.  Of course, the media has <a href="http://searchsecurity.techtarget.com/news/article/0,289142,sid14_gci1324395,00.html">sensationalized</a> the impact of their findings, but ultimately, this is still significant as far as browser-based exploits are concerned (here is a <a href="http://blogs.zdnet.com/Bott/?p=513">more accurate report</a>).  It&#8217;s worth mentioning that part of the technique allowing them to load a .NET DLL at an arbitrary location under Vista was reliant on an implementation bug wherein the OS disables ASLR if the version in the .NET COR header was below a certain value.  However, the address space spraying and stack spraying techniques are likely to be extended to other platforms utilizing similar memory protection mechanisms.  </p>
<p>As for the girls?  I can report first-hand that the ladies at TAO on Wednesday night were hanging on <a href="http://twitter.com/alexsotirov">Alex</a>&#8217;s every word.  They were particularly impressed when he whipped out the laptop for a live demo.  Unfortunately, none of the dozen iPhone owners in the immediate vicinity thought to snap a picture (too busy Twittering).  Oh well.  </p>
<p>I also enjoyed Hovav Shacham&#8217;s talk on return-oriented programming.  Simply put, he described a generalization of the return-to-libc shellcode approach with the intent to demonstrate that one could achieve Turing-complete computation using &#8220;found code&#8221; in process images.  By chaining together series of mini-computations ending in return (RET) instructions, it was possible to build higher-level programming constructs such as branches and loops.  The nature of the x86 instruction set provides some flexibility because instructions are interpreted differently depending on how you align the instruction pointer (i.e. the old shellcode trick of searching the process image for any JMP EBX instruction and using that as your EIP).  In RISC architectures such as SPARC, however, you don&#8217;t have that luxury; if your %pc isn&#8217;t aligned properly you get a bus error.  So it was quite interesting to see that they were able to extend the concept to RISC.  The practicality of the attack technique is limited by the fact that the shellcode is tuned to a particular binary image &#8212; if the shellcode was built using instructions extrapolated from glibc 2.3.5, it won&#8217;t work for a system running glibc 2.4.  </p>
<p>I thought Scott Stender&#8217;s talk on <a href="http://isecpartners.com/files/iSEC%20Partners%20-%20Concurrency%20Attacks%20in%20Web%20Applications.pdf">Concurrency Attacks in Web Applications</a> was interesting as well.  In a nutshell, spewing thousands of simultaneous requests at web application transactions that are not thread-safe can create interesting problems.  In the presentation, Scott ran his demo against a VM running on the attack machine.  I found myself wondering how effective the same attack would be over the Internet &#8212; would it be significantly less reliable (or not at all)?  Race conditions are generally easier to exploit locally than remotely due to more predictable execution conditions.  Certainly this is an under-tested vulnerability class though.</p>
<p>One presentation I wasn&#8217;t able to attend but want to follow up on is <a href="http://twitter.com/nate_mcfeters">Nate McFeters</a>, John Heasman, and Rob Carter&#8217;s talk which discussed the GIFAR attack I&#8217;ve been hearing so much about lately.  The gist is that you can create a file that is both a valid GIF and a valid JAR, then use some Java applet tricks to initiate HTTP requests on behalf of the victim.  </p>
<p>Finally, the <a href="http://pwnie-awards.org/2008/">Pwnie Awards</a> didn&#8217;t fail to disappoint.  Drama ensued over the Most Overhyped award, but at least this year some of the winners showed up to claim their awards!  <a href="http://twitter.com/halvarflake">Halvar</a> rapping Symantec lyrics was also quite memorable.</p>
<p>All in all, a fun and informative week, but as usual, I was relieved to get the hell out of Vegas and head home on Friday morning. </p>
<p>P.S. For a much more entertaining BlackHat/Defcon Recap, read <a href="http://securityuncorked.net/2008/08/anecdotes-blackhat-defcon/">Jennifer Jabbusch&#8217;s account</a> of the week&#8217;s events.  It&#8217;s my favorite one so far!</p>
]]></content:encoded>
      <pubDate>Tue, 12 Aug 2008 18:43:18 +0000</pubDate>
      <category domain="http://securityratty.com/tag/favorite">favorite</category>
      <category domain="http://securityratty.com/tag/favorite talk">favorite talk</category>
      <category domain="http://securityratty.com/tag/talk">talk</category>
      <category domain="http://securityratty.com/tag/sotirovdowd talk">sotirovdowd talk</category>
      <category domain="http://securityratty.com/tag/scott stenders talk">scott stenders talk</category>
      <category domain="http://securityratty.com/tag/completely reliable technique">completely reliable technique</category>
      <category domain="http://securityratty.com/tag/reliable">reliable</category>
      <category domain="http://securityratty.com/tag/attack">attack</category>
      <category domain="http://securityratty.com/tag/technique">technique</category>
      <source url="http://www.veracode.com/blog/2008/08/blackhat-recap/">BlackHat Recap</source>
    </item>
    <item>
      <title><![CDATA[Sorry CharlieCard, Your Security Model Is Broken]]></title>
      <link>http://securityratty.com/article/f11af6f7a39f4309ead15fadb8a610f7</link>
      <guid>http://securityratty.com/article/f11af6f7a39f4309ead15fadb8a610f7</guid>
      <description><![CDATA[It sure seems like the CharlieCard , which is used by the Boston subway system, has a serious security weakness. The MBTA has sued 3 MIT students to stop them from giving a planned talk at DEFCON...]]></description>
      <content:encoded><![CDATA[<p>It sure seems like the <a href="http://www.mbta.com/fares_and_passes/charlie/">CharlieCard</a>, which is used by the Boston subway system, has a serious security weakness.  The MBTA has <a href="http://www.theregister.co.uk/2008/08/09/defcon_speakers_sued/">sued 3 MIT students</a> to stop them from giving a planned  talk at DEFCON.</p>
<p>Doesn&#8217;t this seem backwards to you?  Shouldn&#8217;t the MBTA be suing the vendor who sold them the flawed system?  Security problems go away by mandating independant security testing before a product is accepted, not by trying to get security researchers to be quiet.  This is a good example of how the reactive approach doesn&#8217;t work.  The flaws are still in the system and suing researchers has just <a href="http://en.wikipedia.org/wiki/Streisand_effect">shined a bright light</a> on them.</p>
<p><strong>Update 08/09/2008 6:00pm EST:</strong></p>
<p>The <a href="http://www.computerworld.com/action/article.do?command=viewArticleBasic&amp;articleId=9112160&amp;intsrc=news_ts_head">EFF is appealing the injunction</a> which is blocking the students from speaking about the results of their testing.</p>
<p>A telling quote from Kurt Opsahl, staff attorney at the EFF gets to the heart of the issue:</p>
<blockquote><p>&#8220;Courts have found that the First Amendment covers these things. We believe that this is a protected speech activity. When you discuss security issues, if you are telling the truth, that is something that should be protected.&#8221;</p></blockquote>
<p>Apparently the MBTA has known about this problem since at least March, 2008 when a graduate student from the University of Virginia announced <a href="http://www.boston.com/business/articles/2008/03/06/t_card_has_security_flaw_says_researcher/">he was able to break the encryption system</a>.</p>
<p>The U of VA researcher gave an interview where he described why security by obscurity is not a valid security approach for a cryptosystem:</p>
<blockquote><p><strong>Q:</strong> What are your thoughts on security by obscurity? Is NXP using this method of protection?</p>
<p><strong>A:</strong> Security-through-obscurity hardly ever works. The lack of proper peer-review often even hurts the security of the system. Our Mifare work discovered several vulnerabilities that could be fixed without increasing the cost of the cards. NXP did for a long time rely on obscurity for the security of some of their products, but now decided against this outdated design approach and instead bases the security of newer RFID cards on publicly scrutinized cryptography and independent evaluations.</p>
<p><strong>Q:</strong> Can you explain &#8220;Kerckhoffs Principle&#8221; and why it applies to your work?</p>
<p><strong>A:</strong> Kerchoff, who lived in the 19th century, observed that keeping anything secret is really hard. So instead of relying on the secrecy of your whole system, it would a lot easier to only rely on the secrecy of a small secret key. Security systems should hence be publicly known and analyzed, and only the key should be secret. When properly realised for RFID cards, Kerchoff&#8217;s principle means that by analyzing their own cards, thieves cannot compromise your cards. This is contrary to our Mifare work, where we only analyzed a few copies of the the secret algorithm that is found in all cards and were consequently able affect the security of all the other billion cards out there.</p></blockquote>
<p>The MBTA not only accepted a security system which relied on security by obscurity but once accepting this flawed model must try to maintain this obscurity with the court system.</p>
<p>The documents detailing the presentation are <a href="http://www.tgdaily.com/content/view/38817/108/">here.</a></p>
]]></content:encoded>
      <pubDate>Sat, 09 Aug 2008 10:57:40 +0000</pubDate>
      <category domain="http://securityratty.com/tag/security">security</category>
      <category domain="http://securityratty.com/tag/security researchers">security researchers</category>
      <category domain="http://securityratty.com/tag/valid security approach">valid security approach</category>
      <category domain="http://securityratty.com/tag/system">system</category>
      <category domain="http://securityratty.com/tag/encryption system">encryption system</category>
      <category domain="http://securityratty.com/tag/boston subway system">boston subway system</category>
      <category domain="http://securityratty.com/tag/discuss security issues">discuss security issues</category>
      <category domain="http://securityratty.com/tag/court system">court system</category>
      <category domain="http://securityratty.com/tag/security systems">security systems</category>
      <source url="http://www.veracode.com/blog/2008/08/sorry-charliecard-your-security-model-is-broken/">Sorry CharlieCard, Your Security Model Is Broken</source>
    </item>
    <item>
      <title><![CDATA[Hacking Mifare Transport Cards]]></title>
      <link>http://securityratty.com/article/3a7dba1bb2685c0c225ca69eddd304c7</link>
      <guid>http://securityratty.com/article/3a7dba1bb2685c0c225ca69eddd304c7</guid>
      <description><![CDATA[London's Oyster card has been cracked , and the final details will become public in October. NXP Semiconductors, the Philips spin-off that makes the system, lost a court battle to prevent the...]]></description>
      <content:encoded><![CDATA[<p>London's Oyster card has been <a href="http://www.guardian.co.uk/technology/2008/jun/26/hitechcrime.oystercards">cracked</a>, and the final details will become public in October. NXP Semiconductors, the Philips spin-off that makes the system, lost a court battle to prevent the researchers from publishing. People might be able to use this information to ride for free, but the sky won't be falling. And the publication of this serious vulnerability actually makes us all safer in the long run.</p>

<p>Here's the story. Every Oyster card has a radio-frequency identification chip that communicates with readers mounted on the ticket barrier. That chip, the "Mifare Classic" chip, is used in hundreds of other transport systems as well — Boston, Los Angeles, Brisbane, Oslo, Amsterdam, Taipei, Shanghai, Rio de Janeiro — and as an access pass in thousands of companies, schools, hospitals, and government buildings around Britain and the rest of the world.</p>

<p>The security of Mifare Classic is terrible. This is not an exaggeration; it's kindergarten cryptography. Anyone with any security experience would be embarrassed to put his name to the design. NXP attempted to deal with this embarrassment by keeping the design secret.</p>

<p>The group that <a href="http://www.ru.nl/ds/research/rfid/">broke</a> Mifare Classic is from Radboud University Nijmegen in the Netherlands. They <a href="http://technology.timesonline.co.uk/tol/news/tech_and_web/article4184481.ece">demonstrated the attack</a> by riding the Underground for free, and by <a href="http://www.youtube.com/watch?v=NW3RGbQTLhE">breaking into</a> a building. Their two papers (one is already <a href="http://www.cs.ru.nl/~flaviog/publications/Attack.MIFARE.pdf">online</a>) will be published at <a href="http://www.scc.rhul.ac.uk/CARDIS/">two</a> <a href="http://www.isac.uma.es/esorics08/">conferences</a> this autumn.</p>

<p>The second paper is the one that NXP <a href="http://news.cnet.com/8301-10784_3-9985886-7.html?hhTest=1">sued</a> <a href="http://www.secureidnews.com/news/2008/07/10/nxp-sues-to-prevent-hackers-from-releasing-mifare-flaws/">over</a>. They called disclosure of the attack "irresponsible," warned that it will cause "immense damages," and claimed that it "will jeopardize the security of assets protected with systems incorporating the Mifare IC." The <a href="http://zoeken.rechtspraak.nl/resultpage.aspx?snelzoeken=true&amp;searchtype=ljn&amp;ljn=BD7578&amp;u_ljn=BD7578">Dutch court</a> would have none of it:  "Damage to NXP is not the result of the publication of the article but of the production and sale of a chip that appears to have shortcomings."</p>

<p>Exactly right. More generally, the notion that secrecy supports security is <a href="http://www.schneier.com/crypto-gram-0205.html#1">inherently flawed</a>. Whenever you see an organization claiming that design secrecy is necessary for security — in ID cards, in voting machines, in airport security — it invariably means that its security is lousy and it has no choice but to hide it. Any competent cryptographer would have designed Mifare's security with an open and public design.</p>

<p>Secrecy is fragile. Mifare's security was based on the belief that no one would discover how it worked; that's why NXP had to muzzle the Dutch researchers. But that's just wrong. Reverse-engineering isn't hard. <a href="http://computerworld.com/action/article.do?command=viewArticleBasic&amp;taxonomyName=spam__malware_and_vulnerabilities&amp;articleId=9078038&amp;taxonomyId=85">Other</a> <a href="http://www.cs.virginia.edu/~evans/pubs/usenix08/">researchers</a> <a href="http://eprint.iacr.org/2008/166">had</a> <a href="http://staff.science.uva.nl/~delaat/sne-2006-2007/p41/Report.pdf">already</a> <a href="http://www.translink.nl/media/bijlagen/nieuws/TNO_ICT_-_Security_Analysis_OV-Chipkaart_-_public_report.pdf">exposed</a> Mifare's lousy security. A Chinese company even <a href="http://www.fmsh.com/english/product_chipcard.php?product=FM11RF32">sells</a> a <a href="http://www.fmsh.com/english/products/FM11RF32_FS_ENG.pdf">compatible chip</a>. Is there any doubt that the bad guys already know about this, or will soon enough?</p>

<p>Publication of this attack might be expensive for NXP and its customers, but it's good for security overall. Companies will only design security as good as their customers know to ask for. NXP's security was so bad because customers didn't know how to evaluate security: either they don't know what questions to ask, or didn't know enough to distrust the marketing answers they were given. This court ruling encourages companies to build security properly rather than relying on shoddy design and secrecy, and discourages them from promising security based on their ability to threaten researchers.</p>

<p>It's unclear how this break will affect <a href="http://www.tfl.gov.uk/">Transport for London</a>. Cloning takes only a few seconds, and the thief only has to brush up against someone carrying a legitimate Oyster card. But it requires an RFID reader and a small piece of software which, while feasible for a techie, are too complicated for the average fare dodger. The police are likely to quickly arrest anyone who tries to sell cloned cards on any scale. TfL <a href="http://news.cnet.co.uk/software/0,39029694,49297810,00.htm">promises</a> <a href="http://www.techradar.com/news/world-of-tech/tfl-responds-to-oyster-hack-runling-428238">to</a> turn off any cloned cards within 24 hours, but that will hurt the innocent victim who had his card cloned more than the thief.</p>

<p>The vulnerability is far more serious to the companies that use Mifare Classic as an access pass. It would be very interesting to know how NXP presented the system's security to them.</p>

<p>And while these attacks only pertain to the Mifare Classic chip, it makes me suspicious of the entire product line. NXP sells a more secure chip and has another on the way, but given the number of basic cryptography mistakes NXP made with Mifare Classic, one has to wonder whether the "more secure" versions will be sufficiently so.</p>

<p>This essay <a href="http://www.guardian.co.uk/technology/2008/aug/07/hacking.security">originally appeared</a> in the <i>Guardian</i>.</p><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/schneier/fulltext?a=lyT29K"><img src="http://feeds.feedburner.com/~f/schneier/fulltext?i=lyT29K" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/schneier/fulltext?a=3HhhnK"><img src="http://feeds.feedburner.com/~f/schneier/fulltext?i=3HhhnK" border="0"></img></a>
</div>]]></content:encoded>
      <pubDate>Thu, 07 Aug 2008 02:07:02 +0000</pubDate>
      <category domain="http://securityratty.com/tag/mifare">mifare</category>
      <category domain="http://securityratty.com/tag/design">design</category>
      <category domain="http://securityratty.com/tag/design secrecy">design secrecy</category>
      <category domain="http://securityratty.com/tag/mifare classic chip">mifare classic chip</category>
      <category domain="http://securityratty.com/tag/secrecy">secrecy</category>
      <category domain="http://securityratty.com/tag/security">security</category>
      <category domain="http://securityratty.com/tag/secrecy supports security">secrecy supports security</category>
      <category domain="http://securityratty.com/tag/security properly">security properly</category>
      <category domain="http://securityratty.com/tag/chip">chip</category>
      <source url="http://www.schneier.com/blog/archives/2008/08/hacking_mifare.html">Hacking Mifare Transport Cards</source>
    </item>
    <item>
      <title><![CDATA[Five Microsoft Exchange Server backup worst practices]]></title>
      <link>http://securityratty.com/article/1da6637b8c7091aca3b5c9604d5e4417</link>
      <guid>http://securityratty.com/article/1da6637b8c7091aca3b5c9604d5e4417</guid>
      <description><![CDATA[Are you backing up Microsoft Exchange Server properly? Be aware of these five Exchange Server backup worst practices to avoid any disaster recovery...]]></description>
      <content:encoded><![CDATA[Are you backing up Microsoft Exchange Server properly? Be aware of these five Exchange Server backup worst practices to avoid any disaster recovery mishaps.<img src="http://feeds.feedburner.com/~r/WhatisEnterpriseItTipsAndExpertAdvice/~4/357552853" height="1" width="1"/>]]></content:encoded>
      <pubDate>Tue, 05 Aug 2008 20:16:14 +0000</pubDate>
      <category domain="http://securityratty.com/tag/disaster recovery mishaps">disaster recovery mishaps</category>
      <category domain="http://securityratty.com/tag/aware">aware</category>
      <category domain="http://securityratty.com/tag/avoid">avoid</category>
      <source url="http://feeds.feedburner.com/~r/WhatisEnterpriseItTipsAndExpertAdvice/~3/357552853/0,295582,sid43_gci1324173,00.html">Five Microsoft Exchange Server backup worst practices</source>
    </item>
  </channel>
</rss>
