Currently browsing security

Was ist IPv6 und wann verstehen es die Leute endlich?

Posted in german, linux, security June 7, 2012

Ja ich weiß, der IPv6 Launch Day war gestern, aber da hatte ich Blutdruck und nicht so richtig Zeit euch was zu erzählen.

Jedes mal, wenn man irgendwo etwas von IPv6 hört (oder gar selbst was sagt), kommen die ach so tollen Datenschützer und schreien “Aua!” und “Ohje!” und weil ich es nicht mehr hören kann, schrei ich einfach mal selber mit. Klingt doch wie ein Plan, oder? Oh, moment, das habe ich doch letztes Jahr schonmal gemacht, aber vielleicht können nicht so viele Leute Englisch, ich versuche es auf jeden Fall nochmal.

Also lieber Herr Beuth von der Zeit Redaktion, lieber Herr Tremmel von netzpolitik.org und auch Herr Schaar, hingesetzt und zugehört, bitte!

IPv6 bringt einige Neuerungen gegenüber dem (in die Jahre gekommenen) IPv4. Die wahrscheinlich Bekannteste ist der Anstieg des Adressbereichs von 2^32 auf 2^128 IP-Adressen (Google hat mal ausgerechnet wieviel das ist). Das reicht zwar nicht, um jedem Atom auf der Erde eine eigene IPv6-Adresse zu geben, für die Menschen und ihre elektronische Spielzeuge sollte es aber reichen (hoffe ich zumindest). Aber IPv6 bringt auch IPsec mit, welches es erlaubt, direkt auf der IP Schicht zu verschlüsseln und zu authentifizieren. Und SLAAC und … eigentlich wollte ich gar nicht erzählen wie toll IPv6 ist.

Was euch stört ist die Anzahl der Adressen. Alles hat auf einmal eine eigene IP-Adresse. Jeder ist auf Schritt und Tritt verfolgbar. Ja, in ziemlich genau dem selben Maße wie heute! Wenn meine Logs nicht lügen (und das trauen sie sich nicht!), habe ich meine IPv4-Adresse mindestens seit dem 12. Februar 2012. Unverändert. Seit fast vier Monaten. Mein Provider ist Unitymedia, aber ich weiß, dass auch Andere (z.B. Vodafone) schon lange keine richtig dynamischen IPv4-Adressen mehr vergeben. Die meisten Leute sind doch eh dauer-online mit ihren Routern, da kann man denen auch die Adresse wiedergeben, wenn sie sich neu verbinden. Richtig, man ist heutzutage also schon genauso via IPv4-Adresse identifizierbar wie morgen via IPv6. Aber bei IPv6 hat doch jede Maschine (Computer, Handy, Tablet) eine ganz eigene Adresse! Aber nicht der Windows PC den jeder Schreihals zuhause hat (Update: und auch nicht bei Ubuntu), der hat die Privacy Extensions automatisch an und bei OSX und Linux kann man es ganz einfach einschalten. Bei Heise stehts etwas komplizierter. <Update>Wem das nicht reicht, der kann ja gucken ob sein Provider ihm da helfen kann oder mal selbst Hand anlegen.</Update> Und übrigens lieber Herr Tremmel, Cookies gehen auch via IPv4. Wenn ich Cookies habe, muss ich niemanden mit der IP-Adresse tracken.

Und wenn wir (die bösen Netzwerker, Webseitenbetreiber, Admins, …) euch schon nicht tracken wollen, dann hacken? Weil ja nun jeder Computer eine eigene Adresse hat? Auf einmal muss jeder Computer sicher gemacht werden? Er ist es nicht, weil ihr dachtet euer NAT ist auch eine Firewall? Nun, die meisten aktuellen Router (die auch euer NAT machen) können ein wenig Firewall spielen, aber das können die auch bestimmt bei IPv6, wenn man es einschaltet. Und echt, eure Computer sind nicht von alleine sicher? Was passiert eigentlich wenn ihr mit dem Laptop bei Starbucks sitzt, oder im ICE, oder in der Uni, oder gar im Bundestag? Hat euch da schonmal jemand via WLAN gekitzelt? Wird mal Zeit. Man sollte sich wirklich nicht darauf verlassen in einem “sicheren” Netzwerk zu sein. Sowas gibt es nicht. Gab es nicht. Wird es auch nie geben, versprochen.

