<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://msmvps.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Tales from the Crypto</title><link>http://msmvps.com/blogs/alunj/default.aspx</link><description>Alun Jones (&lt;a href="https://mvp.support.microsoft.com/default.aspx/profile=90B5EE92-9F9B-4B79-8288-60A3E648C8D9"&gt;Security MVP&lt;/a&gt;) writes about security, cryptography, SSL, PKI, and pretty much anything else that bothers him enough.</description><dc:language>en</dc:language><generator>CommunityServer 2008 SP1 (Build: 30619.63)</generator><item><title>The difference between liking and hating UAC?</title><link>http://msmvps.com/blogs/alunj/archive/2008/06/10/1633852.aspx</link><pubDate>Wed, 11 Jun 2008 04:17:51 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1633852</guid><dc:creator>Alun Jones</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/alunj/rsscomments.aspx?PostID=1633852</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/alunj/commentapi.aspx?PostID=1633852</wfw:comment><comments>http://msmvps.com/blogs/alunj/archive/2008/06/10/1633852.aspx#comments</comments><description>&lt;p&gt;&lt;/p&gt; &lt;p&gt;Totally unscientifically, I have carried out a poll of people who like UAC (okay, a few security geeks like myself), and those who hate UAC - mostly my wife.&lt;/p&gt; &lt;p&gt;Something struck me as both a surprising common factor, and also a rather obvious explanation of why the two opinions are so polarised.&lt;/p&gt; &lt;p&gt;[Note for the pedants - yes, I&amp;#39;m using the term &amp;quot;UAC&amp;quot; here to mean &amp;quot;Elevation&amp;quot; - there are other portions of UAC that I&amp;#39;m not discussing, such as Protected Mode in Internet Explorer, and so on.]&lt;/p&gt; &lt;h3&gt;We use UAC for different purposes&lt;/h3&gt; &lt;h4&gt;UAC-lovers&lt;/h4&gt; &lt;p&gt;The UAC-lover seems to have &amp;#39;got least-privilege religion&amp;#39; at least several years ago, and runs most of the time as a standard, restricted user. Most UAC-lovers do not seem to be &amp;quot;Administering the system all the time&amp;quot; types.&lt;/p&gt; &lt;p&gt;As a result, they use UAC as a means to elevate privilege on those occasions when they need to do something administrative, or when they need to run a program that has not yet been coded to run with least privilege.&lt;/p&gt; &lt;p&gt;When they&amp;#39;re doing something administrative, they&amp;#39;re comparing the UAC &amp;quot;Over-the-shoulder&amp;quot; (OTS) prompt against the methods that used to be available to them:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Log off and back on - to do this, you have to close out all your applications, saving the documents you were working on, log off, log on as the administrator account, do the admin thing, log off, and log back on as your regular account.  &lt;li&gt;Fast User Switching (FUS) - not available on a domain, and anything &lt;u&gt;but&lt;/u&gt; fast. The only advantage it has over logging out and back in is that you maintain your application state in the restricted user - the documents are still open, the programs are still running, etc.  &lt;li&gt;RunAs - this used to be how you elevate in Windows prior to Vista, but now you have to find another tool to do the same job for you, because RunAs won&amp;#39;t elevate your session even if you provide it with administrator credentials. [I use Jesper&amp;#39;s Elevate Explorer Tools from the Windows Server 2008 Security Resource Kit.]&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Given these as alternatives, it&amp;#39;s no wonder that UAC and OTS elevation prompts are considered better.&lt;/p&gt; &lt;h4&gt;UAC-haters&lt;/h4&gt; &lt;p&gt;The UAC-hater is fundamentally disinterested in least-privilege, at least as it applies to users. Least-privilege is an obvious and good programming strategy, a program shouldn&amp;#39;t ask for more privileges than it needs, but to this user, that&amp;#39;s something that the programmers should care about.&lt;/p&gt; &lt;p&gt;This user wants to be instantly, and automatically, elevated whenever she calls on a feature that would require it. This is how she&amp;#39;s used to running the computer, because she&amp;#39;s always called on to do administrative tasks - and she&amp;#39;s careful and knowledgeable enough to have avoided causing damage through doing so.&lt;/p&gt; &lt;p&gt;To this user, UAC is an impediment to that process - now, instead of merely running the administrative tool she wants, she has to ask to be allowed to run it as administrator.&lt;/p&gt; &lt;p&gt;With UAC set to automatically elevate for administrators, however, she&amp;#39;s far happier. Still not perfectly happy, because there are still occasions when she has to ask specifically to run elevated - when the program is capable of running as non-administrator, for instance. Such programs run as non-administrator by default, and don&amp;#39;t elevate themselves. These programs are irritating to such a user.&lt;/p&gt; &lt;p&gt;Typically, such programs appear to break when run with UAC disabled (or set to automatically elevate) - they fail to run, sometimes with bizarre error messages, often just crashing through failure to execute some action that the developers expected would succeed.&lt;/p&gt; &lt;p&gt;Other causes of breakage could be when an application is registered to a user, and the licence information is written to a file in the Program Files folder - when you&amp;#39;re running under UAC&amp;#39;s protection, files in the Program Files folder may be virtualised (i.e. the program thinks it&amp;#39;s accessing the file in the Program Files folder, but it&amp;#39;s really accessing a file in the user&amp;#39;s home directory tree), and when you&amp;#39;re running elevated, those same file accesses are not virtualised.&lt;/p&gt; &lt;p&gt;So, voila, instant loss of licence information, saved settings, or any number of other files that the program expected to find in Program Files.&lt;/p&gt; &lt;h3&gt;&lt;/h3&gt; &lt;h3&gt;What can we learn from this?&lt;/h3&gt; &lt;p&gt;So, the message is clear - for installations with administrators who like the system to let them be administrators, don&amp;#39;t disable UAC, make UAC elevate silently for administrators instead.&lt;/p&gt; &lt;p&gt;This system works, too, for the restricted users. It allows them to operate as restricted users, except when they absolutely know they need to elevate. Over-the-shoulder elevation prompting is still available for them, should they need it.&lt;/p&gt; &lt;h3&gt;What still needs to be fixed?&lt;/h3&gt; &lt;p&gt;What this option doesn&amp;#39;t do is cover what appears to be Microsoft&amp;#39;s reason for creating the elevation prompts in the first place. Without UAC prompting at random points, the administrators in control of a system have no clear sign that they&amp;#39;ve just fired up &amp;quot;Mary Kate and Ashley&amp;#39;s Dance Party of the Century&amp;quot; only to be forced to run it as an administrator.&lt;/p&gt; &lt;p&gt;Even supposing you figure out that there&amp;#39;s a program you&amp;#39;re using which doesn&amp;#39;t adequately run in restricted user mode, or which doesn&amp;#39;t elevate itself where necessary, where can you go to get assistance from the developers of the application?&lt;/p&gt; &lt;p&gt;Call support?&lt;/p&gt; &lt;p&gt;Microsoft&amp;#39;s own support is an example of how off-putting such a process can be. Microsoft Money refused to update on one of our systems, and I eventually determined it was because the update needed to be elevated, but was expecting to find some files that were virtualised by UAC. It failed with a meaningless error message. To call support costs $25 for Microsoft to even pick up the phone - and if the support tech believes that this is an &amp;quot;advanced&amp;quot; issue, he may charge about ten times that much. Perhaps later, after they realise the problem is their own fault, Microsoft will refund you the money - but many small businesses and individual users don&amp;#39;t have that sort of money to loan to Microsoft, or other vendors.&lt;/p&gt; &lt;p&gt;So, is there any good way to persuade developers to quit their bone-headed &amp;quot;start with most privilege&amp;quot; behaviour? Maybe Visual Studio and compilation tools should refuse to run in an administrator session. Okay, so perhaps that&amp;#39;s not tenable, because there are development projects that do require you to be an administrator, because you&amp;#39;re developing something administrative - but what measure would make developers do the right thing for security (and for their users) naturally?&lt;/p&gt; &lt;p&gt;File and registry virtualisation appears to be a messy kludge on top of the sledge-hammer of UAC elevation, whose primary design goal appears to be to irritate end-users enough to persuade developers to stop doing the kind of things that requires virtualisation as a workaround, and the kind of things that requires administrator accounts in the first place.&lt;/p&gt; &lt;p&gt;Perhaps it&amp;#39;s time that, instead of kludging for these bad developers, Microsoft simply said &amp;quot;It stops. Now.&amp;quot; - if it&amp;#39;s not registered (at install time, or by manifest) as an administration tool, it doesn&amp;#39;t get administrative access - or virtualised access to HKLM or Program Files. Yes, that will mean admins will have two links to regedit, and similar tools - one to run in an administrator&amp;#39;s session, giving access to HKLM, another to run in their user&amp;#39;s session, giving access to HKCU.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1633852" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/alunj/archive/tags/General+Security/default.aspx">General Security</category><category domain="http://msmvps.com/blogs/alunj/archive/tags/Windows+Vista/default.aspx">Windows Vista</category><category domain="http://msmvps.com/blogs/alunj/archive/tags/What+my+wife+knows/default.aspx">What my wife knows</category><category domain="http://msmvps.com/blogs/alunj/archive/tags/UAC/default.aspx">UAC</category></item><item><title>Searching for Weak Debian / Ubuntu SSL Certificates</title><link>http://msmvps.com/blogs/alunj/archive/2008/05/22/1626252.aspx</link><pubDate>Fri, 23 May 2008 03:02:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1626252</guid><dc:creator>Alun Jones</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/alunj/rsscomments.aspx?PostID=1626252</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/alunj/commentapi.aspx?PostID=1626252</wfw:comment><comments>http://msmvps.com/blogs/alunj/archive/2008/05/22/1626252.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://msmvps.com/blogs/alunj/WindowsLiveWriter/ContributingtotheDebianmess_F477/Tuxkeys_2.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="200" alt="Tuxkeys" src="http://msmvps.com/blogs/alunj/WindowsLiveWriter/ContributingtotheDebianmess_F477/Tuxkeys_thumb.png" width="200" align="left" border="0" /&gt;&lt;/a&gt; I&amp;#39;ve seen a number of people promote packages that have shipped for Debian and Ubuntu, which allow users to scan their collected keys - OpenSSH or OpenSSL or OpenVPN, to discover whether they&amp;#39;re too weak to be of any functional use. [See my earlier story on &lt;a title="Debian and the OpenSSL PRNG" href="http://msmvps.com/blogs/alunj/archive/2008/05/15/1623193.aspx"&gt;Debian and the OpenSSL PRNG&lt;/a&gt;]&lt;/p&gt; &lt;p&gt;These tools all have one problem.&lt;/p&gt; &lt;p&gt;They run on the Linux systems in question, and they scan the certificates in place.&lt;/p&gt; &lt;p&gt;Given that the keys in question could be as old as 2 years, it seems likely that many of them have migrated off the Linux platforms on which they have started, and onto web sites outside of the Linux platform.&lt;/p&gt; &lt;p&gt;Or, there may simply be a requirement for a Windows-centric security team to be able to scan existing sites for those Linux systems that have been running for a couple of years without receiving maintenance (don&amp;#39;t nod like that&amp;#39;s a &lt;u&gt;good&lt;/u&gt; thing).&lt;/p&gt; &lt;p&gt;So, I&amp;#39;ve updated my SSLScan program. I&amp;#39;m attaching a copy of the tool to this blog post, (along with a copy of the &lt;a title="Ubuntu blacklists are correct for Debian, too!" href="https://launchpad.net/ubuntu/+source/openssl-blacklist/"&gt;Ubuntu OpenSSL blacklists&lt;/a&gt; for 1024-bit and 2048-bit keys if I can get approval), though of course I would suggest keeping up with your own copies of these blacklists. It took a little research to find out how to calculate the quantity being used for the fingerprint by Debian, but I figure that it&amp;#39;s best to go with the most authoritative source to begin with.&lt;/p&gt; &lt;p&gt;Please let me know if there are other, non-authoritative blacklists that you&amp;#39;d like to see the code work with - for now, the tool will simply search for &amp;quot;blacklist.RSA-1024&amp;quot; and &amp;quot;blacklist.RSA-2048&amp;quot; in the current directory to build a list of weak key fingerprints.&lt;/p&gt; &lt;p&gt;I&amp;#39;ve found a number of surprising certificates that haven&amp;#39;t been reissued yet, and I&amp;#39;ll let you know about them after the site owners have been informed.&lt;/p&gt; &lt;p&gt;[Sadly, I didn&amp;#39;t find &lt;a href="https://whitehouse.gov/"&gt;https://whitehouse.gov&lt;/a&gt; before it was changed - its certificate is shared with, of all places, &lt;a href="https://www.gov.cn/"&gt;https://www.gov.cn&lt;/a&gt; - yes, the White House, home of the President of America, is hosted from the same server as the Chinese government. The certificate was changed yesterday, 2008/5/21. https://www.cacert.org&amp;#39;s certificate was issued two days ago, 2008/5/20 - coincidence?]&lt;/p&gt; &lt;p&gt;My examples are from the web, but the tool will work on any TCP service that responds immediately with an attempt to set up an SSL connection - so LDAP over SSL will work, but FTP over SSL will not. It won&amp;#39;t work with SSH, because that apparently uses a different key format.&lt;/p&gt; &lt;p&gt;Simply run SSLScan, and enter the name of a web site you&amp;#39;d like to test, such as &lt;u&gt;www.example.com&lt;/u&gt;- don&amp;#39;t enter &amp;quot;http://&amp;quot; at the beginning, but remember that you can test a host at a non-standard port (which you will need to do for LDAP over SSL!) by including the port in the usual manner, such as &lt;u&gt;www.example.com:636&lt;/u&gt;.&lt;/p&gt; &lt;p&gt;If you&amp;#39;re scanning a larger number of sites, simply put the list of addresses into a fie, and supply the file&amp;#39;s name as the argument to SSLScan.&lt;/p&gt; &lt;p&gt;Let me know if you think of any useful additions to the tool.&lt;/p&gt; &lt;p&gt;Here is some slightly modified output from a sample run of the tool (the names have been changed to protect the innocent):&lt;/p&gt; &lt;p&gt;&lt;a href="http://msmvps.com/blogs/alunj/WindowsLiveWriter/ContributingtotheDebianmess_F477/Image-0195_2.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="461" alt="Image-0195" src="http://msmvps.com/blogs/alunj/WindowsLiveWriter/ContributingtotheDebianmess_F477/Image-0195_thumb.png" width="642" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;The text to look for here is &amp;quot;&amp;gt;&amp;gt;&amp;gt;This Key Is A Weak Debian Key&amp;lt;&amp;lt;&amp;lt;&amp;quot;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1626252" width="1" height="1"&gt;</description><enclosure url="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Components.PostAttachments/00.01.62.62.52/SSLScan.zip" length="8542" type="application/x-zip-compressed" /><category domain="http://msmvps.com/blogs/alunj/archive/tags/General+Security/default.aspx">General Security</category><category domain="http://msmvps.com/blogs/alunj/archive/tags/Programmer+Hubris/default.aspx">Programmer Hubris</category><category domain="http://msmvps.com/blogs/alunj/archive/tags/Why+is+PKI+so+hard_3F00_/default.aspx">Why is PKI so hard?</category><category domain="http://msmvps.com/blogs/alunj/archive/tags/Alun_2700_s+code/default.aspx">Alun's code</category></item><item><title>Debian and the OpenSSL PRNG</title><link>http://msmvps.com/blogs/alunj/archive/2008/05/15/1623193.aspx</link><pubDate>Fri, 16 May 2008 00:55:01 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1623193</guid><dc:creator>Alun Jones</dc:creator><slash:comments>10</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/alunj/rsscomments.aspx?PostID=1623193</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/alunj/commentapi.aspx?PostID=1623193</wfw:comment><comments>http://msmvps.com/blogs/alunj/archive/2008/05/15/1623193.aspx#comments</comments><description>&lt;p&gt;[PRNG is an abbreviation for &amp;quot;Pseudo-Random Number Generator&amp;quot;, a &lt;strike&gt;key&lt;/strike&gt; core component of the key-generation in any cryptographic library.]&lt;/p&gt; &lt;p&gt;&lt;img alt="Warning: Choking Hazard" src="http://www.casino-shop.co.uk/300/dic/113.jpg" align="right" border="0" /&gt;A few people have already commented on the issue itself - Debian issued, in 2006, a version of their Linux build that contained a modified version of OpenSSL. The modification has been found to drastically reduce the randomness of the keys generated by OpenSSL on Debian Linux and any Linux derived from that build (such as Ubuntu, Edubuntu, Xubuntu, and any number of other buntus). Instead of being able to generate 1024-bit RSA keys that have a 1-in-2^1024 chance of being the same, the Debian build generated 1024-bit RSA keys that have a 1-in-2^15 chance of being the same (that&amp;#39;s 1 in 32,768).&lt;/p&gt; &lt;p&gt;Needless to say, that makes life really easy on a hacker who wants to pretend to be a server or a user who is identifed as the owner of one of these keys.&lt;/p&gt; &lt;p&gt;The fun comes when you go to &lt;a href="http://metasploit.com/users/hdm/tools/debian-openssl/"&gt;http://metasploit.com/users/hdm/tools/debian-openssl/&lt;/a&gt; and see what the change actually was that caused this. Debian fetched the source for OpenSSL, and found that Purify flagged a line as accessing uninitialised memory in the random number generator’s pre-seeding code.  &lt;h3&gt;So. They. Removed. The. Line. &lt;/h3&gt; &lt;p&gt;I thought I’d state that slowly for dramatic effect.  &lt;p&gt;If they’d bothered researching Purify and OpenSSL, they’d have found this:  &lt;p&gt;&lt;a href="http://rt.openssl.org/Ticket/Display.html?id=521&amp;amp;user=guest&amp;amp;pass=guest"&gt;http://rt.openssl.org/Ticket/Display.html?id=521&amp;amp;user=guest&amp;amp;pass=guest&lt;/a&gt;  &lt;p&gt;Which states (in 2003, three years before Debian applied teh suck patch) “No, it&amp;#39;s fine - the problem is Purify and Valgrind assume all use of uninitialised data is inherently bad, whereas a PRNG implementation has nothing but positive (or more correctly, non-negative) things to say about the idea.”  &lt;p&gt;So, Debian removed a source of random information used to generate the key. Silly Debian. &lt;p&gt;But there&amp;#39;s a further wrinkle to this.  &lt;p&gt;If I understand &lt;a href="http://metasploit.com/users/hdm/tools/debian-openssl/"&gt;HD Moore&amp;#39;s assertions&lt;/a&gt; correctly, this means that the sole sources of entropy (essentially, &amp;quot;randomness&amp;quot;) for the random numbers used to generate keys in Debian are:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;The Process ID (from 1 to 32,767)&lt;/li&gt; &lt;li&gt;The contents of an uninitialised area in the process&amp;#39; memory&lt;/li&gt; &lt;li&gt;uh... that&amp;#39;s it.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;[Okay, so that&amp;#39;s not strictly true in all cases - there are other ways to initialise randomness, but these two are the fallback position - the minimum entropy that can be used to create a key. In the absence of a random number source, these are the two things that will be used to create randomness.]&lt;/p&gt; &lt;p&gt;If you compile C++ code using Microsoft&amp;#39;s Visual C++ compiler in DEBUG mode, or with the /GZ, /RTC1, or /RTCs flags, you are asking the compiler to automatically initialise all uninitialised memory to 0xcc. I&amp;#39;m sure there&amp;#39;s some similar behaviour on Linux compilers, because this aids with debugging accidental uses of uninitialised memory.&lt;/p&gt; &lt;p&gt;But what if you don&amp;#39;t set those flags? &lt;h3&gt;What does &amp;quot;uninitialised memory&amp;quot; contain?&lt;/h3&gt; &lt;p&gt;It would be bad if &amp;quot;uninitialised memory&amp;quot; contained memory from other processes - previous processes that had owned memory but were now defunct - because that would potentially mean that your new process had access to secrets that it shouldn&amp;#39;t. &lt;p&gt;So, &amp;quot;uninitialised memory&amp;quot; has to be initialised to something, at least the first time it is accessed. &lt;p&gt;Is it really going to be initialised to random values? That would be such a huge waste of processor time - and anyway, we&amp;#39;re looking at this from the point of view of a cryptographic process, which needs to have strongly random numbers. &lt;p&gt;No, random would be bad. Perhaps in some situations, the memory will be filled with copies of &amp;#39;public&amp;#39; data - environment variables, say. But most likely, because it&amp;#39;s a fast easy thing to do, uninitialised memory will be filled with zeroes. &lt;p&gt;Of course, after a few functions are called, and returned from, and after a few variables are created and go out of scope, the stack will contain values indicative of the course that the program has taken so far - it may look randomish, but it will probably vary very little, if any, from one execution of the program to another. &lt;p&gt;In the absence of a random number seed file, or a random number generator providing /dev/urand or /dev/random, then, an OpenSSL key is going to have a 1 in 32,768 chance of being the same as a key created on a similar build of OpenSSL - higher, if you consider that most PIDs fall in a smaller range. &lt;p&gt;So, here&amp;#39;s some lessons to learn about compiling other people&amp;#39;s cryptographic code: &lt;ol&gt; &lt;li&gt;Don’t ever compile cryptographic code in release mode, because you will optimize away lines that clear secrets from memory. &lt;/li&gt; &lt;li&gt;Don’t ever compile cryptographic code in debug mode, because you will initialize memory that is expected to be uninitialised and random. &lt;/li&gt; &lt;li&gt;Don&amp;#39;t ever modify cryptographic code, even if it throws up warnings. You don&amp;#39;t understand what you&amp;#39;re doing.&lt;/li&gt; &lt;li&gt;Don’t ever compile cryptographic code, because you don’t know what you are doing. &lt;/li&gt;&lt;/ol&gt; &lt;h3&gt;Why I use CryptoAPI&lt;/h3&gt; &lt;p&gt;This is one reason why I prefer to use Microsoft&amp;#39;s CryptoAPI, rather than libraries such as OpenSSL. There are others: &lt;ol&gt; &lt;li&gt;It&amp;#39;s not my fault if something goes wrong with the crypto.&lt;/li&gt; &lt;li&gt;The users will apply patches to the crypto, and I don&amp;#39;t have to go persuading my users to apply the patches.&lt;/li&gt; &lt;li&gt;There&amp;#39;s a central place where administrators will expect to find crypto keys, and it&amp;#39;s well-protected.&lt;/li&gt; &lt;li&gt;The documentation for CryptoAPI is far better than the documentation for OpenSSL, which is at best confusing, and at worst, non-existent.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;In fairness, there are reasons not to use CryptoAPI:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;New algorithms are made available for new versions of Windows, and not backported readily to older versions. With a library you ship, you get to decide which version customers can run - unless someone else comes and installs another version.&lt;/li&gt; &lt;li&gt;Microsoft&amp;#39;s documentation is better, but it&amp;#39;s still not perfect. Once in a while, it&amp;#39;s not even correct. At least if you have the source code, and are insanely motivated, you can find out what the truth of a matter is.&lt;/li&gt;&lt;/ol&gt; &lt;h3&gt;We&amp;#39;ll still be learning lessons for a while...&lt;/h3&gt; &lt;p&gt;The lessons to learn from this episode are almost certainly not yet over. I expect someone to find in the next few weeks that OpenSSL with no extra source of entropy on some operating system or family of systems generates easily guessed keys, even using the &amp;quot;uninitialised memory&amp;quot; as entropy. I wait with &amp;#39;bated breath.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1623193" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/alunj/archive/tags/General+Security/default.aspx">General Security</category><category domain="http://msmvps.com/blogs/alunj/archive/tags/Programmer+Hubris/default.aspx">Programmer Hubris</category><category domain="http://msmvps.com/blogs/alunj/archive/tags/Why+is+PKI+so+hard_3F00_/default.aspx">Why is PKI so hard?</category></item><item><title>Change the Administrator account name?</title><link>http://msmvps.com/blogs/alunj/archive/2008/05/14/1622734.aspx</link><pubDate>Thu, 15 May 2008 02:27:23 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1622734</guid><dc:creator>Alun Jones</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/alunj/rsscomments.aspx?PostID=1622734</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/alunj/commentapi.aspx?PostID=1622734</wfw:comment><comments>http://msmvps.com/blogs/alunj/archive/2008/05/14/1622734.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://msmvps.com/blogs/alunj/WindowsLiveWriter/ChangetheAdministratoraccountname_E86D/Boxers_2.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="200" alt="Boxers" src="http://msmvps.com/blogs/alunj/WindowsLiveWriter/ChangetheAdministratoraccountname_E86D/Boxers_thumb.png" width="200" align="left" border="0" /&gt;&lt;/a&gt; Religious debates are rarely clean or pretty.&lt;/p&gt; &lt;p&gt;The same is true in all spheres, whether debating Christianity against Islam, Linux against Windows, or Cagney vs Lacey.&lt;/p&gt; &lt;p&gt;In security, there are a few divisive issues that are always going to crop up.&lt;/p&gt; &lt;p&gt;Is your datacentre network trustworthy enough to pump secret data around it at any speed?&lt;/p&gt; &lt;p&gt;Are virtual machines on the same host PC &amp;quot;separated&amp;quot; for segregation of duties purposes?&lt;/p&gt; &lt;p&gt;Is SHA-1 completely broken yet?&lt;/p&gt; &lt;p&gt;There&amp;#39;s nothing more infuriating than arguing your position on one side of such a debate, only to see those infuriating people on the other side sit smugly in their assertion that what you state has no bearing on their view, which is still more correct than yours, nyaah nyaah.&lt;/p&gt; &lt;p&gt;I hope it doesn&amp;#39;t get that way with a debate between two people I like to claim as friends - Jesper Johansson and Roger Grimes - who are currently waging their &lt;a href="http://technet.microsoft.com/en-us/magazine/cc510319.aspx"&gt;war of words in TechNet&lt;/a&gt;, in what I hope will become a regular series.&lt;/p&gt; &lt;p&gt;The current article is on the big debate between those who think it&amp;#39;s a great security idea to rename the Administrator account to something else, and those who perceive little or no benefit in the practice - so little that it&amp;#39;s not worth doing.&lt;/p&gt; &lt;p&gt;For those of you too lazy to follow the link and read the article, Jesper (and his Microsoft insider, Steve Riley) are on the &amp;quot;don&amp;#39;t bother renaming Administrator&amp;quot; side, while Roger (with his own insider, Aaron Margosis) are on the side that renaming the Administrator account is a security win.&lt;/p&gt; &lt;p&gt;I really can&amp;#39;t dispute the mathematics, which says that if you have a 10-character password, you have a 1-in-umpteen-thousand chance of someone guessing and logging in as Administrator; if you have a 10-character password &lt;u&gt;and&lt;/u&gt; a renamed Administrator account, however, the chances rise to 1-in-umpty-thousand. A couple of orders of magnitude of benefit, yes?&lt;/p&gt; &lt;p&gt;Sure - but there&amp;#39;s a couple of points I&amp;#39;d make here:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;There&amp;#39;s not much difference between zero and zero, and the two numbers representing the probability of a random guess succeeding are as close to zero as makes no realistic difference. At that level of difference between near-zeroes, you&amp;#39;re as likely to find your password is weakened by &lt;a href="http://msmvps.com/blogs/alunj/archive/2008/05/15/1623193.aspx"&gt;poor choice of random number generator&lt;/a&gt; as you are to find that renaming the account protected you while the password did not. In essence, you&amp;#39;re saying &amp;quot;we&amp;#39;re already protected against the sort of guy with enough luck to win the lottery a million times in a row, but just in case, we want to protect ourselves against the guy with luck enough that he could win a million and one times.&amp;quot;  &lt;li&gt;You could get the same increase in probabilistic protection by lengthening the password. Even if all you did was to add into the password the name that you were going to give the Administrator account, you&amp;#39;ve provided yourself with just as much mathematical protection against random guessing as you would have by changing the Administrator account name.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Okay, so maybe you&amp;#39;re not really getting orders of magnitude better protection - but surely it can&amp;#39;t hurt security, and it feels enough like security that several people in the field recommend it.&lt;/p&gt; &lt;p&gt;To me, that&amp;#39;s old-style security thinking, where the goal was to disable, disable, disable - when the web sites and applications were so full of holes that any time you saw something that looked like a hole, you immediately knew that the right thing was to plug it up.&lt;/p&gt; &lt;p&gt;Modern information security, though, should be more about enabling - enabling business and customers alike, to conduct business without unnecessary inconvenience. Without wishing to sound like Yoda, inconvenience leads to confusion; confusion leads to mistakes, which lead inexorably to insecurity.&lt;/p&gt; &lt;p&gt;If you rename the administrator account, you&amp;#39;re asking for its name to be a part of the secret that secures its access. You won&amp;#39;t get any cooperation in that, however, as the operating system and all of your applications are designed around the principle that the username is not a secret. You&amp;#39;re also asking your system administrators - the people who are going to be using the Administrator account - to remember that it&amp;#39;s been renamed, to remember what it&amp;#39;s been renamed to, and to remember to not let anyone else know that.&lt;/p&gt; &lt;p&gt;So, yeah, I&amp;#39;m on the side that says &amp;quot;renaming the administrator account doesn&amp;#39;t add any significant security benefit&amp;quot;.&lt;/p&gt; &lt;p&gt;The one benefit I do see is that the &amp;quot;random noise&amp;quot; of random attacks on any account named Administrator can be separated from the log entries indicating that someone is attacking &lt;u&gt;your&lt;/u&gt; Administrator account. I think this is a bit of a false saving, though - you really shouldn&amp;#39;t be allowing any external access to the Administrator account. If your staff wants to access the Administrator account remotely, they should VPN in under their own account, and then use RDP, or some other protocol to connect to the machine they wish to administer.&lt;/p&gt; &lt;p&gt;I&amp;#39;m hoping to entice some of the Security MVPs to contribute to this debate - maybe even Roger and Jesper. There are two sides, here, and I doubt that I&amp;#39;ll actually end up converting anyone to my side who wasn&amp;#39;t already there to begin with.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1622734" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/alunj/archive/tags/General+Security/default.aspx">General Security</category></item><item><title>In Defence of the Self-Signed Certificate</title><link>http://msmvps.com/blogs/alunj/archive/2008/05/10/1618962.aspx</link><pubDate>Sat, 10 May 2008 17:49:13 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1618962</guid><dc:creator>Alun Jones</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/alunj/rsscomments.aspx?PostID=1618962</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/alunj/commentapi.aspx?PostID=1618962</wfw:comment><comments>http://msmvps.com/blogs/alunj/archive/2008/05/10/1618962.aspx#comments</comments><description>&lt;p&gt;Recently I discussed using EFS as a simple, yet reliable, form of file encryption. Among the doubts raised was the following from an &lt;a href="http://www.windowsecurity.com/articles/Implementing-EFS-Windows-Server-2003-Domain.html"&gt;article by fellow MVP Deb Shinder&lt;/a&gt; on EFS:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;EFS generates a self-signed certificate. However, there are problems inherent in using self-signed certificates:  &lt;ul&gt; &lt;li&gt;Unlike a certificate issued by a trusted third party (CA), a self-signed certificate signifies only self-trust. It’s sort of like relying on an ID card created by its bearer, rather than a government-issued card. Since encrypted files aren’t shared with anyone else, this isn’t really as much of a problem as it might at first appear, but it’s not the only problem.  &lt;li&gt;If the self-signed certificate’s key becomes corrupted or gets deleted, the files that have been encrypted with it can’t be decrypted. The user can’t request a new certificate as he could do with a CA. &lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt; &lt;p&gt;Well, she&amp;#39;s right, but that only really gives a part of the picture, and it verges on out-and-out recommending that self-signed certificates are completely untrustworthy. Certainly that&amp;#39;s how self-signed certificates are often viewed.&lt;/p&gt; &lt;p&gt;Let&amp;#39;s take the second item first, shall we?&lt;/p&gt; &lt;p&gt;&amp;quot;Request a new certificate&amp;quot; isn&amp;#39;t quite as simple as all that. If the user has deleted, or corrupted, the private key, and didn&amp;#39;t save a copy, then requesting a new certificate will merely allow the user to encrypt new files, and won&amp;#39;t let them recover old files. [The exception is, of course, if you use something called &amp;quot;Key Recovery&amp;quot; at your certificate authority (CA) - but that&amp;#39;s effectively an automated &amp;quot;save a copy&amp;quot;.]&lt;/p&gt; &lt;p&gt;Even renewing a certificate changes its thumbprint, so to decrypt your old EFS-encrypted files, you should keep your old EFS certificates and private keys around, or use CIPHER to re-encrypt with current certificates.&lt;/p&gt; &lt;p&gt;So, the second point is dependent on whether the CA has set up Key Recovery - this isn&amp;#39;t a problem if you make a copy of your certificate and private key, onto removable storage. And keep it very carefully stored away.&lt;/p&gt; &lt;p&gt;As to the first point - you (or rather, your computer) already trust dozens of self-signed certificates. Without them, Windows Update would not work, nor would many of the secured web sites that you use on a regular basis.&lt;/p&gt; &lt;p&gt;Whuh?&lt;/p&gt; &lt;p&gt;&lt;a href="http://msmvps.com/blogs/alunj/WindowsLiveWriter/InDefenceoftheSelfSignedCertificate_8C22/image_2.png"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="455" alt="certmgr shows that all Trusted Root Certificates are self-signed." src="http://msmvps.com/blogs/alunj/WindowsLiveWriter/InDefenceoftheSelfSignedCertificate_8C22/image_thumb.png" width="644" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Hey, look - they&amp;#39;ve all got the same thing in &amp;quot;Issued To&amp;quot; as they have in &amp;quot;Issued By&amp;quot;!&lt;/p&gt; &lt;p&gt;Yes, that&amp;#39;s right - every single &amp;quot;Trusted Root&amp;quot; certificate is self-signed!&lt;/p&gt; &lt;p&gt;If you&amp;#39;re new to PKI and cryptography, that&amp;#39;s going to seem weird - but a moment&amp;#39;s thought should set you at rest.&lt;/p&gt; &lt;p&gt;Every certificate must be signed. There must be a &amp;quot;first certificate&amp;quot; in any chain of signed certificates, and if that &amp;quot;first certificate&amp;quot; is signed by anyone other than itself, then it&amp;#39;s not the first certificate. QED.&lt;/p&gt; &lt;p&gt;The reason we trust any non-root certificate is that we trust the issuer to choose to sign only those certificates whose identity can be validated according to their policy.&lt;/p&gt; &lt;p&gt;So, if we can&amp;#39;t trust these trusted roots because of who they&amp;#39;re signed by, why should we trust them?&lt;/p&gt; &lt;p&gt;The reason we trust self-signed certificates is that we have a reason to trust them - and that reason is outside of the certificate and its signature. The majority (perhaps all) of the certificates in your Trusted Root Certificate Store come from Microsoft - they didn&amp;#39;t originate there, but they were distributed by Microsoft along with the operating system, and updates to the operating system.&lt;/p&gt; &lt;p&gt;You trusted the operating system&amp;#39;s original install disks implicitly, and that trust is where the trust for the Trusted Root certificates is rooted. That&amp;#39;s a trust outside of the certificate chains themselves.&lt;/p&gt; &lt;p&gt;So, based on that logic, you can trust the self-signed certificates that EFS issues in the absence of a CA, only if there is something outside of the certificate itself that you trust.&lt;/p&gt; &lt;p&gt;What could that be?&lt;/p&gt; &lt;p&gt;For me, it&amp;#39;s simple - I trust the operating system to generate the certificate, and I trust my operational processes that keep the private key associated with the EFS certificate secure.&lt;/p&gt; &lt;p&gt;There are other reasons to be concerned about using the self-signed EFS certificates that are generated in the absence of a CA, though, and I&amp;#39;ll address those in the next post on this topic.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1618962" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/alunj/archive/tags/General+Security/default.aspx">General Security</category><category domain="http://msmvps.com/blogs/alunj/archive/tags/Why+is+PKI+so+hard_3F00_/default.aspx">Why is PKI so hard?</category><category domain="http://msmvps.com/blogs/alunj/archive/tags/EFS/default.aspx">EFS</category></item><item><title>Apple Changes Update Policies - Still No Biscuit</title><link>http://msmvps.com/blogs/alunj/archive/2008/05/09/1618641.aspx</link><pubDate>Sat, 10 May 2008 04:32:34 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1618641</guid><dc:creator>Alun Jones</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/alunj/rsscomments.aspx?PostID=1618641</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/alunj/commentapi.aspx?PostID=1618641</wfw:comment><comments>http://msmvps.com/blogs/alunj/archive/2008/05/09/1618641.aspx#comments</comments><description>&lt;p&gt;As I have mentioned in other posts (&lt;a href="http://msmvps.com/blogs/alunj/archive/2008/03/21/1549816.aspx"&gt;Retro-bundling - another suck of the Apple&lt;/a&gt;, &lt;a href="http://msmvps.com/blogs/alunj/archive/2008/01/19/1471264.aspx"&gt;MacBook Air debuts; iTunes Pesters Me Again&lt;/a&gt;, &lt;a href="http://msmvps.com/blogs/alunj/archive/2007/12/17/1402585.aspx"&gt;Removing Apple Mobile Device Support&lt;/a&gt;, &lt;a href="http://msmvps.com/blogs/alunj/archive/2007/11/27/1363844.aspx"&gt;I didn&amp;#39;t want iTunes - now I&amp;#39;ve got iPod, too?&lt;/a&gt;, etc, etc), this has long since stopped being an issue for me, because I&amp;#39;ve removed all the Apple software from my machine as a bit of a protest against Apple&amp;#39;s inability or unwillingness to provide me the means to manage my own systems.&lt;/p&gt; &lt;p&gt;Now, I understand that Apple has finally heard some of the complaints from various blogs around the world, and has done something about it.&lt;/p&gt; &lt;p&gt;They have separated the updates from the new software. The new dialog looks like this:&lt;/p&gt; &lt;p&gt;&lt;img alt="" hspace="4" src="http://www.blogsmithmedia.com/www.tuaw.com/media/2008/04/vmware-fusionscreensnapz001.png" border="1" /&gt;&lt;/p&gt; &lt;p&gt;But it still marks the new software by default to be installed.&lt;/p&gt; &lt;p&gt;This is the behaviour that is wrong - okay, so it&amp;#39;s now clear as to the difference between an update and a new software, but the key again is that Apple is marking new software for installation from an update tool.&lt;/p&gt; &lt;p&gt;An update tool should be a piece of software that most users say &amp;quot;yes, do whatever&amp;quot;, and that doesn&amp;#39;t then cause significant additions to the software. By automatically checking new software, Apple is eroding the trust that users will have in the update tool.&lt;/p&gt; &lt;p&gt;Again, I don&amp;#39;t mind that they&amp;#39;re encouraging users to install Safari - I don&amp;#39;t even mind them spending time persuading their existing install base to use it. What I&amp;#39;m perplexed at is that Apple feels that they have to slide it in under the door, rather than sell it to users on its own merits.&lt;/p&gt; &lt;p&gt;And, yes, I&amp;#39;m quite well aware that you could also say the same of any browser that ships with an operating system - except, really, you&amp;#39;ve got to have a browser shipping in your operating system these days. Yeah, the guys who ship the operating system have an advantage - and they worked hard to build that advantage in the first place. They have a certain momentum behind anything they offer, and even if the system is as open and transparent to all application vendors as it is to the OS vendor, the default installed applications will generally have a larger market share than the &amp;#39;after-market&amp;#39; tools, just because of users&amp;#39; inertia.&lt;/p&gt; &lt;p&gt;[Note that the paragraph above applies to Apple / Mac / Safari, just as well as it does to Microsoft / Windows / Internet Explorer]&lt;/p&gt; &lt;p&gt;However, I don&amp;#39;t think that users&amp;#39; inertia is a cause for sleight-of-hand tactics like retro-bundling.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1618641" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/alunj/archive/tags/General+Security/default.aspx">General Security</category><category domain="http://msmvps.com/blogs/alunj/archive/tags/Programmer+Hubris/default.aspx">Programmer Hubris</category></item><item><title>Think like a bad guy? It's a start.</title><link>http://msmvps.com/blogs/alunj/archive/2008/05/06/1615699.aspx</link><pubDate>Wed, 07 May 2008 00:33:57 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1615699</guid><dc:creator>Alun Jones</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/alunj/rsscomments.aspx?PostID=1615699</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/alunj/commentapi.aspx?PostID=1615699</wfw:comment><comments>http://msmvps.com/blogs/alunj/archive/2008/05/06/1615699.aspx#comments</comments><description>&lt;p&gt;Cool new site (and &lt;a href="http://securedeveloper.com/blog"&gt;blog&lt;/a&gt;) from Microsoft - &lt;a href="http://securedeveloper.com"&gt;http://securedeveloper.com&lt;/a&gt; - and it has a tag line I&amp;#39;ve heard many times before:&lt;/p&gt; &lt;p&gt;&lt;a href="http://securedeveloper.com/"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="246" alt="image" src="http://msmvps.com/blogs/alunj/WindowsLiveWriter/ThinklikeabadguyItsastart_13306/image_3.png" width="644" border="0" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Like that old maxim that &amp;quot;you need to stop fighting fires long enough to tell the architects to stop building things out of wood&amp;quot;, thinking like a bad guy is just the first step to developer security.&lt;/p&gt; &lt;p&gt;It&amp;#39;s a necessary step, but it&amp;#39;s not the final goal.&lt;/p&gt; &lt;p&gt;It&amp;#39;s a start - in fact, it&amp;#39;s a great start, and I think every developer needs to go through that phase. Many have yet to do so - particularly, it seems, those fresh out of college or programming school.&lt;/p&gt; &lt;p&gt;But I think it&amp;#39;s really a catch-phrase for the beginning of becoming a secure developer. It&amp;#39;s what you have to tell yourself when you&amp;#39;re used to writing code for the sole purpose of implementing features, so that you can get over that mind-set and into the sort of thinking that accepts that your code can be attacked.&lt;/p&gt; &lt;p&gt;But the bad guy has it easy.&lt;/p&gt; &lt;p&gt;He only has to find one way in. He can afford to become an expert on one part of your software, and zero in on it.&lt;/p&gt; &lt;p&gt;Thinking like a bad guy will widen your awareness to the point that you know that incursions can and will happen, and you&amp;#39;ll occasionally take better care in your coding. That&amp;#39;s a good thing.&lt;/p&gt; &lt;p&gt;But what if you start thinking like someone building a defensive structure?&lt;/p&gt; &lt;p&gt;The defence builder has to find (and limit) all the ways in, and just in case he missed one, he has to find all the ways you can get further in once you&amp;#39;re in - he has to become an expert on all parts of the software, as well as something of an expert on the external dependencies - libraries, network equipment, database components, etc.&lt;/p&gt; &lt;p&gt;[After all, we&amp;#39;ve seen this past week how many sites can get exploited through SQL Injection attacks - and the primary cause for those seems to be web developers who don&amp;#39;t know SQL, yet who send SQL statements to be executed at the database.]&lt;/p&gt; &lt;p&gt;You could start thinking like a defender - what alarms should signal the presence, or possibility, of an intruder? What information could an active defender use to verify the intent of a potential intruder? How could you slow down a possible attacker to the point where it&amp;#39;s feasible for a human responder to outpace a mechanical attacker?&lt;/p&gt; &lt;p&gt;Maybe you could start thinking like an investigator - once you believe someone has got in, what clues would you like to be left, showing you where the holes were? How can you tell what defences have been useful and what defences were useless? Where was the attacker actively assisted or resisted by your system and software?&lt;/p&gt; &lt;p&gt;Perhaps you could even think like a defence component builder - how can you ensure that you learn lessons from tried and true defences in order to build those lessons in to the next system, or to teach the next set of builders?&lt;/p&gt; &lt;p&gt;Think like the architect of a mediaeval castle - we&amp;#39;ve gotten used to the idea that mediaeval castles were places of defence, that they sought to be impenetrable bastions behind which the local king, thane, lord or whatever could take refuge and survive. Yet they were also places of business, places of government, places with a function. We need to design programs like mediaeval castles - capable of functioning for business as well as for defence.&lt;/p&gt; &lt;p&gt;SecureDeveloper.com hasn&amp;#39;t really gone beyond the first stage of its launch yet, so it will be a while before these advanced topics will be discussed - and I am eager to see that happen.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1615699" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/alunj/archive/tags/General+Security/default.aspx">General Security</category><category domain="http://msmvps.com/blogs/alunj/archive/tags/Programmer+Hubris/default.aspx">Programmer Hubris</category></item><item><title>Can You Write Good Code for an OS you Despise?</title><link>http://msmvps.com/blogs/alunj/archive/2008/05/03/1612047.aspx</link><pubDate>Sat, 03 May 2008 23:57:20 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1612047</guid><dc:creator>Alun Jones</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/alunj/rsscomments.aspx?PostID=1612047</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/alunj/commentapi.aspx?PostID=1612047</wfw:comment><comments>http://msmvps.com/blogs/alunj/archive/2008/05/03/1612047.aspx#comments</comments><description>&lt;p&gt;No, this isn&amp;#39;t another of my anti-Mac frothing rants.&lt;/p&gt; &lt;p&gt;This is one of my &amp;quot;here&amp;#39;s what I hate about many of the open-source projects I deal with&amp;quot; rants.&lt;/p&gt; &lt;p&gt;I&amp;#39;m trying to find an SFTP client for Windows that works the way I want it to.&lt;/p&gt; &lt;p&gt;All I seem to be able to find are SFTP clients for Unix shoe-horned in to Windows.&lt;/p&gt; &lt;p&gt;[Perhaps the Unix guys feel the same way about playing Halo under Wine.]&lt;/p&gt; &lt;p&gt;What do I mean?&lt;/p&gt; &lt;p&gt;Here&amp;#39;s an example - Windows has a certificate store. It&amp;#39;s well-protected, in that there haven&amp;#39;t been any disclosures of significant vulnerabilities that allow you to read certificates without first having got the credentials that would allow you to do so.&lt;/p&gt; &lt;p&gt;So, I want an SFTP client that lets me store my private keys in the Windows certificate store. Or at least, that uses DPAPI to protect its data.&lt;/p&gt; &lt;p&gt;Can&amp;#39;t find one.&lt;/p&gt; &lt;p&gt;Can&amp;#39;t find ONE. And I&amp;#39;m known for being good at finding stuff.&lt;/p&gt; &lt;p&gt;PuTTY is recommended to me. It, too, requires that the private key be stored in a file, not in the certificate store. Its alternative is to use its own certificate store, called Pageant (it&amp;#39;s an authorization &amp;quot;Age-Ant&amp;quot; for &lt;strong&gt;P&lt;/strong&gt;uTTY, get it?) Maybe I could do something with that - write a variant of Pageant that directly accesses certificates stored in the certificate store.&lt;/p&gt; &lt;p&gt;But no, there&amp;#39;s no protocol definition or API, or service contract that I can see in the documentation, that would allow me to rejigger this. I could edit the source code, but that&amp;#39;s an awful lot of effort compared to building a clean implementation of only those parts of the API that I&amp;#39;d need.&lt;/p&gt; &lt;p&gt;What I do find in the documentation for Pageant are comments such as these:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Windows unfortunately provides no way to protect pieces of memory from being written to the system &lt;a name="i17"&gt;&lt;/a&gt;swap file. So if Pageant is holding your private keys for a long period of time, it&amp;#39;s possible that decrypted private key data may be written to the system swap file, and an attacker who gained access to your hard disk later on might be able to recover that data. (However, if you stored an unencrypted key in a disk file they would &lt;em&gt;certainly&lt;/em&gt; be able to recover it.)  &lt;li&gt;Although, like most modern operating systems, Windows prevents programs from accidentally accessing one another&amp;#39;s memory space, it does allow programs to access one another&amp;#39;s memory space deliberately, for special purposes such as debugging. This means that if you allow a virus, trojan, or other malicious program on to your Windows system while Pageant is running, it could access the memory of the Pageant process, extract your decrypted authentication keys, and send them back to its master.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;I&amp;#39;ll address the second comment first - it&amp;#39;s a strange way of noting that Windows, like other modern operating systems, assumes that every process run by the user has the same access as the user. Typically, this is addressed by simply minimising the amount of time that a secret is held in memory in its decrypted form, and using something like DPAPI to store the secret encrypted.&lt;/p&gt; &lt;p&gt;The first comment, though, indicates a lack of experience with programming for Windows, and an inability to search. Five minutes at &lt;a href="http://msdn.microsoft.com"&gt;http://msdn.microsoft.com&lt;/a&gt; gets you a reference to VirtualLock, which allows you to lock 4kB at a time into physical memory, aka non-paged pool. Of course, there are other options - encrypting the Pagefile using EFS also helps protect against this kind of attack, and the aforementioned trick of holding the secret decrypted in memory for as short a time as possible also reduces the risk of having it exposed.&lt;/p&gt; &lt;p&gt;Now I&amp;#39;m really stretching to assert that this single author despises Windows and that&amp;#39;s why he&amp;#39;s completely unaware of some of its obvious security features and common modes of use. But it does seem to be a trend prevalent in some of the more religious of open source developers - &amp;quot;Windows sucks because it can&amp;#39;t do X, Y and Z&amp;quot; - without actually learning for certain whether that&amp;#39;s true. Often, X and Y can be done, and Z is only necessary on other operating systems due to quirks of their design.&lt;/p&gt; &lt;p&gt;Back when I first started writing Windows server software, the same religious folks would tell me &amp;quot;don&amp;#39;t bother writing servers for Windows - it&amp;#39;s not stable enough&amp;quot;. True enough, Windows 3.1 wasn&amp;#39;t exactly blessed with great uptime. But instead of saying &amp;quot;you can&amp;#39;t build a server on Windows&amp;quot;, I realised that there was a coming market in Windows NT, which was supposed to be server class. So I wrote for Windows NT, I assumed it was capable of server functionality, and any time I felt like I&amp;#39;d hit a &amp;quot;Windows can&amp;#39;t do this&amp;quot;, I bugged Microsoft until they fixed it.&lt;/p&gt; &lt;p&gt;Had I simply walked away and gone to a different platform, I&amp;#39;d be in a different place - but my point is that if you believe that your target OS is incapable, you will find it to be so. If you believe it should be capable, you will find it to be so.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1612047" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/alunj/archive/tags/Programmer+Hubris/default.aspx">Programmer Hubris</category><category domain="http://msmvps.com/blogs/alunj/archive/tags/Why+is+PKI+so+hard_3F00_/default.aspx">Why is PKI so hard?</category><category domain="http://msmvps.com/blogs/alunj/archive/tags/Miscellany+-+not+security/default.aspx">Miscellany - not security</category></item><item><title>Security Koan #3</title><link>http://msmvps.com/blogs/alunj/archive/2008/05/02/1612015.aspx</link><pubDate>Sat, 03 May 2008 03:24:57 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1612015</guid><dc:creator>Alun Jones</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/alunj/rsscomments.aspx?PostID=1612015</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/alunj/commentapi.aspx?PostID=1612015</wfw:comment><comments>http://msmvps.com/blogs/alunj/archive/2008/05/02/1612015.aspx#comments</comments><description>&lt;p&gt;The security guard phoned his boss in a panic.&lt;/p&gt; &lt;p&gt;&amp;quot;There&amp;#39;s been a break-in to the site, sir. The intruders aren&amp;#39;t anywhere to be seen, but they&amp;#39;ve got away with a bunch of equipment.&amp;quot;&lt;/p&gt; &lt;p&gt;&amp;quot;Understood - go and look at the perimeter fence, find out where they broke in, and keep watch. I&amp;#39;ll be there shortly.&amp;quot;&lt;/p&gt; &lt;p&gt;The boss arrived at the site, to find the guard pacing up and down in front of the fence.&lt;/p&gt; &lt;p&gt;&amp;quot;Did you find the hole yet?&amp;quot; asked the boss.&lt;/p&gt; &lt;p&gt;&amp;quot;Not yet, sir.&amp;quot;&lt;/p&gt; &lt;p&gt;&amp;quot;Never mind, I&amp;#39;ll help you look.&amp;quot;&lt;/p&gt; &lt;p&gt;For the next half-hour, they went up and down, searching for a hole in the fence.&lt;/p&gt; &lt;p&gt;Then the boss spoke up:&lt;/p&gt; &lt;p&gt;&amp;quot;Are you sure this is where they got in?&amp;quot;&lt;/p&gt; &lt;p&gt;&amp;quot;No, they got in on the other side of the site.&amp;quot;&lt;/p&gt; &lt;p&gt;&amp;quot;Then why are you looking over on this side?&amp;quot;&lt;/p&gt; &lt;p&gt;&amp;quot;Because the light&amp;#39;s better here, so we can see more.&amp;quot;&lt;/p&gt; &lt;p&gt;&lt;em&gt;Question&lt;/em&gt;: Are you monitoring the places most suited for attack, or simply the places easiest to monitor?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1612015" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/alunj/archive/tags/General+Security/default.aspx">General Security</category></item><item><title>UAC - The Emperor's New Clothes</title><link>http://msmvps.com/blogs/alunj/archive/2008/04/24/1603407.aspx</link><pubDate>Thu, 24 Apr 2008 23:47:38 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1603407</guid><dc:creator>Alun Jones</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/alunj/rsscomments.aspx?PostID=1603407</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/alunj/commentapi.aspx?PostID=1603407</wfw:comment><comments>http://msmvps.com/blogs/alunj/archive/2008/04/24/1603407.aspx#comments</comments><description>&lt;p&gt;I heard a complaint the other day about UAC - User Account Control - that was new to me.&lt;/p&gt; &lt;p&gt;Let&amp;#39;s face it, as a Security MVP, I hear a lot of complaints about UAC - not least from my wife, who isn&amp;#39;t happy with the idea that she can be logged on as an administrator, but she isn&amp;#39;t really an administrator until she specifically asks to be an administrator, and then specifically approves her request to become an administrator.&lt;/p&gt; &lt;p&gt;My wife is the kind of user that UAC was not written for. She&amp;#39;s a capable administrator (our home domain has redundant DCs, DHCP servers with non-overlapping scopes, and I could go on and on), and she doesn&amp;#39;t make the sort of mistakes that UAC is supposed to protect users from.&lt;/p&gt; &lt;p&gt;My wife also does not appreciate the sense that Microsoft is using the users as a fulcrum for providing leverage to change developers to writing code for non-admin users. She doesn&amp;#39;t believe that the vendors will change as a result of this, and the only effect will be that users get annoyed.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;But not me.&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;I like UAC - I think it&amp;#39;s great that developers are finally being forced to think about how their software should work in the world of least privilege. &lt;/p&gt; &lt;p&gt;So, as you can imagine, I thought I&amp;#39;d heard just about every last complaint there is about UAC. But then a new one arrived in my inbox from a friend I&amp;#39;ll call Chris.&lt;/p&gt; &lt;h3&gt;&amp;quot;Why should I pretend to be different people to use my own PC?&amp;quot;&lt;/h3&gt; &lt;p&gt;I must admit, the question stunned me.&lt;/p&gt; &lt;p&gt;Obviously, what Chris is talking about is the idea that you are strongly &amp;quot;encouraged&amp;quot; (or &amp;quot;strong-armed&amp;quot;, if you prefer) by UAC to work in (at least) two different security contexts - the first, your regular user context, and the second, your administrator context.&lt;/p&gt; &lt;p&gt;Chris has a point - you&amp;#39;re one person, you shouldn&amp;#39;t have to pretend to be two. And it&amp;#39;s your computer, it should do what you tell it to. Those two are axiomatic, and I&amp;#39;m not about to argue with them - but it sounds like I should do, if I&amp;#39;m going to answer his question while still loving UAC.&lt;/p&gt; &lt;p&gt;No, I&amp;#39;m going to argue with his basic premise that user accounts correspond to individual people. They correspond more accurately - particularly in UAC - to clothing.&lt;/p&gt; &lt;p&gt;Windows before NT, or more accurately, not based on the NT line, had no separation between user contexts / accounts. Even the logon was a joke - prompted for user name and password, but if you hit Escape instead, you&amp;#39;d be logged on anyway. Windows 9x and ME, then, were the equivalent of being naked.&lt;/p&gt; &lt;p&gt;In Windows NT, and the versions derived from it, user contexts are separated from one another by a software wall, a &amp;quot;Security Boundary&amp;quot;. There were a couple of different levels of user access, the most common distinctions being between a Standard (or &amp;quot;Restricted&amp;quot;) User, a Power User, and an Administrator.&lt;/p&gt; &lt;p&gt;Most people want to be the Administrator. That&amp;#39;s the account with all the power, after all. And if they don&amp;#39;t want to be the Administrator, they&amp;#39;d like to be at least &lt;u&gt;an&lt;/u&gt; administrator. There&amp;#39;s not really much difference between the two, but there&amp;#39;s a lot of difference between them and a Standard User.&lt;/p&gt; &lt;p&gt;Standard Users can&amp;#39;t set the clock back, they can&amp;#39;t clear logs out, they can&amp;#39;t do any number of things that might erase their tracks. Standard Users can&amp;#39;t install software for everyone on the system, they can&amp;#39;t update the operating system or its global settings, and they can&amp;#39;t run the Thomas the Tank Engine Print Studio. [One of those is a problem that needs fixing.]&lt;/p&gt; &lt;p&gt;So, really, a Standard User is much like the driver of a car, and an administrator is rather like the mechanic. I&amp;#39;ve often appealed to a different meme, and suggested that the administrator privilege should be called &amp;quot;janitor&amp;quot;, so as to make it less appealing - it really is all about being given the keys to the boiler room and the trash compactor.&lt;/p&gt; &lt;h3&gt;It&amp;#39;s about wearing dungarees rather than your business suit.&lt;/h3&gt; &lt;p&gt;You wear dungarees when working on the engine of your car, partly because you don&amp;#39;t want oil drops on your white shirt, but also partly so your tie doesn&amp;#39;t get wrapped around the spinning transmission and throttle you. You don&amp;#39;t wear the dungarees to work partly because you&amp;#39;d lose respect for the way you look, but also because you don&amp;#39;t want to spread that oil and grease around the office.&lt;/p&gt; &lt;p&gt;It&amp;#39;s not about pretending to be different people, it&amp;#39;s about wearing clothes suited to the task. An administrator account gives you carte blanche to mess with the system, and should only be used when you&amp;#39;re messing with the system (and under the assumption that you know what you&amp;#39;re doing!); a Standard User account prevents you from doing a lot of things, but the things you&amp;#39;re prevented from doing are basically those things that most users don&amp;#39;t actually have any need to do.&lt;/p&gt; &lt;p&gt;You&amp;#39;re not pretending to be a different person, you&amp;#39;re pretending to be a system administrator, rather than a user. Just like when I pretend to be a mechanic or a gardener, I put on my scungy jeans and stained and torn shirts, and when I pretend to be an employee, I dress a little smarter than that.  &lt;p&gt;When you&amp;#39;re acting as a user, you should have user privileges, and when you&amp;#39;re acting as an administrator, you should have administrative privileges. We&amp;#39;ve gotten so used to wearing our dungarees to the board-room that we think they&amp;#39;re a business suit.  &lt;p&gt;So while UAC prompts to provide a user account aren&amp;#39;t right for my wife (she&amp;#39;s in &amp;#39;dungarees-mode&amp;#39; when it comes to computers), for most users, they&amp;#39;re a way to remind you that you&amp;#39;re about to enter the janitor&amp;#39;s secret domain.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1603407" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/alunj/archive/tags/General+Security/default.aspx">General Security</category><category domain="http://msmvps.com/blogs/alunj/archive/tags/Things+I+Learned+At+Microsoft/default.aspx">Things I Learned At Microsoft</category><category domain="http://msmvps.com/blogs/alunj/archive/tags/Windows+Vista/default.aspx">Windows Vista</category><category domain="http://msmvps.com/blogs/alunj/archive/tags/What+my+wife+knows/default.aspx">What my wife knows</category><category domain="http://msmvps.com/blogs/alunj/archive/tags/Windows+Server+2008/default.aspx">Windows Server 2008</category></item><item><title>Silently fixing security bugs - how dare they!</title><link>http://msmvps.com/blogs/alunj/archive/2008/04/22/1600135.aspx</link><pubDate>Tue, 22 Apr 2008 22:06:30 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1600135</guid><dc:creator>Alun Jones</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/alunj/rsscomments.aspx?PostID=1600135</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/alunj/commentapi.aspx?PostID=1600135</wfw:comment><comments>http://msmvps.com/blogs/alunj/archive/2008/04/22/1600135.aspx#comments</comments><description>&lt;p&gt;Over in &amp;quot;&lt;a href="http://hellnbak.wordpress.com/2008/04/21/more-on-sdl-counting-vulnerabilities/"&gt;Random Things from Dark Places&lt;/a&gt;&amp;quot;, Hellnbak posts about reducing vulnerability counts by applying the SDL (Security Development Lifecycle), and makes the very reasonable point that vulnerabilities found prior to release by a scan that is part of the SDL process cannot be counted as failures of the SDL process. What&amp;#39;s more, those vulnerabilities can be silently fixed by the vendor before shipping / deploying the product being reviewed. [Obviously, not fixing them would be a really bad idea]&lt;/p&gt; &lt;p&gt;What intrigued me, though, was this line:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;But, as Ryan [Naraine] said — issues found in public code that are fixed silently are a real issue.&amp;nbsp; While I have picked on Microsoft specifically for this practice the sad reality (that I quickly learned after publicly picking on MS) is that pretty much all vendors do this.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;So, let&amp;#39;s see now... this is talking about a patch, hotfix, or service pack, that removes a security vulnerability from a product, but where the vulnerability (and its fix) does not get announced publicly.&lt;/p&gt; &lt;p&gt;There are two reasons not to announce a security vulnerability, in my view:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;You don&amp;#39;t want to.&lt;/li&gt; &lt;li&gt;You can&amp;#39;t.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Let&amp;#39;s subdivide reason 1, &amp;quot;You don&amp;#39;t want to&amp;quot;:&lt;/p&gt; &lt;ol&gt; &lt;ol&gt; &lt;li&gt;You feel it would adversely affect public opinion, stock price, user retention...&lt;br /&gt;Well, that&amp;#39;s kind of bogus, isn&amp;#39;t it? Given some of the vulnerability announcements that have appeared, what on earth could be worse than remote execution, elevation of privilege, and complete control over your system? The only way to make this accusation is to assert that the vendor randomly picks vulnerabilities to announce or not announce, to somehow reduce the overall numbers - and then manages to do so in such a way that noone else notices the vulnerability that was fixed.&lt;br /&gt;That&amp;#39;s not security, and any vendor who did that would find its security staff soon revolting against that practice. There isn&amp;#39;t enough of a glut of security workers to be engaging in a practice that assumes you can hire more to replace the disgusted ones that quit.&lt;/li&gt; &lt;li&gt;You&amp;#39;re tired of going through the process of documenting the bug, its workarounds and/or mitigations, and would rather be doing something else, like, oh, I don&amp;#39;t know, fixing more vulnerabilities.&lt;br /&gt;That&amp;#39;s not good security - create a more streamlined and automated process for creating the announcements, and do both - find and fix more vulnerabilities &lt;u&gt;and&lt;/u&gt; make announcements for the ones you find. If you&amp;#39;re too busy to announce all the vulnerabilities in your product, you&amp;#39;re too busy to fix them all.&lt;/li&gt; &lt;li&gt;You found the vulnerability internally, and would like to prevent it from being exploited, by releasing the patch along with an announced fix and hoping people install it.&lt;br /&gt;That&amp;#39;s not terribly reliable as a patching policy. It makes some small sense for related fixes, but then why wouldn&amp;#39;t you announce that as a related fix in the related announcement? Perhaps it makes sense for architectural fixes, where the only good fix is to go to the next level of service pack, but then wouldn&amp;#39;t you want to publicise workarounds for those who can&amp;#39;t apply the next service pack for one reason or another?&lt;br /&gt;But the biggest reason not to do this is that when you release a patch, people will reverse-engineer it, to figure out how to exploit the unpatched version - and they&amp;#39;ll find the change you didn&amp;#39;t mention as well as the one you did, and will exploit both of them. But your users will only be aware of one problem that needs patching, and may have decided that they can mitigate that without patching.&lt;br /&gt;So, pretty much bad security on that approach, too.&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt; &lt;p&gt;So, &amp;quot;You don&amp;#39;t want to&amp;quot; comes out as bad security, and it&amp;#39;s the sort of bad security that you would have to fix to employ - and continue to employ - a halfway decent security team.&lt;/p&gt; &lt;p&gt;What about &amp;quot;You can&amp;#39;t&amp;quot; - how could that come about?&lt;/p&gt; &lt;ol&gt; &lt;ol&gt; &lt;li&gt;You have a legal judgement or contract requirement forbidding you from disclosing vulnerabilities. Hey, Microsoft has some of the best and most expensive lawyers on the planet, but even they get stuck with tough legal decisions that they have to abide with, and can&amp;#39;t do anything about. If a security vulnerability was considered to be a &amp;quot;threat to national security&amp;quot;, the current administration (and possibly many others) would be only too quick to deem it so secret that no-one could reveal its presence. And once you accept that possibility, it isn&amp;#39;t hard to think of too many circumstances where a company might be forced to keep a vulnerability quiet.&lt;/li&gt; &lt;li&gt;You know enough to fix the code, but not enough to classify the vulnerability or explain its workarounds or mitigations.&lt;br /&gt;Yeah, that&amp;#39;s pretty much the truth for all the announced vulnerabilities, too - how many times have you seen a vulnerability announcement that says &amp;quot;this cannot be exploited remotely&amp;quot;, followed by one a few days later with updated information that reveals that, oh yes it can. This doesn&amp;#39;t appear to be a good reason not to announce a vulnerability.&lt;/li&gt; &lt;li&gt;You don&amp;#39;t know the vulnerability is there, or you don&amp;#39;t realise that you fixed a vulnerability.&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt; &lt;p&gt;Okay, that last one&amp;#39;s the topper, isn&amp;#39;t it? How can you announce a fix for a vulnerability that you don&amp;#39;t know about?&lt;/p&gt; &lt;p&gt;Clearly, you can&amp;#39;t.&lt;/p&gt; &lt;p&gt;Just as clearly, perhaps you&amp;#39;re thinking, you can&amp;#39;t fix a vulnerability that you don&amp;#39;t know about, right?&lt;/p&gt; &lt;p&gt;Wrong. You can very easily fix a vulnerability about which you know nothing. Here&amp;#39;s a couple of hypothetical examples:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;After we moved into our new house, we changed all the locks on the doors. Why? Because the new locks were prettier. In doing so, we fixed a vulnerability (the former owner could have kept the keys, and exploited us through the old locks) - but we didn&amp;#39;t intend to fix the vulnerability, we just wanted prettier locks.&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;Years ago, I needed a piece of functionality that wasn&amp;#39;t provided by the Win16 API, so I wrote my own routine to do file path parsing. A couple of years back, I dropped support for Windows 3.1, and in a recent code review, I spotted that the file path parsing routine was superfluous. So I removed it. In removing it, I didn&amp;#39;t spend a lot of time looking at the code - there was a vulnerability in there, but who does a code review of a function they&amp;#39;re removing? So now, I&amp;#39;ve fixed a vulnerability that I didn&amp;#39;t know existed.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Too many times, we assert evil intent for those actions that we disagree with. Ignorance is a far better explanation, along with incompetence, expediency, and just plain lack of choice. Note that ignorance is no bad thing - as in my hypothetical case, a genuine attempt to improve quality leads to a security improvement of which the developer was wholly ignorant.&lt;/p&gt; &lt;p&gt;Whether vendors don&amp;#39;t want to disclose all of their vulnerabilities when patching, or simply can&amp;#39;t, because they didn&amp;#39;t realise the scope of a fixed vulnerability, it&amp;#39;s important to stay current with patches wherever that would not interfere with your production applications. Because one day there will be a flaw patched, which your company will be attacked through. If you didn&amp;#39;t apply that patch, you will be owned.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1600135" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/alunj/archive/tags/General+Security/default.aspx">General Security</category><category domain="http://msmvps.com/blogs/alunj/archive/tags/Things+I+Learned+At+Microsoft/default.aspx">Things I Learned At Microsoft</category></item><item><title>Retro-bundling - another suck of the Apple</title><link>http://msmvps.com/blogs/alunj/archive/2008/03/21/1549816.aspx</link><pubDate>Sat, 22 Mar 2008 04:15:47 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1549816</guid><dc:creator>Alun Jones</dc:creator><slash:comments>8</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/alunj/rsscomments.aspx?PostID=1549816</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/alunj/commentapi.aspx?PostID=1549816</wfw:comment><comments>http://msmvps.com/blogs/alunj/archive/2008/03/21/1549816.aspx#comments</comments><description>&lt;p&gt;I thought I was done blogging about Apple Software Update, having removed QuickTime from my system completely, and sworn never to install it again or watch another QT or MOV file.&lt;/p&gt; &lt;p&gt;But nooo, someone had to spoil it by &lt;a title="Jesper appeals to the EU - tongue firmly in cheek" href="http://msinfluentials.com/blogs/jesper/archive/2008/03/21/help-us-nellie-please-help-us.aspx"&gt;telling me what Apple Software Update did next&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;If you&amp;#39;re unfortunate enough to have QuickTime installed with Apple Software Update, you&amp;#39;ll already have seen it.&lt;/p&gt; &lt;p&gt;&lt;img src="http://msinfluentials.com/blogs/jesper/ApplePushingSafariIllegally.jpg" alt="" /&gt;&lt;/p&gt; &lt;p&gt;Not only is Apple going to offer you iTunes and QuickTime as an &amp;quot;update&amp;quot; (despite you not actually having iTunes installed in the first place), they&amp;#39;re also going to offer you Safari, the feature-light Apple web browser, as an &amp;quot;update&amp;quot; (again, even though you haven&amp;#39;t installed it). And they&amp;#39;re going to check the box, so if you think you&amp;#39;re just updating components you fetched for yourself, you&amp;#39;ll accidentally install this one, too. And they&amp;#39;re going to ask you every boot until you disable the check - and then they&amp;#39;ll just re-enable the prompt next time they have a patched version to release.&lt;/p&gt; &lt;p&gt;What next, &amp;quot;we suggest you update to Bootcamp and Mac OS X, please wait while we install, and don&amp;#39;t mind the reboots&amp;quot;?&lt;/p&gt; &lt;p&gt;Seriously, Apple, this just makes you look seriously unethical. You can&amp;#39;t get people to install Safari legitimately, by enticing them to voluntarily download and install it, so you have to sneak it in by implying it&amp;#39;s an update to QuickTime. What does that say about Safari? You can&amp;#39;t even give it away? You have to foist it on the unwilling?&lt;/p&gt; &lt;p&gt;Grow up.&lt;/p&gt; &lt;p&gt;I suggest we call this behaviour &lt;strong&gt;&lt;em&gt;Retro-Bundling&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Bundling&lt;/strong&gt;, of course, is when you buy a piece of software, or download it for free, and along with it comes Firefox or the Google Toolbar. Irritating, especially if you don&amp;#39;t want them, because half of your time in getting the software down was taken up in downloading something that you&amp;#39;re going to say &amp;quot;no&amp;quot; to. But at least you only have to say no that one time - or when you download the next version.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Retro-Bundling&lt;/strong&gt;, then, would be when, after you already have the software of your choice installed, its manufacturer decides that they&amp;#39;d like to have bundled something else onto your system, so they try to slip it in the back door without you noticing.&lt;/p&gt; &lt;p&gt;I am glad to say, to judge from &lt;a title="Someone whose blog I never visited before." href="http://john.jubjubs.net/2008/03/21/apple-software-update/"&gt;comments at other blogs&lt;/a&gt;, that I&amp;#39;m not the only one that thinks this is utterly reprehensible behaviour. Perhaps this is the way things are done in the Apple world - you just sit happily back as your vendor dumps more and more product into your lap.&lt;/p&gt; &lt;p&gt;Consider this - how would you have reacted, if next time Office for Mac was checking for updates, it came back and offered to update Word, Excel Internet Explorer and Silverlight? Even though you didn&amp;#39;t have those last two on your system. Oh, and they were selected automatically, and the default button press would install them all.&lt;/p&gt; &lt;p&gt;&lt;em&gt;Update: Someone mentioned to me that Microsoft does indeed offer Silverlight on Windows Update to Windows users even if you don&amp;#39;t have Silverlight installed already. That sucks, too. It&amp;#39;s not quite as heavy an application as Safari and iTunes, but it&amp;#39;s still wrong to offer &amp;quot;updates&amp;quot; that consist of an application you don&amp;#39;t have. Actions like this will cause people to stop accepting updates as a regular part of their computing schedule - and that can&amp;#39;t help the health of their computers.&lt;/em&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1549816" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/alunj/archive/tags/Programmer+Hubris/default.aspx">Programmer Hubris</category><category domain="http://msmvps.com/blogs/alunj/archive/tags/Miscellany+-+not+security/default.aspx">Miscellany - not security</category><category domain="http://msmvps.com/blogs/alunj/archive/tags/What+my+wife+knows/default.aspx">What my wife knows</category></item><item><title>Random leap-day events.</title><link>http://msmvps.com/blogs/alunj/archive/2008/02/29/1528911.aspx</link><pubDate>Sat, 01 Mar 2008 02:47:24 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1528911</guid><dc:creator>Alun Jones</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/alunj/rsscomments.aspx?PostID=1528911</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/alunj/commentapi.aspx?PostID=1528911</wfw:comment><comments>http://msmvps.com/blogs/alunj/archive/2008/02/29/1528911.aspx#comments</comments><description>&lt;p&gt;A semi-hobby of mine is that of date- and time-related issues with computers. Something that we all take for granted, and assume to be easy, is actually incredibly complex, with rules that depend on where you are, when you are, which laws you follow, which religion you believe in, and any number of other steps. &lt;p&gt;I knew there&amp;#39;d be one or two events for leap day to comment on - here&amp;#39;s a selection for your amusement: &lt;p&gt;&amp;quot;&lt;a href="http://www.usatoday.com/travel/flights/2008-02-29-united-leap-day_N.htm"&gt;Software Snafu delays United&amp;#39;s Leap Day check-ins&lt;/a&gt;&amp;quot; - a spokesman &amp;quot;says United didn&amp;#39;t have any such problems with the software on Leap Day four years ago.&amp;quot; - not much thought given, I suppose, as to whether there might have been an update or patch in those four years. &lt;p&gt;Microsoft&amp;#39;s SQL Server 2008 - two days after the product launch in Los Angeles:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;“We have recently discovered an issue with SQL Server 2008 CTPs that result &lt;br /&gt;in SQL Server 2008 not starting on Feb 29 GMT only. We recommend that you do &lt;br /&gt;not run or install this CTP on Feb 29 GMT to minimize any impact in your &lt;br /&gt;environment. You can install starting on March 1 GMT. If you have already &lt;br /&gt;encountered issues, contact &lt;a href="mailto:sqlbeta@microsoft.com"&gt;sqlbeta@microsoft.com&lt;/a&gt; before taking any further &lt;br /&gt;steps.”&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;a href="http://blogs.technet.com/sbs/archive/2008/01/15/the-ceicw-certificate-generator-will-be-out-of-the-office-on-february-29-2008.aspx"&gt;Microsoft&amp;#39;s Windows Small Business Server&lt;/a&gt; can&amp;#39;t issue itself a certificate today, because when it creates the certificate, it makes it valid until today&amp;#39;s date, five years from now. That would be 2/29/2013, which isn&amp;#39;t a valid date. Splat. &lt;p&gt;&lt;a href="http://www.wspa.com/midatlantic/spa/news.apx.-content-articles-SPA-2008-02-29-0018.html"&gt;South Carolina&amp;#39;s DMV&lt;/a&gt; brought down because of &amp;quot;a bug in one of the programs that calculates the date&amp;quot;. &lt;p&gt;&lt;a href="http://www.cbc.ca/canada/british-columbia/story/2008/02/28/bc-leapdayoff.html"&gt;Electronic Arts give their employees a day off for Leap Day&lt;/a&gt; - I was going to make some weak joke about &amp;quot;an EA spokesman said that as the following day was a Saturday, they expected everyone in the office as normal&amp;quot; - but then I read the spokesman&amp;#39;s comments from the article: “The next leap year isn&amp;#39;t until 2012, but the company is trying to come with a reason to give its employees another day off in 2009.” So there you are, if you work at EA, you get another day off work next year. Write down family members&amp;#39; names and addresses so you can contact them again when next you get to leave the office and go out into the &amp;quot;big blue room&amp;quot;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1528911" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/alunj/archive/tags/Miscellany+-+not+security/default.aspx">Miscellany - not security</category></item><item><title>CS-RCS Pro on Vista</title><link>http://msmvps.com/blogs/alunj/archive/2008/02/26/1525222.aspx</link><pubDate>Tue, 26 Feb 2008 19:55:06 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1525222</guid><dc:creator>Alun Jones</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/alunj/rsscomments.aspx?PostID=1525222</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/alunj/commentapi.aspx?PostID=1525222</wfw:comment><comments>http://msmvps.com/blogs/alunj/archive/2008/02/26/1525222.aspx#comments</comments><description>&lt;p&gt;I&amp;#39;ve been trying back and forth to get &lt;a href="http://www.componentsoftware.com"&gt;CS-RCS Pro&lt;/a&gt;, a version control suite, to work on Windows Vista.&lt;/p&gt; &lt;p&gt;I like CS-RCS Pro for a number of reasons:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Files stored in CS-RCS Pro are kept in a simple format, open and well-documented. As a result, if I ever have to move away from CS-RCS Pro (say, for instance, if they go out of business, or stop supporting it), I stand a good chance of reconstructing my versioning information completely in whatever product I move to, if only by re-creating files at each epoch and then checking them in to the new tool.  &lt;li&gt;CS-RCS Pro integrates with Visual Studio. I can check files in and out while I&amp;#39;m editing them.  &lt;li&gt;CS-RCS Pro integrates with Explorer, as a Shell Extension, so that you can right-click on source files, and check them in from there.  &lt;li&gt;Of course, most important is that for single users, it&amp;#39;s free.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;But that last point is the cause of a big problem.&lt;/p&gt; &lt;p&gt;Here&amp;#39;s the sequence I have to deal with:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;I have the single-user version of CS-RCS Pro.  &lt;li&gt;I use best practices for development of secure applications, particularly as regards running my software &lt;u&gt;and&lt;/u&gt; my development tools as a restricted user unless it is strictly necessary to become an admin to test admin-level features, or to install / uninstall software or services, or to debug code that is running a different user context from my own.  &lt;li&gt;CS-RCS Pro insists that the user who installs it is also the user who runs it.  &lt;li&gt;CS-RCS Pro must be installed by an administrator.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;I had originally intended to follow the appropriate installation practice for an enterprise application - that it should be installed by a recognised administrator, and then any post-install setup to customise for the end-user would be carried out by that end-user for themselves.&lt;/p&gt; &lt;p&gt;This didn&amp;#39;t work, as CS-RCS Pro configured the version control tree to be used by the administrative user, making it impossible for my restricted user to access the files.&lt;/p&gt; &lt;p&gt;I tried simply editing the ownerships and ACLs - that didn&amp;#39;t work - and then to additionally edit the configuration files, where it mentioned the name of my administrative user. That worked for a short while, but I noticed that every time I used MSTSC - Remote Console - also known as the Terminal Services Client - to access the system, the shell extension that CS-RCS Pro installs took up 100% CPU, and required that I restart Explorer. There are still a few applications that don&amp;#39;t work well when you kill Explorer from underneath them, and so this was somewhat of an untenable position.&lt;/p&gt; &lt;p&gt;Besides, this was an awful lot of effort to go through in order to get version control going.&lt;/p&gt; &lt;p&gt;Finally, it hit me how I should do this properly. It&amp;#39;s not clean and it&amp;#39;s not clever, and ComponentSoftware, the folks behind CS-RCS Pro, should consider how to change their installer to avoid this issue.&lt;/p&gt; &lt;p&gt;The simple five-step process is as follows - let&amp;#39;s say Wayne, an administrator, wants to install the software for Sharon, a restricted user:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Wayne adds Sharon to the Local Administrators group on the machine to which Wayne will be installing CS-RCS Pro.  &lt;li&gt;Wayne logs on as Sharon (*)  &lt;li&gt;Wayne installs the application.  &lt;li&gt;Wayne logs off Sharon&amp;#39;s account.  &lt;li&gt;Wayne removes Sharon from the Local Administrators group.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;(*) Note that asterisk - that&amp;#39;s the troubling part. Actually, step 1 is troubling too, but only because Sharon may have other processes trying to log in with elevated rights, should they ever be granted.&lt;/p&gt; &lt;p&gt;Step 2 requires either that Wayne allows his user, restricted though she is meant to be, to log on as an administrator - what if she quickly runs some tool that you don&amp;#39;t want her to run?&lt;/p&gt; &lt;p&gt;Okay, so you drag her away from the console immediately after she types her password - but what if she&amp;#39;s got startup items to add an administrative user on her behalf, or simply to stay in memory (as a service, say) and run with those enhanced privileges, to allow exploit later?&lt;/p&gt; &lt;p&gt;Alright, so what&amp;#39;s the safest way? The only good way I can think of is this:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Wayne resets Sharon&amp;#39;s password.  &lt;li&gt;Wayne adds Sharon&amp;#39;s account to Local Administrators. Note that Sharon can&amp;#39;t log on at this point.  &lt;li&gt;From a command prompt in Wayne&amp;#39;s restricted user account, Wayne uses the &lt;em&gt;runas&lt;/em&gt; command to execute the installation script in Sharon&amp;#39;s new administrative context. Runas reduces, and possibly eliminates, the chance that this administrative context will have the ability to run Sharon&amp;#39;s own code (unless the installation script does so).  &lt;li&gt;Wayne removes Sharon from the Local Administrators account.  &lt;li&gt;Wayne sets Sharon&amp;#39;s account to force a password change after the next logon.  &lt;li&gt;Wayne tells Sharon her new password.  &lt;li&gt;If this is not a domain environment, Sharon must change her password back to what it used to be, so that it is possible for her to access her protected data.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Some of you are probably reading this and wondering why I bother - after all, in many environments, developers insist on running as administrator all the time, because their development tools don&amp;#39;t support anything else.&lt;/p&gt; &lt;p&gt;Well, it&amp;#39;s time your developers - and their tools - grew up. Yes, I can quote, just as any other developer can, a number of cases where administrative access is required - although many developers actually get this wrong. You can run Visual Studio 2005 as a non-administrator. You can debug your own code running in your own logon session as a non-administrator.&lt;/p&gt; &lt;p&gt;Developers are very often the only people to run some sections of the code that they build, until it reaches the hands of the users. As such, developers need to spend as much time as possible, when they run their code, working in the same kind of user context as their users will have.&lt;/p&gt; &lt;p&gt;In general, developers should follow the same principle as other administrators - their day-to-day tasks (e-mail, web browsing, and yes, development) should be done in restricted user accounts; administrative user accounts should be available, but their use should be restricted to those operations which absolutely require administrative access, and those operations should be reviewed often enough to ensure that they need administrative access. Tools and environments grow and change, and a tool which yesterday required administrative access may run tomorrow without. LogonUser, for instance, used to require complete system access - today it can be called by any user.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1525222" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/alunj/archive/tags/General+Security/default.aspx">General Security</category><category domain="http://msmvps.com/blogs/alunj/archive/tags/Programmer+Hubris/default.aspx">Programmer Hubris</category><category domain="http://msmvps.com/blogs/alunj/archive/tags/Windows+Vista/default.aspx">Windows Vista</category><category domain="http://msmvps.com/blogs/alunj/archive/tags/UAC/default.aspx">UAC</category></item><item><title>Dealing in Vulnerabilities - Denying the Vendor</title><link>http://msmvps.com/blogs/alunj/archive/2008/02/07/1501848.aspx</link><pubDate>Thu, 07 Feb 2008 20:20:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1501848</guid><dc:creator>Alun Jones</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/alunj/rsscomments.aspx?PostID=1501848</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/alunj/commentapi.aspx?PostID=1501848</wfw:comment><comments>http://msmvps.com/blogs/alunj/archive/2008/02/07/1501848.aspx#comments</comments><description>&lt;p&gt;Full disclosure, responsible disclosure, malicious exploit use, there are so many ways to act when you find a vulnerability.&lt;/p&gt;
&lt;p&gt;What about disclosure to a select band of people (selected only by their ability to pay you a bucket of money every year), and demonstrating the vulnerability publicly, while simultaneously withholding details of the vulnerability from the vendor in whose product you found the hole?&lt;/p&gt;
&lt;p&gt;That&amp;#39;s what Russian Security research company Gleg is doing right now with RealNetworks, according to an Analysis piece in this week&amp;#39;s &lt;a title="eWeek, what used to be PC Week" href="http://www.eweek.com/"&gt;eWeek&lt;/a&gt; (sorry, eWeek, I&amp;#39;d link to the article, but I couldn&amp;#39;t find it online).&lt;/p&gt;
&lt;p&gt;The researchers at Gleg found a vulnerability that allows them to execute their choice of code on any system whose user they can convince to play a song in RealPlayer - and there&amp;#39;s not a lot of convincing that needs to go on.&lt;/p&gt;
&lt;p&gt;RealNetworks have contacted Gleg and requested, on a number of occasions, to receive details of the vulnerability. Gleg refuses. Repeatedly.&lt;/p&gt;
&lt;p&gt;Why?&lt;/p&gt;
&lt;p&gt;&amp;quot;We need an exclusive time period to protect our customers...&amp;quot; and &amp;quot;We tried to work with vendors in the past and received a very negative experience.&amp;quot;&lt;/p&gt;
&lt;p&gt;If this &amp;quot;negative experience&amp;quot; is the usual complaint of vulnerability researchers, it is that vendors are non-responsive when vulnerabilities are reported - clearly in this case, that&amp;#39;s not true. RealNetworks are asking Gleg to allow them to respond to the vulnerability.&lt;/p&gt;
&lt;p&gt;Subscriptions to vulnerability researchers&amp;#39; &amp;quot;services&amp;quot; already seem rather like a protection racket - &amp;quot;pay us every month, so we can tell you how to prevent your systems from being exploited by something that we found&amp;quot;.&lt;/p&gt;
&lt;p&gt;With this refusal to disclose to the vendor without them becoming a customer first, this seems more like blackmail.&lt;/p&gt;
&lt;p&gt;As Dave Aitel of Immunity states, for RealNetworks to subscribe to Gleg&amp;#39;s service might very well be &amp;quot;a drop in the bucket for them&amp;quot;, but consider that it&amp;#39;s Gleg that discovered&amp;nbsp;this vuln, it might be Immunity for the next vuln, you can&amp;#39;t predict who&amp;#39;s going to find the next vulnerability in your software. A few drops and you&amp;#39;ve overflowed your bucket. [For those of us vendors with a thimble-sized bucket, a single such drop is going to be too much.] How do you go to the CFO and ask for more money because there&amp;#39;s another dozen security research companies starting up this month? How do you classify the return on investment?&lt;/p&gt;
&lt;p&gt;Oh yeah, Immunity... &amp;quot;Immunity does not share its findings with affected vendors&amp;quot; either, according to the article.&lt;/p&gt;
&lt;p&gt;I understand that security researchers have to feed their families, but there has to be a better way than protection rackets and blackmail.&lt;/p&gt;
&lt;p&gt;I&amp;#39;ve often stated that I got into security because I wanted in some small way to help save the world - I don&amp;#39;t like people who are apparently in this business solely to make money, and with no interest for improving the world around them. It&amp;#39;s a short step from there to developing malware for pay.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: Just to prove I&amp;#39;m not making this one up (eWeek, where&amp;#39;s that article online?), the story is also reported at &lt;a class="" href="http://www.daniweb.com/blogs/entry2060.html"&gt;DaniWeb&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1501848" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/alunj/archive/tags/General+Security/default.aspx">General Security</category></item><item><title>MMR vs Autism - Amateur Epidemiology</title><link>http://msmvps.com/blogs/alunj/archive/2008/02/05/1497842.aspx</link><pubDate>Tue, 05 Feb 2008 19:20:23 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1497842</guid><dc:creator>Alun Jones</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/alunj/rsscomments.aspx?PostID=1497842</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/alunj/commentapi.aspx?PostID=1497842</wfw:comment><comments>http://msmvps.com/blogs/alunj/archive/2008/02/05/1497842.aspx#comments</comments><description>&lt;p&gt;Once again, the headlines declare, &amp;quot;&lt;a title="No link between autism and MMR vaccine" href="http://www.msnbc.msn.com/id/23001150/"&gt;No link between autism and MMR vaccine&lt;/a&gt;&amp;quot;.&lt;/p&gt; &lt;p&gt;The story, however, is a different matter:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;The study, published on Tuesday in the Archives of Disease in Childhood, found no evidence of any abnormal biological response from the shot that could point to a link between the vaccine and autism.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Hmm... an absence of evidence of a link does not mean evidence of the absence of a link.&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&amp;quot;This study really supports the view these are safe vaccines,&amp;quot; said David Brown, a researcher at Britain&amp;#39;s Health Protection Agency who worked on the study. &amp;quot;The evidence is now so solid there really isn&amp;#39;t a need for further studies here.&amp;quot;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Same old guff that&amp;#39;s been said at the conclusion of a number of other studies, all of whom appear almost deliberately to have been set up to provide statistics that imply the absence of a link. Perhaps the most famous is the &amp;quot;Danish study&amp;quot;. The study demonstrated that there was actually a higher risk of autism among those who did not receive the MMR. What was not noted in that study is that it occurred at a time when the suggestion of an MMR / autism connection was big news, so those children already at risk of autism were more likely to turn up in the group of children whose parents refused to give their children MMR. A self-selecting study is no study at all.&lt;/p&gt; &lt;p&gt;As Jackie Fletcher of &lt;a href="http://jabs.org.uk/"&gt;JABS&lt;/a&gt; puts it:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;It is making a leap from having the actual data on the antibodies and saying MMR does not cause autism.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Persistent measles infection is only one of the theories on why there appears to be a connection between the MMR vaccination and autism - my favourite explanation by far is that there are children at risk from autism, and that every time their bodies are put under significant stress (such as the high fevers associated with vaccination), there is a chance that a regression will be triggered. That&amp;#39;s a very loose theory, granted, but there are others - one very interesting suggestion is that the study quoted in today&amp;#39;s news articles focuses on children aged 10 - 12, and if those children had persistent measles infection from vaccination at or around 2 years old, it would not be evident from antibodies in the bloodstream, but in the spinal column. I don&amp;#39;t know how true that claim is, though.&lt;/p&gt; &lt;p&gt;Now, you might say that the studies that have suggested a link between MMR and autism are also biased in their construction, and designed to give the results that would imply such a link.&lt;/p&gt; &lt;p&gt;I agree.&lt;/p&gt; &lt;p&gt;An appropriate study, in my opinion, would be to select candidates who are &amp;quot;at risk&amp;quot; from autism - where a member of the family has autism, or where a member of the family is an engineer, or where there is higher-than-average incidence of college education - and follow their babies from birth through age five or so. Some of the group would be given the MMR in one visit, as is the current method of operation, others would be given separate Measles, Mumps and Rubella shots in three visits, several weeks apart. A little tricky to do this as a double-blind study, but not impossible - the MMR patients would simply receive a saline shot instead for two of their three visits.&lt;/p&gt; &lt;p&gt;Such a study would get over the issue that, with an incidence rate of 1 in 150, and only a fraction of that being suggested as related to MMR vaccination, autism causes disappear into statistical noise; such a study also allows for possible weighting factors to be recognised and balanced (by assigning study members such that particular combinations of weighting factors appear more or less equally in each cohort), in a way that has not been possible, or not been tried, with other studies.&lt;/p&gt; &lt;p&gt;While there are many irrational views on both sides of this debate, sadly it seems as though these are the views that make the loudest noise.&lt;/p&gt; &lt;p&gt;A scientific approach to this discussion has not yet been considered, in my opinion.&lt;/p&gt; &lt;p&gt;Most parents of autistic and at-risk children I have spoken to (and granted, that&amp;#39;s not in the hundreds that would be required for a good sample) are not looking to make the choice between MMR or not vaccinating their children - they are artificially limited by the government to making that choice. The lack of availability of individual vaccines for Measles, Mumps and Rubella makes the choice one of &amp;quot;MMR and possible-to-likely autistic regression&amp;quot; versus &amp;quot;possible measles, mumps or rubella infection - maybe in someone else&amp;#39;s kid&amp;quot;. I think that particularly when it comes to illnesses like Rubella, where the risk is to the in-utero fetus of an infected mother-to-be, perhaps we ought to consider whether it is safer to vaccinate girls as they approach their fertile years, rather than vaccinating everyone a year or two after birth, in an attempt to provide &amp;quot;herd immunity&amp;quot;.&lt;/p&gt; &lt;p&gt;Another thing I&amp;#39;m not looking for is to blame all (or even most!) cases of autism on the MMR vaccine, or thimerosal, or any of a number of other causes. There are so many stories of autistic onset, from the kid who &amp;quot;everyone could see he was different from the moment he was born&amp;quot;, to the kid who develops normally into a babbling toddler and then suddenly shuts up and retreats into his mental cocoon over the course of a few days. Clearly, there&amp;#39;s a genetic component that at least creates a susceptibility, but for something to happen so suddenly, and so coincidentally &amp;quot;on time&amp;quot;, it seems like there has to be an environmental component that acts like a trigger.&lt;/p&gt; &lt;p&gt;With the government continually feeding us crap science, and no physical method to reliably screen for a majority of autism cases, it&amp;#39;s no wonder many parents feel like emulating their children at their worst autistic moments, repeatedly banging our heads against the wall, because it&amp;#39;s better than not knowing why our heads hurt.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1497842" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/alunj/archive/tags/Autism/default.aspx">Autism</category></item><item><title>Google on Microsoft / Yahoo! Deal: "Wah!"</title><link>http://msmvps.com/blogs/alunj/archive/2008/02/04/1495751.aspx</link><pubDate>Mon, 04 Feb 2008 20:21:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1495751</guid><dc:creator>Alun Jones</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/alunj/rsscomments.aspx?PostID=1495751</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/alunj/commentapi.aspx?PostID=1495751</wfw:comment><comments>http://msmvps.com/blogs/alunj/archive/2008/02/04/1495751.aspx#comments</comments><description>&lt;p&gt;In case you&amp;#39;ve been under a rock, Microsoft appears to be trying to take advantage of Yahoo! Inc&amp;#39;s recent poor performance to &lt;a title="Microsoft wants to purchase Yahoo!" href="http://news.bbc.co.uk/2/hi/business/7222114.stm"&gt;make an unsolicited offer&lt;/a&gt; (as far as I can tell, it&amp;#39;s not a hostile bid until and unless Yahoo! officers declare that they will be fighting against it by offering a deal they think their stockholders will prefer) to buy the company.&lt;/p&gt;
&lt;p&gt;Clearly, given Microsoft&amp;#39;s intent to compete with Google, this is a great move for Microsoft - the Microsoft search engines have always lacked popularity compared to Google, and Yahoo!&amp;#39;s engines are still hugely popular. With Yahoo!&amp;#39;s large user base for other web pages, this acquisition amounts to a huge number of eyeballs to which Microsoft can expose their Internet product strategies.&lt;/p&gt;
&lt;p&gt;Google, obviously, &lt;a title="Google troubled by Microsoft move" href="http://news.bbc.co.uk/2/hi/business/7225599.stm"&gt;is a little perturbed&lt;/a&gt; by this.&lt;/p&gt;
&lt;p&gt;How do they choose to express their concern?&lt;/p&gt;
&lt;p&gt;&lt;a class="" title="http://googleblog.blogspot.com/2008/02/yahoo-and-future-of-internet.html" href="http://googleblog.blogspot.com/2008/02/yahoo-and-future-of-internet.html"&gt;&lt;img alt="The Official Google Blog - Insights from Googlers into our products, technology and the Google culture" src="http://photos1.blogger.com/x/blogger2/7380/1325/1600/z/222811/gse_multipart53168.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;By pointing to the openness and innovation which has underscored the Internet&amp;#39;s development throughout the years, and which has been the reason that the Internet has remained popular and usable.&lt;/p&gt;
&lt;p&gt;Now, I will definitely agree that Microsoft is known for locking up many of their most interesting innovations inside of patents.&lt;/p&gt;
&lt;p&gt;However, the company is also very well known for contributing technical standards to the Internet body of knowledge as expressed in the Internet RFCs.&lt;/p&gt;
&lt;p&gt;Let&amp;#39;s see how innovative and open Google has been, by searching for &amp;quot;Google&amp;quot; in the Internet RFCs - let&amp;#39;s see how many employees have written these open and innovative documents.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;RFC 4473: &amp;quot;...search engines such as Google.&amp;quot; is the only occurrence - so it&amp;#39;s not written by a Google employee.&lt;/li&gt;
&lt;li&gt;RFC 4646: Tags for Identifying Languages - authored&amp;nbsp; by Yahoo! and Google employees.&lt;/li&gt;
&lt;li&gt;RFC 4647: Matching of Language Tags - essentially part II of RFC 4646, by the same authors.&lt;/li&gt;
&lt;li&gt;RFC 4657: Contributors include a Google employee&lt;/li&gt;
&lt;li&gt;RFC 4772: Notes that Google was searched.&lt;/li&gt;
&lt;li&gt;RFC 4693: An administrative note about the IETF, written by a Google employee.&lt;/li&gt;
&lt;li&gt;RFC 4838: Delay-Tolerant Networking Architecture - technically, Vint Cerf was a Google employee at the time, but appears to have done this as work for JPL.&lt;/li&gt;
&lt;li&gt;RFC 4954: An authentication extension for SMTP, co-written by a Google employee.&lt;/li&gt;
&lt;li&gt;RFC 4959: Authentication extension for IMAP, co-written by a Google employee.&lt;/li&gt;
&lt;li&gt;RFC 4981: Refers in passing to Google.&lt;/li&gt;
&lt;li&gt;RFC 4990: Use of addresses in GMPLS Networks, co-written by a Google employee.&lt;/li&gt;
&lt;li&gt;RFC 5023: The Atom Publishing Protocol, co-written by a Google employee.&lt;/li&gt;
&lt;li&gt;RFC 5034: POP3 Authentication extension, co-written by a Google employee.&lt;/li&gt;
&lt;li&gt;RFC 5050: Vint Cerf of Google is listed as a contributor.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;So, the number of RFCs listing Google employees as authors or co-authors is nine. If you are ruthless in your search for originality, and cut out RFCs that appear to be copies or extensions of other Google employee RFCs, as well as those that were written for other employers than Google, you get five. And one of those is a note about the way in which the IETF operates.&lt;/p&gt;
&lt;p&gt;What about Microsoft - when have Microsoft employees ever contributed time to the development of Internet RFCs?&lt;/p&gt;
&lt;p&gt;Compared to Google&amp;#39;s fourteen matches in the RFCs, &amp;quot;Microsoft&amp;quot; is found hundreds of times. So I tried to limit my search to RFCs that were likely written by Microsoft employees - a good search term for this is to find those RFCs in which either &amp;quot;Microsoft&amp;quot; or &amp;quot;Microsoft Corporation&amp;quot; is at the end of a line. I further limited the search to documents where this match was found in the first 25 lines.&lt;/p&gt;
&lt;p&gt;175 RFCs.Okay, so maybe some of those were duplicates, or unimportant ones, and Microsoft have certainly been doing this longer than Google.&lt;/p&gt;
&lt;p&gt;Google&amp;#39;s first employee-written RFC came in September 2006, so in eighteen months, they&amp;#39;ve written at most nine, at a rate of one every two months; Microsoft&amp;#39;s first is dated December 1995 - that&amp;#39;s 146 months ago, so that Microsoft employees are producing RFCs at a rate of slightly more than one every month - more than twice as fast as Google.&lt;/p&gt;
&lt;p&gt;I think that if Google wants to cry &amp;quot;shame&amp;quot; that Microsoft is not open or innovative, and that this will cause the Internet to shrivel, they should perhaps start with a little introspection.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Buying an Internet founder does not make you into a founder of the Internet.&lt;/li&gt;
&lt;li&gt;Buying an RFC author does not make you open and innovative.&lt;/li&gt;
&lt;li&gt;Complaining that a competitor&amp;#39;s proposed acquisition will stifle openness and innovation only makes sense if you are, by comparison, a champion of those two qualities - by comparison through the reading of RFCs, Google appears somewhat secretive and dull.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;P.S. Please don&amp;#39;t comment in this entry about &amp;quot;embrace and extend&amp;quot; - let&amp;#39;s face it, openness and innovation as they apply to the Internet are all about &amp;quot;embrace and extend&amp;quot; - Internet standards are published so that they can be adopted and advanced. This discussion is not about whether Microsoft copies from other companies - after all, if this is all about openness and innovation, copying is a good thing.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1495751" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/alunj/archive/tags/Things+I+Learned+At+Microsoft/default.aspx">Things I Learned At Microsoft</category><category domain="http://msmvps.com/blogs/alunj/archive/tags/Miscellany+-+not+security/default.aspx">Miscellany - not security</category></item><item><title>Get Well Scotty McLeod</title><link>http://msmvps.com/blogs/alunj/archive/2008/01/31/1489841.aspx</link><pubDate>Fri, 01 Feb 2008 06:46:44 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1489841</guid><dc:creator>Alun Jones</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/alunj/rsscomments.aspx?PostID=1489841</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/alunj/commentapi.aspx?PostID=1489841</wfw:comment><comments>http://msmvps.com/blogs/alunj/archive/2008/01/31/1489841.aspx#comments</comments><description>&lt;p&gt;I could have titled this &amp;quot;adversity shows how small our world truly is&amp;quot;.&lt;/p&gt; &lt;p&gt;I had no idea that so many of my friends, acquaintances, MVPs and Microsoft staff are also friends with Scotty McLeod - until he got hit by a train last week.&lt;/p&gt; &lt;p&gt;He is recovering, and I hope to see him sitting up and arguing the toss with me when I visit the UK in a couple of weeks.&lt;/p&gt; &lt;p&gt;Until then, I&amp;#39;m left amazed at how many familiar names pop up when I search for &amp;quot;Get Well&amp;quot; and &amp;quot;Scotty McLeod&amp;quot;.&lt;/p&gt; &lt;p&gt;Here&amp;#39;s hoping he&amp;#39;s quickly on the mend.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1489841" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/alunj/archive/tags/Miscellany+-+not+security/default.aspx">Miscellany - not security</category><category domain="http://msmvps.com/blogs/alunj/archive/tags/What+my+wife+knows/default.aspx">What my wife knows</category></item><item><title>Steve Jobs' head in a box</title><link>http://msmvps.com/blogs/alunj/archive/2008/01/29/1485723.aspx</link><pubDate>Tue, 29 Jan 2008 16:44:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1485723</guid><dc:creator>Alun Jones</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/alunj/rsscomments.aspx?PostID=1485723</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/alunj/commentapi.aspx?PostID=1485723</wfw:comment><comments>http://msmvps.com/blogs/alunj/archive/2008/01/29/1485723.aspx#comments</comments><description>&lt;p&gt;Apple&amp;#39;s latest product announcement - you can now buy Steve Jobs&amp;#39; head in a box.&lt;/p&gt;
&lt;p&gt;Here&amp;#39;s a picture of an unnamed Apple salesman demonstrating the lightness of Steve Jobs&amp;#39; head in a box:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/blogs/alunj/WindowsLiveWriter/SteveJobsheadinabox_7315/jobs%20in%20a%20box_4.jpg"&gt;&lt;img style="BORDER-RIGHT:0px;BORDER-TOP:0px;BORDER-LEFT:0px;BORDER-BOTTOM:0px;" height="169" alt="No, I told you to bring me the head of Alfredo Garcia - that&amp;#39;s Steve Jobs!" src="http://msmvps.com/blogs/alunj/WindowsLiveWriter/SteveJobsheadinabox_7315/jobs%20in%20a%20box_thumb_1.jpg" width="169" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Perhaps if any of you have heard about features of the Steve Jobs&amp;#39; head in a box (presumably later to be called the &amp;quot;iHead&amp;quot;?), please list them in comments below:&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1485723" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/alunj/archive/tags/Miscellany+-+not+security/default.aspx">Miscellany - not security</category></item><item><title>Vista's Secret Windows Firewall hole</title><link>http://msmvps.com/blogs/alunj/archive/2008/01/24/1479415.aspx</link><pubDate>Fri, 25 Jan 2008 05:19:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1479415</guid><dc:creator>Alun Jones</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/alunj/rsscomments.aspx?PostID=1479415</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/alunj/commentapi.aspx?PostID=1479415</wfw:comment><comments>http://msmvps.com/blogs/alunj/archive/2008/01/24/1479415.aspx#comments</comments><description>&lt;p&gt;First, the good news - it&amp;#39;s not a flaw in the operation of Windows Firewall on Windows Vista. It&amp;#39;s a design feature, it makes sense, and it fits in with the principle that the firewall should keep out unsolicited traffic. It&amp;#39;s not really a hole, but I thought I&amp;#39;d grab your attention.&lt;/p&gt;
&lt;p&gt;The symptom first came up in a Usenet posting (thanks, Jesper, for bringing me in) about Vista and a third-party FTP client:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;When I do a directory listing, and a PORT command is issued, and the &lt;br /&gt;server attempts to connect, it works, but at the same time a dialogue &lt;br /&gt;appears telling me it&amp;#39;s blocked, and I can keep blocking or unblock. &lt;br /&gt;I choose keep blocking but it doesn&amp;#39;t actually block it once.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Here&amp;#39;s how it looks. 
&lt;p&gt;First, if you haven&amp;#39;t got a third-party FTP client let&amp;#39;s fake it, by copying Microsoft&amp;#39;s command-line FTP client from the Windows System32 directory to another directory: 
&lt;blockquote&gt;
&lt;p&gt;C:\users\MyMe&amp;gt; copy %windir%\system32\ftp.exe&lt;br /&gt;1 file(s) copied.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;The FTP client will not display prompts to you, but that&amp;#39;s a minor issue - if it upsets you, try downloading a third-party client and trying it. 
&lt;p&gt;Anyway, here we go - let&amp;#39;s try the issue in question: 
&lt;ul&gt;
&lt;li&gt;Type &lt;strong&gt;ftp ftp.microsoft.com&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;After you see the &amp;quot;220&amp;quot; greeting message, enter &lt;strong&gt;ftp&lt;/strong&gt; as the user - press enter.&lt;/li&gt;
&lt;li&gt;Now you&amp;#39;re prompted for a password - enter anything and press enter.&lt;/li&gt;
&lt;li&gt;Once you&amp;#39;re logged on, enter &lt;strong&gt;dir&lt;/strong&gt; - again, press enter.&lt;/li&gt;
&lt;li&gt;You&amp;#39;ll see the directory listing succeed, but you&amp;#39;ll also see a warning that a connection is being blocked:&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/blogs/alunj/WindowsLiveWriter/VistasWindowsFirewallSecret_11770/image-0063_2.png"&gt;&lt;img style="BORDER-RIGHT:0px;BORDER-TOP:0px;BORDER-LEFT:0px;BORDER-BOTTOM:0px;" height="571" alt="image-0063" src="http://msmvps.com/blogs/alunj/WindowsLiveWriter/VistasWindowsFirewallSecret_11770/image-0063_thumb.png" width="999" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;em&gt;Wow - that&amp;#39;s freaky - at the same time you&amp;#39;re being told that the connection used for the file listing will be blocked, it allows the connection through!&lt;/em&gt; 
&lt;p&gt;What&amp;#39;s more, even if you specify &lt;strong&gt;Keep Blocking&lt;/strong&gt;, and then go issue another &lt;strong&gt;dir&lt;/strong&gt; command, that one succeeds. 
&lt;p&gt;&lt;em&gt;Huh? And why on earth did you make me use a copy of FTP?&lt;/em&gt; 
&lt;p&gt;Let&amp;#39;s go look at the Windows Advanced Firewall Rules for Inbound, and see if this sheds any light: 
&lt;p&gt;[That means click the Start button, type &lt;strong&gt;Firewall&lt;/strong&gt; into the search box, and right-click on &lt;strong&gt;Windows Firewall with Advanced Security&lt;/strong&gt; - select &lt;strong&gt;Run as Administrator&lt;/strong&gt; 
&lt;p&gt;and accept the elevation prompt from UAC. If you don&amp;#39;t have an elevation prompt, then you should really re-enable UAC. Now select &lt;strong&gt;Inbound Rules&lt;/strong&gt; in the left-hand pane]&lt;/p&gt;
&lt;p&gt;Me, I&amp;#39;ve got a few rules labeled &lt;strong&gt;File Transfer Program&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/blogs/alunj/WindowsLiveWriter/VistasWindowsFirewallSecret_11770/Image-0064_2.png"&gt;&lt;img style="BORDER-RIGHT:0px;BORDER-TOP:0px;BORDER-LEFT:0px;BORDER-BOTTOM:0px;" height="348" alt="Image-0064" src="http://msmvps.com/blogs/alunj/WindowsLiveWriter/VistasWindowsFirewallSecret_11770/Image-0064_thumb.png" width="829" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;That first (and fourth) rule is set to block any listening ports opened by the &lt;strong&gt;File Transfer Program&lt;/strong&gt; in &lt;strong&gt;C:\users\myme\ftp.exe&lt;/strong&gt;, the second two seem to be allowing any listening ports created by the one in &lt;strong&gt;C:\windows\system32\ftp.exe&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Obviously, that&amp;#39;s why I asked you to copy &lt;strong&gt;ftp.exe&lt;/strong&gt; to a new directory, so that any previous allowance by the firewall rules wouldn&amp;#39;t get in the way.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;So what&amp;#39;s happening here? Is the &amp;quot;&lt;strong&gt;Allow&lt;/strong&gt;&amp;quot; rule somehow overriding the &amp;quot;&lt;strong&gt;Block&lt;/strong&gt;&amp;quot; rule, even though it&amp;#39;s not dealing with the same executable?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;We can test that simply by deleting both sets of rules - go ahead and do that, I&amp;#39;ll wait for you.&lt;/p&gt;
&lt;p&gt;Didn&amp;#39;t make a bit of difference, did it? It still allowed the traffic, then prompted you if you wanted to block it. Even if you selected to &amp;quot;&lt;strong&gt;Keep Blocking&lt;/strong&gt;&amp;quot;, the next and subsequent transfers still worked, right?&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Okay - let&amp;#39;s consult the Big Book of Knowledge (alright, what I can vaguely remember after mumbleteen years in the networking world). Some routers and firewalls use an Application Layer Gateway (ALG) to translate FTP commands, and open ports. Is that what&amp;#39;s going on here?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Let&amp;#39;s take a peek at the services on this machine (as an administrator, run &lt;strong&gt;services.msc&lt;/strong&gt;):&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msmvps.com/blogs/alunj/WindowsLiveWriter/VistasWindowsFirewallSecret_11770/Image-0065_2.png"&gt;&lt;img style="BORDER-RIGHT:0px;BORDER-TOP:0px;BORDER-LEFT:0px;BORDER-BOTTOM:0px;" height="353" alt="Image-0065" src="http://msmvps.com/blogs/alunj/WindowsLiveWriter/VistasWindowsFirewallSecret_11770/Image-0065_thumb.png" width="784" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;em&gt;Bingo - there it is, the &lt;strong&gt;Application Layer Gateway Service&lt;/strong&gt;. And when you have &lt;strong&gt;Internet Connection Sharing&lt;/strong&gt; running, that&amp;#39;s what translates IP addresses in FTP commands for you, and what opens up port mappings and holes in the NAT that ICS hosts.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Oh, but wait a moment - what&amp;#39;s that in the &amp;quot;&lt;strong&gt;Status&lt;/strong&gt;&amp;quot; column?&lt;/p&gt;
&lt;p&gt;That&amp;#39;s right, nothing. This service isn&amp;#39;t running.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Something must be happening to open this port up - it&amp;#39;s not just a case of &amp;quot;port left open&amp;quot;, nor is it an outbound port. Those ports are closed tight until the FTP client starts listening for incoming data connections, and then they&amp;#39;re opened up.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Here&amp;#39;s where I go into MVP-mode, and start searching in all the nooks and crannies of the web and whatever documentation it holds.&lt;/p&gt;
&lt;p&gt;Net result - Windows Firewall in Windows Vista includes something called a &amp;quot;connection inspection engine&amp;quot;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Sounds like something from &amp;quot;&lt;/em&gt;&lt;a title="Conjunction junction, what&amp;#39;s your function?" href="http://en.wikipedia.org/wiki/Conjunction_Junction"&gt;&lt;em&gt;Schoolhouse Rock&lt;/em&gt;&lt;/a&gt;&lt;em&gt;&amp;quot;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;No, seriously, there&amp;#39;s a &amp;quot;connection inspection engine&amp;quot; for FTP - if you connect to port 21, the firewall monitors your communications on that channel, looking for PORT commands. When it finds one, it opens up a hole in the firewall for the incoming data connection.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;So why the scary dialog warning that something&amp;#39;s going to block traffic?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Probably because the dialog pops up whenever an application starts listening, whereas the connection inspection engine only opens a hole when it sees a PORT command. And an FTP client can&amp;#39;t actually give the PORT command until it&amp;#39;s started listening.&lt;/p&gt;
&lt;p&gt;So, the process goes something like this:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Start the FTP client.&lt;/li&gt;
&lt;li&gt;Connect to the FTP server on port 21, waking up the connection inspection engine.&lt;/li&gt;
&lt;li&gt;Log on, then type &lt;strong&gt;dir&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;The FTP client knows that it needs to open a data connection.&lt;/li&gt;
&lt;li&gt;To start the data connection, the FTP client binds to port 0, and starts listening.&lt;/li&gt;
&lt;li&gt;The firewall says &amp;quot;Oh no, an unknown program has started listening - better warn them that they won&amp;#39;t get any traffic.&amp;quot;&lt;/li&gt;
&lt;li&gt;The FTP client checks what port it actually got, and sends a matching PORT command.&lt;/li&gt;
&lt;li&gt;The connection inspection engine says &amp;quot;PORT command? That&amp;#39;s my cue!&amp;quot; and opens a hole in the firewall to incoming data connections.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Well, that&amp;#39;s easy, but what if I don&amp;#39;t ever want to do an FTP connection? How do I stop this from becoming a potential hacker tool?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Okay, apart from the obvious - that if a hacker could connect out to a server on port 21, nothing&amp;#39;s stopping that hacker from transferring data in - you might want to cripple this functionality.&lt;/p&gt;
&lt;p&gt;No problem - just set the following DWORD registry value to 1:&lt;/p&gt;
&lt;p&gt;HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ SharedAccess \ Parameters \ FirewallPolicy \ DisableStatefulFTP&lt;/p&gt;
&lt;p&gt;The default setting for this value on Windows Vista is 0. [It remains to be seen what value will be the default on Windows Server 2008]&lt;/p&gt;
&lt;p&gt;&lt;em&gt;How could Microsoft make this better?&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I&amp;#39;d really like to see this documented. Just so that it&amp;#39;s not a surprise to anyone.&lt;/li&gt;
&lt;li&gt;I&amp;#39;d like to know how many other connection inspection engines there are (at least one, judging from the DisableStatefulPPTP value - but I don&amp;#39;t know enough about PPTP to know how that affects operation).&lt;/li&gt;
&lt;li&gt;I&amp;#39;d like to know if I can add my own connection inspection engine to the firewall.&lt;/li&gt;
&lt;li&gt;Above all, I&amp