Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

twingly-url doesn't support IDNA2008, only IDNA2003 (libidn) #101

Closed
dentarg opened this issue Nov 3, 2016 · 2 comments
Closed

twingly-url doesn't support IDNA2008, only IDNA2003 (libidn) #101

dentarg opened this issue Nov 3, 2016 · 2 comments
Labels

Comments

@dentarg
Copy link
Collaborator

dentarg commented Nov 3, 2016

Failures:

  1) Twingly::URL#origin internationalized domain name given in Unicode (http://straße.de) should eq "http://xn--strae-oqa.de"
     Failure/Error: it { is_expected.to eq("http://xn--strae-oqa.de") }

       expected: "http://xn--strae-oqa.de"
            got: "http://strasse.de"

       (compared using ==)
     # ./spec/lib/twingly/url_spec.rb:305:in `block (5 levels) in <top (required)>'

Finished in 0.20734 seconds (files took 0.34129 seconds to load)
251 examples, 1 failure

From https://curl.haxx.se/docs/adv_20161102K.html

When curl is built with libidn to handle International Domain Names (IDNA), it translates them to puny code for DNS resolving using the IDNA 2003 standard, while IDNA 2008 is the modern and up-to-date IDNA standard.

This misalignment causes problems with for example domains using the German ß character (known as the Unicode Character 'LATIN SMALL LETTER SHARP S') which is used at times in the .de TLD and is translated differently in the two IDNA standards, leading to users potentially and unknowingly issuing network transfer requests to the wrong host.

For example, straße.de is translated into strasse.de using IDNA 2003 but is translated into xn--strae-oqa.de using IDNA 2008. Needless to say, those host names could very well resolve to different addresses and be two completely independent servers. IDNA 2008 is mandatory for .de domains.

curl is not alone with this problem, as there's currently a big flux in the world of network user-agents about which IDNA version to support and use.

This name problem exists for DNS-using protocols in curl, but only when built to use libidn.

We are not aware of any exploit of this flaw.

@dentarg dentarg added the bug label Nov 3, 2016
@dentarg dentarg changed the title twingly-url doesn't supprt IDNA 2008, only IDNA 2003 (libidn) twingly-url doesn't support IDNA 2008, only IDNA 2003 (libidn) Nov 3, 2016
dentarg added a commit that referenced this issue Nov 3, 2016
@dentarg dentarg changed the title twingly-url doesn't support IDNA 2008, only IDNA 2003 (libidn) twingly-url doesn't support IDNA2008, only IDNA2003 (libidn) Nov 6, 2016
@dentarg
Copy link
Collaborator Author

dentarg commented Nov 6, 2016

I say #102 fixed this, I don't know of any other cases. If we find any, let's open a new issue then.

@dentarg dentarg closed this as completed Nov 6, 2016
@dentarg
Copy link
Collaborator Author

dentarg commented Nov 6, 2016

We can keep an eye on sporkmonger/addressable#247 going forward, but I don't think it warrants it's own issue on our repo

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant