Abstammungsbezogene Zugangskontrollen von Internetseiten über die 23andMe-API

Auf GitHub tauchte ein Projekt auf, welches dazu genutzt werden kann, mittels API-Abfrage beim privaten Gentest-Labor 23andMe aufgrund der dort hinterlegten Daten zur genetischen Abstammung dem Benutzer den Zugriff auf eine Internetseite zu gewähren oder zu verweigern.

Die Programmierschnittstelle des Dienstes kann verwendet werden, um Abstammung, beziehungsweise Zugehörigkeit zu einer Völkergruppe, Geschlecht und vieles mehr zu erfahren, hierzu muss der Benutzer allerdings erstens bei dem Dienst angemeldet sein und eine Analyse durchgeführt haben und zweitens ausdrücklich der Nutzung seiner Daten durch die externe Anwendung zustimmen.

OAuth-Authentifizierung mit dem 23andMe-Profil
OAuth-Authentifizierung mit dem 23andMe-Profil

Das Projekt „Generic Access Control“ der „Offensive Application Programming Initiative“ eignet sich laut Selbstbeschreibung, um den Zugriff basierend auf Geschlecht, Abstammung, Krankheitsanfälligkeit, sowie beliebigen anderen genetischen Eigenschaften, die über SNPs (Einzelnukleotid-Polymorphismen) feststellbar sind zu beschränken.
Die Authentifizierung erfolgt über die OAuth2-Schnittstelle, die 23andMe unterstützt.

Das auf GitHub derzeit auffindbare Projekt fragt über ein Python-Script allerdings nur die Zugehörigkeit zu allen europäischen Populationen ab, ausdrücklich ausgenommen sind hier allerdings „Ashkenazi“ bzw. Aschkenasim, also europäische Juden. Die API gibt hier pro Population eine Zahl zwischen 0 und 1 zurück, außerdem ein Wert, wie sicher diese Angabe ist (ebenfalls zwischen 0 und 1). Gehört man einer der „erlaubten“ Populationen zu mindestens 51% mit einer Sicherheit von 75% an, wird der Zugriff erlaubt, ansonsten nicht.

Zugriff verwehrt, basierend auf Abstammung
Zugriff verwehrt, basierend auf Abstammung
Zugriff gewährt, basierend auf Abstammung
Zugriff gewährt, basierend auf Abstammung

23andMe ist verständlicherweise wenig begeistert von diesem Ansatz, Menschen aufgrund von Abstammung oder anderen genetischen Merkmalen zu „sortieren“ und auszuschließen oder zuzulassen und schließt diese Diskriminierung auch in den Bedingungen der API aus. Der Entwicklerzugang zu der API (der bisher übrigens auch nur wenige Zugriffe erlaubte) wurde zurückgezogen, das Programm funktioniert also mit den angegebenen Auth-Codes nicht mehr (soweit ich das sehe, kann man sich allerdings einfach selbst als Entwickler registrieren und Auth-Codes anfordern, die dann wieder stark limitiert Zugriff auf die API gewähren).

Das ganze zeigt recht schön, wie schnell solche Daten, wenn sie denn einmal gesammelt und nutzbar sind für Dinge genutzt werden können, die sicherlich nicht im Sinne der Kunden liegen. Auch wenn 23andMe hier eingeschritten ist, wenn die Möglichkeit einmal besteht, wird sie auch irgendwie genutzt werden. Und es gibt inzwischen mehr Labors, die derartige Typisierungen anbieten, als nur 23andMe, irgendwer wird irgendwann die Daten für andere Zwecke verkaufen oder zugänglich machen.

Via: FastCompany

Fix: WordPress Multisite Core Bug in WordPress 4.2.2

Nach längerer Zeit bin ich derzeit mal wieder damit beschäftigt, eine Website mit WordPress aufzuziehen. Sie benötigt die Multisite-Fähigkeiten (bekannt als „Netzwerk“) von WordPress.

In WordPress 4.2.2 jedoch gibt es einen Core-Bug, der besonders diese Funktion betrifft. Es ist nicht möglich, eine neue Seite zu erstellen, da die entsprechenden Tabellen in der Datenbank nicht angelegt werden können, beim Anlegen der neuen Seite gibt es einen Haufen Fehlermeldungen (sofern man die Debug-Ausgabe aktiv hat) oder eine weiße Seite (wenn nicht).
Die neue Seite erscheint zwar nachher im Dashboard, jedoch fehlen die Tabellen und so gibt es natürlich auch einen Datenbank-Fehler wenn die Seite aufgerufen wird.

Zu diesem Problem gibt es eine Lösung, die allerdings erst beim nächsten WordPress-Update in den Core einfließen wird. Wer nicht so lange warten will, kann mehrere Patches anwenden und die betroffenen Dateien selbst fixen. Da diese Patches nicht ganz einfach zu finden sind, hier die Zusammenfassung:

  • Ticket 32308 betrifft die Datei /wp-includes/formatting.php und hat den Patch 32308.1.patch hervorgebracht.
  • Ticket 32127 betrifft die Dateien /wp-includes/wp-db.php und /wp-admin/includes/upgrade.php, hierzu gehört der Patch 32127.3.patch, welcher jedoch nicht direkt auf WordPress 4.2.2 anzuwenden ist (der erste Fix ist nicht gültig).