Wenn ihr wirklich Privatsphäre wollt, schaltet ihr Cookies aus und JavaScript auch. UND BENUTZT TOR! Und verschlüsseln solltet ihr auch!

Ach und Herr Beuth, nur weil die Provider meistens ein /64 Netz an ihre Kunden vergeben (Update: die Telekom aber z.B. nicht, hier gibts /56, was wohl auch Empfehlung ist!), heißt es lange noch nicht, dass der Präfix die Hälfte einer IPv6-Adresse ist. Ein Präfix ist ein Präfix und kann so groß/lang sein, wie der Provider es möchte, eine Hälfte sind immer 50%. Der Präfix den der Amerikanische Provider Sprint von der ARIN zugewiesen bekommen hat (ja, bei denen heißt das auch Präfix), lautet 2600::/29, hat also 99 “freie” Bits, und ist damit etwas weniger als die Hälfte.

Und jetzt Feierabend. Ich nutze mein IPv6, ich hab morgen noch Spaß, macht was ihr wollt!

flattr this!

signing data inside your browser?

Posted in english, planet-debian, security, software June 30, 2011

Let data be textarea->value and browser be (firefox or chrome).

I want the user to be able to sign the data he entered in the textarea as I do not trust the website to store the data without modification.

So far I found a couple of GnuPG/PGP based solutions:

Didn’t test any of them yet, so I am asking you, dear Lazyweb: are these any good? Are there any more such tools? What about X.509 client certificates? Can I abuse them for signing in the browser too? So far I found login stuff only. Pointers highly appreciated.

flattr this!

How to bypass DNS-based spam-filters using DNS

Posted in debian, english, linux, planet-debian, security, software, spam September 18, 2010

I’ve been sitting on this one since more than a month. I’ve contacted upstream on the 19.08.2010 and the Debian maintainer on the 02.09.2010. No reaction from them till today, and no, my spamfilter does not eat mail ;)

Still, I won’t tell you the name of the software (but you could easily guess or check…)

So let’s put the grey hat on and begin ;)

Foreword: when I write spam-filter, I mean some DNSBL/SPF/blah filter, not SpamAssassin, crm114 or other content-based filters.

common spam-filters

There are plenty of spam-filters out there which work after the following schema:

for check in checks:
    if check(mail) == BAD:
        reject(mail)
        break

And the checks often look like this:

def check(mail):
    errors = False
    result = some_magic(mail)
    if not errors: return result
    else: return GOOD

Here some_magic is a function that do the actual checks (DNSBL lookups etc) and which stores possible happened errors in errors. If an error occurred, it’s safer to say the mail was good (or at least not bad) than bad.

the problem

This looks like a sane approach on the first sight: iterate over all checks and execute them until a mail is found to be spam (and the corresponding check did not end up in an error (imagine some weird DNS error for DNSBL or SPF checks here)). But then the author realizes that the errors might be “global”, like with DNS: when the first check notices that it can’t resolve anything (ie. it ran into a DNS timeout three times in a row), the second check (which also utilizes DNS queries) will most probably result in an error too. After this he adds a global counter for DNS errors and skips all the checks that use DNS if this counter is >=3. “Great idea”, you say, “saving resources is good”. “Bad idea”, I say…

The reason is simple: DNSError != DNSError. Why? The local resolver might be broken, then every DNS query will end up with an error and DNS-based checks should be really disabled. The first three (out of eg. ten) DNSBLs might be down, but that’s not a reason to skip the other seven and the SPF check. Etc…

Now let’s assume all configured DNSBLs are working properly, so is the local resolver and the checks are:

checks = [check_HELO, check_SPF, check_DNSBL]

How could one attack this filter?

the attack

Set up the following zone

spam.example.com IN NS ns1.example.com
spam.example.com IN NS ns2.example.com
spam.example.com IN NS ns3.example.com
spam2.example.com IN MX mx1.spam.example.com
spam2.example.com IN MX mx2.spam.example.com
spam2.example.com IN MX mx3.spam.example.com
spam2.example.com IN MX mx4.spam.example.com
ns1.example.com IN A 10.1.1.1
ns2.example.com IN A 10.2.2.2
ns3.example.com IN A 10.3.3.3

and greet the to-be-spammed-MTA with EHLO client1.spam.example.com
What happens? The spam-filter tries to resolve client1.spam.example.com in check_HELO to check whether the hostname matches the IP-address the connection is coming from, fails three times (there are no reachable DNS servers in 10.0.0.0/8) and continues with the next two checks, but these are skipped because of previous DNS errors. As no checks could identify the mail as being spam, the mail is delivered to the users mailbox.

