Sorting it all Out Michael Kaplan's random stuff of dubious value Be sure to read the disclaimer here first!
Back in January, just before the flap at the hacker's convention with the paypal.com like that used a cyrillic 'a' to prove that IDN without a way to ferret out phishing attacks, I posted my own post entitled International Domain Names? The sign on the door says 'Gone Phishing'....
It was an interesting flap because the RFCs for Internationalized Domain Names clearly points out the dangers and talks about the need to do some extra work to avoid security issues, but several browsers jumped ahead to support them and then just as quickly rushed out to turn them off by default.
Folks at Microsoft, who knew about the need to do work here first, did not jump ahead without looking. And Microsoft was complimented for not jumping in too quickly. :-)
Unicode has move in to assist with Unicode Technical Report #36: Unicode Security Considerations.
And now Microsoft has some functions to help ISVs jump in (functions that can and will also be used in future versions of Microsoft products!).
Here it is: Microsoft Internationalized Domain Names (IDN) Mitigation APIs 1.0.
From the overview:
The "Internationalized Domain Names Mitigation APIs" download includes several API functions to convert an IDN to different representations, as well as several API functions specifically intended to allow applications to mitigate some of the security risks presented by this technology. The functions IdnToAscii, IdnToUnicode, and IdnToNameprepUnicode each convert an IDN string to a particular form. The functions DownlevelGetLocaleScripts, DownlevelGetStringScripts, and DownlevelVerifyScripts allow applications to verify that the characters in a given IDN are drawn entirely from the scripts associated with a particular locale or locales. However, these functions are only helpers; applications have still to perform comprehensive threat modeling and create appropriate mitigation for these threats. Also included are the Unicode normalization APIs IsNormalizedString and NormalizeString, which are used by the mitigation APIs.
The "Internationalized Domain Names Mitigation APIs" download includes several API functions to convert an IDN to different representations, as well as several API functions specifically intended to allow applications to mitigate some of the security risks presented by this technology. The functions IdnToAscii, IdnToUnicode, and IdnToNameprepUnicode each convert an IDN string to a particular form. The functions DownlevelGetLocaleScripts, DownlevelGetStringScripts, and DownlevelVerifyScripts allow applications to verify that the characters in a given IDN are drawn entirely from the scripts associated with a particular locale or locales. However, these functions are only helpers; applications have still to perform comprehensive threat modeling and create appropriate mitigation for these threats.
Also included are the Unicode normalization APIs IsNormalizedString and NormalizeString, which are used by the mitigation APIs.
This package is supported on XP (Service Pack 2 or later) and Server 2003 (Service Pack 1 or later). And differently named functions will also be in Vista!
For info on the Normalization API functions, look here.
For info on the IDN API functions, look here.
The cool functions in the package to help with the mitigation (they make use of ISO 15942 for their script definitions):
You can use these functions as part of your strategy for dealing properly with internationalized domain names -- warning users of potentially dangerous links to information.
Awesome!
This post brought to you by "а" (U+0430, a.k.a. CYRILLIC SMALL LETTER A)