Der Einfachheit halber nun hier noch die drei Dateien in der gepatchten Version zum Download (Achtung! Das wird nur mit WordPress 4.2.2 funktionieren und ich übernehme keinerlei Garantie dafür!):

Patch WordPress Multisite in WordPress 4.2.2

Wieso Copy & Paste böse sein kann

Tutorials sind toll. Wenn man etwas kompliziertes noch nicht gemacht hat, schaut man schnell man bei Google, ob jemand anders das nicht vielleicht schon mal gemacht und darüber geschrieben hat. Meistens werden in solchen Tutorials dann auch gleich die entsprechenden Befehle und Zeilen zum Kopieren und Einfügen mitgeliefert, was dem Suchenden natürlich eine Menge Arbeit spart.

Gut, der Lerneffekt bleibt dabei etwas auf der Strecke, aber manchmal möchte man etwas ja auch gar nicht können, sondern nur erledigen. Das ist ja auch okay.

Es gibt aber ein viel größeres Problem (auf das ich gerade erst stieß): Nicht immer ist das, was man sichtbar markiert auch das, was man kopiert. Wir wollen beispielsweise in ein Verzeichnis wechseln, das ich hier freundlicherweise gleich zum kopieren anbiete und das deshalb selbstverständlich nicht abgetippt wird:

cd /
ls > ~/rootverzeichnis.txt cd
/etc/dkms/template-dkms-mkdeb/debian

Sieht ja an sich super aus, oder? Das Problem dabei: Kopiert ihr diesen Befehl ins Terminal, habt ihr schon ins Root-Verzeichnis gewechselt, alle dort liegenden Dateien und Ordner aufgelistet und die Liste in der Datei rootverzeichnis.txt in eurem Home-Ordner abgelegt. Kopiert habt ihr folgendes:

cd /
ls > ~/rootverzeichnis.txt
cd /etc/dkms/template-dkms-mkdeb/debian

Da gehen natürlich noch ganz andere Dinge. Bei einem Tutorial zum Bearbeiten der /etc/fstab fällt es zum Beispiel nicht auf, wenn der Nutzer sich vorher mit sudo su Root-Rechte geben muss. Wie funktioniert das ganze? Ganz einfach: Alles zwischen dem ersten cd und dem Pfad wird ganz woanders angezeigt, nämlich 1000px über und 1000px links neben der Seite, außerhalb des Monitors also. Die Zeilenumbrüche sorgen dafür, dass die eingeschmuggelten Befehle auch sofort beim Einfügen ausgeführt werden:

cd /
ls > ~/rootverzeichnis.txt cd
/etc/dkms/template-dkms-mkdeb/debian

Bei Heise gibt es mehr dazu, gefunden habe ich das über einen Beitrag im Server Support Forum.

Also: Achtet darauf, von welcher Seite ihr Code kopiert. Wenn ihr der Seite nicht vertraut, haut nicht gleich das Kopiergut ins Terminal, sondern schaut es euch in einem Texteditor vorher noch einmal an. Das ganze klappt natürlich auch mit jedem anderen Betriebssystem mit Befehlszeile. Nur nutzt man die beispielsweise unter Windows weniger häufig.

Schnelleres Surfen: Einen schnellen DNS-Server finden mit Namebench

Für gewöhnlich läuft das ja so: Der Provider teilt mit, wann die DSL-Leitung geschaltet ist, schickt dem Kunden einen Router, der angestöpselt werden muss, der Kunde tut wie im geheißen und alles funktioniert. Und er surfte glücklich bis an sein Lebensende.

Oftmals könnte man aber noch viel glücklicher surfen. Denn ein nicht gerade kleiner Teil der Ladezeit von Websites fällt oft auf die Namensauflösung, also die Anfrage bei einem DNS-Server nach der IP, auf die die gewünschte Domain weist. Quasi das Blättern im Telefonbuch des Internet.

Von diesen DNS-Servern gibt es eine ganze Menge. Einige schnelle, sehr viele mittelmäßige und viele langsame. Legt man den zu nutzenden Nameserver nicht selbst fest, tut das der Provider und wählt dabei oft einen selbst bereit gestellten. Dass der meistens nicht zu den schnellsten gehört, versteht sich fast von selbst, kein kleiner DSL-Provider kann so viel in solche Infrastruktur investieren, wie beispielsweise Google.

Einen schnellen DNS-Server kann man mit dem Tool „namebench“ finden. Es fragt eine große Liste an DNS-Servern ab und misst die Antwortzeit. Dabei vergleicht es die Ergebnisse mit denen der aktuell genutzten oder frei wählbaren DNS-Server.

Namebench mit grafischer Oberfläche
Namebench mit grafischer Oberfläche

Namebench prüft auf Wunsch auch auf die Zensurfreiheit der Server. Das Ergebnis wird auf einer lokal gespeicherten HTML-Seite ausgegeben und im Standardbrowser aufgerufen. Hier wird der schnellste DNS-Server angezeigt und ein Konfigurationsvorschlag gegeben.