With some creativity this can also be used in SPF records (via spam2.example.com), sender-domains etc.

conclusion

If you want to save resources by skipping DNS-based checks after another (DNS-based) check failed – don’t! Think whether this is really the same error you are seeing…

Additionally this can be used as a sort of DoS against the not said software: according to the logs each of my tries needed between 30 and 36 seconds (!) to complete – imagine some hundred simultaneous requests…

the end

You think I did something wrong with that post? Throw the first stone then, I don’t care.

flattr this!

Warum Vodafone fremde DNS Server sperrt

Posted in german, security October 6, 2009

Ich weiss, die Story ist alt, und die tricks auch.
Dennoch wurd ich grad auf ZDNet: Sperre von freien DNS-Servern: So umgeht man die Blockade gelinkt und musste bei einem Absatz schmunzeln. Lest selbst:

Betroffen sind alle Anwender, die einen Internetzugang über den APN event.vodafone.de nutzen. Über diesen APN erhalten Vodafone-Kunden einen eingeschränkten Internet-Zugang mit einer privaten IP-Adresse und NAT-Routing aus dem Bereich 10.0.0.0/8. UDP-Traffic auf Port 53, der nicht zu den Vodafone-DNS-Servern führt, ist bei diesem Zugang gesperrt. Einen technischen Grund dafür gibt es nicht. Andere Provider, die einen NAT-Zugang anbieten, kommen ohne Sperren aus.

Nicht betroffen sind hingegen die Vodafone-Kunden, die den APN web.vodafone.de nutzen. Dieser Zugang steht nur Kunden mit Laufzeitvertrag zur Verfügung. Sie erhalten einen vollwertigen, aber meist kostenintensiveren Internetzugang mit öffentlicher IP-Adresse. ZDNet hat dabei keine Behinderung beim Zugang zu DNS-Servern festgestellt.

Oh, es sind ja zwei Absaetze. Egal.

Ich bin seit einiger Zeit kein Vodafone Kunde mehr, aber damals kriegte man auch ueber web.vodafone.de eine geNATtete IP-Adresse. Wenn sich das heute geaendert hat: bitte.
Prepaid Kunden nutzen bei Vodafone uebrigens auch web.vodafone.de. Wer nutzt denn dann event.vodafone.de? Ahja, richtig, Vertrags und Prepaid Kunden, die WebSessions wollen. Also den Tarif wo man fuer zB fuer 1 Stunde im voraus buchen kann. Wie bucht man? Ueber ein Webinterface.

Jetzt nochmal nachdenken.
Fester!

Wenn der Kunde (unabsichtlich) einen anderen DNS Server hat, kommt er nicht auf das Interface, kann nicht buchen, ist sauer, und Vodafone entgeht Gewinn.
Wenn der Kunde (absichtlich) TCP Traffic durch DNS Tunneln will, ach das darf ich hier bestimmt nicht schreiben. Also mitdenken liebe Leser! Aber bevor ihr fragt: ja, das surfen im WebSessions Portal zum Buchen ist kostenlos.

Und so wie ich Vodafone kenne, wuerden sie niemals filtern, wenn das nicht fuer Abrechnungszwecke erforderlich waere.

flattr this!

When people dont understand recursion

Posted in english, planet-debian, security May 28, 2009

While drinking my coffee, I stumbled over http://www.longurlplease.com/ on Golem.de (sorry, it’s German).

They say, that when you get a shortened URL, you

  • have no idea where it links to
  • are unaware you’ve been there
  • may secretly linked to yucky websites

That sounds correct, esp with the "funny" "new" ideas of the German government about blocking sites with ‘Kinder"pornographie"’ (sorry for the German again, and for the multi-quotes, but they say I have to call it like this…) and recording those who try to access such sites.

Anyways, that great service over at longurlplease.com will make the world a safer place:

  • You see you’ve been there before
  • Tell it links to youtube
  • More information before you click

(the lists are copied from their site, without care about proper rewording for my context)

Sounds great, huh? And they even support 65 different shorturl services. But lets see how they support the same service twice in a row (should be easy too, right?).

  1. Go to http://tinyurl.com/
  2. Create a shorturl for http://gpl.imageafter.com/ (= http://tinyurl.com/oae8sx)
  3. Go to http://tinyurl.com/
  4. Create a shorturl for http://tinyurl.com/oae8sx (= http://tinyurl.com/r6n74h)
  5. Ask the longurlplease.com API about http://tinyurl.com/r6n74h (curl "http://www.longurlplease.com/api/v1.1?q=http://tinyurl.com/r6n74h")
  6. See {"http:\/\/tinyurl.com\/r6n74h": "http:\/\/tinyurl.com\/oae8sx"} as result
  7. Laugh and spread double-shortened Rick-Rolls (people will love you!)

That makes the whole service somehow useless, as you gain exactly nothing, and tell longurlplease.com about each shorturl that comes to your browser (if you have the Firefox plugin installed).

On the other hand, the creator could easily add a recursive resolver, but I bet he (or she? or they?) won’t do that, when one does not want the service to die completely in a endless loop (I don’t have a black hat, neither I have a white one – I actually don’t like hats at all, but it should be possible to construct some funny redirection loops with such services).

Update:
It seems tinyurl.com was intelligent and changed that behaviour now:
Error: TinyURL redirects to a TinyURL.
The URL you followed redirects back to a TinyURL and therefore we can’t directly send you to the site. The URL it redirects to is http://tinyurl.com/oae8sx.

But one still can fake this:
http://ow.ly/9Arf -> http://tinyurl.com/oae8sx -> http://gpl.imageafter.com/

flattr this!

Deutsche Kinderhilfe kippt um

Posted in fun, german, politics, security May 16, 2009

Wie einschlägige Medien berichten, wurde vor kurzen die Webseite der ach so tollen Deutschen Kinderhilfe defaced.

Man kann über das Defacement denken was man möchte, und Fefe darf ruhig ein paar graue Haare mehr kriegen, weil er darin verlinkt worden ist, jetzt ist es vorbei:
Deutsche Kinderhilfe under construction

Auf eine Stellungnahme an einem Samstag darf man wohl nicht hoffen, aber wenigstens die "undr konstrushn" Page hätten die hier schöner gestalten können, mit lachenden Kindern und so ;)

flattr this!

Yes, new GPG key

Posted in english, planet-debian, security May 11, 2009

So what did you expect? A new GPG/PGP key? Here it comes:


pub 4096R/333961E8 2009-05-10
Key fingerprint = C575 A957 E819 BA18 BF07 E766 A1B0 9B42 3339 61E8
uid Evgeni Golov <evgeni@golov.de>
uid Evgeni Golov <sargentd@die-welt.net>
uid Evgeni Golov (Debian) <evgeni@debian.org>
uid Evgeni Golov (HHU Duesseldorf) <evgeni.golov@uni-duesseldorf.de>
uid Evgeni Golov (30doradus) <golov@30doradus.de>
sub 4096R/022DE268 2009-05-10

It’s signed with my old AC15B50C and hopefully by others soon too.

Never thought my first post to Planet Debian would be about security, but well, it is like it is and I add the regular Hi Planet Debian! here at the end :)

flattr this!

GMX FAIL

Posted in english, security March 30, 2009

Or: "Why is authentication not the same as encryption"?

http://www.neuhalfen.name/drupal/GMX_security_update

Danke Jens!

flattr this!

SSH Keys removed

Posted in debian, english, security May 13, 2008

Due to a weakness in OpenSSL’s randon number generator, SSH keys have been removed on Alioth, and SSH logins through public-key authentication have been disabled. The latter will be restored when some safeguards have been set up so that insecure keys are not re-installed. Please upgrade your OpenSSL libraries as per the Debian Security Advisory #1571, then ensure your keys are safe (or, preferably, generate new keys), then install them on your account management page.

Thanks :/
Will go and regenerate my SSH keys NOW.

Well, regenerated, but cannot upload to alioth:
Secure Connection Failed
alioth.debian.org uses an invalid security certificate.
The certificate expired on 11.05.2008 20:43.

flattr this!

warning TODO: security check

Posted in german, offtopic, security April 24, 2008

Neulich beim Bäcker^W^Wbeim kompilieren eines Programms (Cherry KeyM@n 1.0):
MsgPorts.cpp:99:2: warning: #warning "TODO: security check"

Wäre ich fefe, würde mein Blutdruck jetzt explodieren. Ich lass es einfach und kompiliere nicht weiter (das hat eh paar Zeilen später mit "/bin/sh: Syntax error: Bad fd number" abgebrochen).

flattr this!