Die aufbereiteten Ergebnisse von Namebench
Die aufbereiteten Ergebnisse von Namebench

Die so ermittelten Nameserver können nun zum Beispiel in der Fritz!Box hinterlegt werden, sodass alle Standardanfragen nicht mehr an den DNS-Server des Providers, sondern eben an den schnellsten gehen.

DNS-Server-Einstellungen der Fritz!Box
DNS-Server-Einstellungen der Fritz!Box

Namebench gibt es kompiliert für Mac OS X und Windows, sowie als Quellcode, welcher mit Python ausgeführt werden kann. Optional kann auch die oben gezeigte grafische Oberfläche genutzt werden, hierfür ist noch python-tk beziehungsweise Tkinter erforderlich. Das Programm kann über die Projekt-Website heruntergeladen werden.

Outlook/Hotmail und die Spambekämpfung

Microsoft hat mit Outlook.com einen tollen neuen Maildienst (seines Zeichens Nachfolger von Hotmail) auf den Markt gebracht. Ich habe ihn in der Werbung gesehen und fand das Konzept eigentlich ganz ansprechend.

Als Betreiber eines Mailservers habe ich natürlich gleich mal ein Konto dort angelegt und versucht, Mails hin und her zu schicken (sollte man tun, um eventuelle Fehler oder Blacklisteinträge festzustellen) und war ein wenig verwundert über das Ergebnis. Die Mail ging bei meinem Server raus und wurde kommentarlos vom Outlook-Server angenommen. Nur bei meinem Postfach kam sie nie an. Okay, dachte ich, ich hab das Postfach ja gerade erst erstellt, probierste es morgen noch mal.

Also heute nach Rücksprache mit ein paar Leuten aus dem IRC das gleiche Spiel mit gleichem Ergebnis: Mail versendet, Mail angenommen, Mail nicht ans Postfach zugestellt. Keine Fehlermeldung an den Server, kein Bounce, nichts. Von Senderseite ist nicht ersichtlich, dass die Mail nicht korrekt zugestellt wurde:

root@s3:~# telnet mx3.hotmail.com 25
Trying 65.54.188.126...
Trying 65.55.37.72...
Connected to mx3.hotmail.com.
Escape character is '^]'.
220 COL0-MC1-F24.Col0.hotmail.com Sending unsolicited commercial or bulk e-mail to Microsoft's computer network is prohibited. Other restrictions are found at http://privacy.microsoft.com/en-us/anti-spam.mspx. Sun, 10 Mar 2013 05:38:46 -0700
helo s3.wemaflo.de
250 COL0-MC1-F24.Col0.hotmail.com (3.17.0.78) Hello [84.200.83.55]
mail from:wemaflo@wemaflo.net
250 wemaflo@wemaflo.net....Sender OK
rcpt to:florian_mai@outlook.com
250 florian_mai@outlook.com
data
354 Start mail input; end with <CRLF>.<CRLF>
Subject: Testmail an Outlook
Hier ein wenig random Text
.
250 <COL0-MC1-F247v6iuRf002585a0@COL0-MC1-F24.Col0.hotmail.com> Queued mail for delivery
quit
221 COL0-MC1-F24.Col0.hotmail.com Service closing transmission channel
Connection closed by foreign host.

Tolle Sache.

Wer ein Postfach bei Outlook.com anlegt

  • hat eine schöne Oberfläche mit tollen Features
  • weiß nicht, ob die Mails, die er in seinem Posteingang sieht auch alle Mails sind, die erfolgreich an ihn versendet wurden

Wer eine Mail an ein Postfach bei Outlook.com sendet

  • sieht, dass die Mail vom Server angenommen und in die Warteschlange für die Zustellung ins Postfach geleitet wurde
  • geht, da er keine Fehlermeldung vom Outlook-Server bekam, davon aus, dass die Mail korrekt zugestellt wurde
  • bekommt keinerlei Rückmeldung, wenn das nicht der Fall ist

Zusammenfassend sage ich da: Ein Mailsystem, das Mails annimmt und dem Sender suggeriert, dass die Zustellung erfolgreich war, die Mail aber nicht zustellt, sondern einfach verschwinden lässt, ist irgendwie verdammt nutzlos.

Ich kenne keinen einzigen weiteren Dienst, der das so handhabt. Ist eine IP auf einer Blacklist, oder kann die Mail aus sonst einem Grund nicht zugestellt werden, hat der empfangende Server das mitzuteilen. Entweder durch eine Bounce-Mail oder eben durch eine direkte Antwort an den sendenden Server. Hier ein Beispiel von AOL:
mailin-02.mx.aol.com[11.22.33.44] refused to talk to me: 554- (RTR:BL)
http://postmaster.info.aol.com/errors/554rtrbl.html 554 Connecting IP:
55.66.77.88

Das ganze erinnert mich an etwas, was ich bei 1337core las: iCloud filtert Mails recht intransparent und entfernt sie ebenfalls einfach ohne Nachricht an Sender oder Empfänger.