WhatsApp, ein Sicherheitsrisiko und niemanden kümmert’s

September 17th, 2012 § 0 comments § permalink

WhatsApp ist ein Sicherheitsrisiko

Ein seltener Blog-Eintrag auf Deutsch damit ich mehr Leute aus meinem direkten Bekanntenkreis erreichen kann.

Whats … wer?!

WhatsApp ist ein unter Jugendlichen weit verbreiteter SMS-Ersatz: Keine Längenbeschränkung bei den Nachrichten, integrierter Medienversand (Bilder, Videos, Audio etc) und Gruppenchats. Leider scheinen die Entwickler von WhatsApp wenig bis gar kein Verständnis für Sicherheit, Vertraulichkeit und Privatsphäre haben.

Kurzer Abriss der Sicherheitsproblematik

Zunächst schien es nur ein fehlende Verschlüsselung zu sein, dann wurde eine “Verschlüsselung” eingeführt. Es kam wie es kommen musste: Es wurde massiv geschlampt und die Schlüssel sind leicht zu erraten, damit ist der Nachrichten-Austausch quasi komplett ungeschützt. Sogar der Abschnitt bei Wikipedia über Sicherheitsbedenken ist länger als jeder andere Abschnitt. Und ja, es gibt schon Tools, um die Lücken auszunutzen: https://github.com/venomous0x/WhatsAPI

Fazit: Jeder kann die Nachrichten von jedem mitlesen und auch in seinem Name verfassen. Vertraulichkeit ist keine mehr gegeben!

Vermutlich werden noch einige weitere Sicherheitsprobleme bekannt werden, möglich dass sich darunter andere Sicherheitslücken befinden wie versenden von kostenpflichtigen SMS oder klauen von persönlichen Daten wie Photos.

Alternative

Technisch betrachtet verwendet WhatsApp dasselbe Protokoll wie Facebook oder GTalk, das sogennante Jabber oder XMPP-Protokoll. Da viele schon ein GMail-Konto (heute eher als Google-Konto bezeichnet) haben, können diese Benutzer einfach dieses benutzen. Solche die Google nicht vertrauen, können sich eines bei Swissjabber.ch erstellen, eine Anleitung wird gleich mitgeliefert für diverse Benutzer-Programme.

Ich hab Android

Hier empfehle ich die mitgelieferte Google Talk App. Das vorkonfigurierte GMail-Konto wird verwendet. Es kann auch ein neues erstellt werden. Für Swissjabber kann man Yaxim (OpenSource) oder Xabber (Freeware, Closed Source), die ganz paranoiden können sich Gwibberbot (OpenSource, OTR-Funktionalität) anschauen.

Ich hab iOS / ein iPhone

Google liefert keine App für iOS aus, vermutlich wegen der Rivalität zwischen den grossen Plattformen Android und iOS. Unter Kollegen wird anscheinend gerne Monal (Freeware, Closed Source) verwendet, die Paranoiden können sich Chatsecure (OpenSource, OTR-Funktionalität) zu Gemüte führen.

Ich möchte auch vom PC aus schreiben!

Kein Problem. Das ist ein grosses Plus von richtigen Jabber-Netzwerken: Man kann vom Smartphone, PC, Tablet und vermutlich auch auf der Waschmaschine verwenden. Für die meisten Benutzer reicht die Weboberfläche von Gmail oder man benutzt den offiziellen Google Talk Client von Google, der allerdings nur in Verbindung zum GMail-Konto funktioniert. Ansonsten empfehlen sich Psi (OpenSource, reiner Jabber-Client), Pidgin (OpenSource, kann viele weitere Chat-Protokolle) und Adium (OpenSource, nur für Mac OS X, kann viele weitere Chat-Protokolle).

Disclaimer

Ich arbeite (bzw. arbeitete) für keines der oben genannten Projekte oder Firmen zu diesem oder einem früheren Zeitpunkt.

Float is not always a float

March 25th, 2012 § 0 comments § permalink

Today I stumbled over something really really annoying. I used a Scanner to go over a space delimited file of values. I wanted to parse those values into doubles and did

        Scanner scanner = new Scanner(input);
        scanner.useDelimiter(" ");
        try {
            while(scanner.hasNext()) {
                arr.add(scanner.nextDouble());
            }
        } catch (RuntimeException e) {
            e.printStackTrace();
            scanner.close();
        }

Now, I just got an InputMismatchException which I followed back and started to nail down right in the source code of the Scanner class. It’s not the part of Java I like, hunting down some really strange behavior I can’t explain.

When I did use Double to parse the string it worked fine, and that’s what puzzled me even more!

        Scanner scanner = new Scanner(input);
        scanner.useDelimiter(" ");
        try {
            while(scanner.hasNext()) {
                arr.add( Double.parseDouble( scanner.next() ) );
            }
        } catch (RuntimeException e) {
            e.printStackTrace();
            scanner.close();
        }

Eventually I found what was the problem: My input file used a simple dot as decimal delimiter and not a comma. Why?

A scanner’s initial locale is the value returned by the Locale.getDefault() method; it may be changed via the useLocale(java.util.Locale) method.

source: http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Scanner.html#localized-numbers

That’s what made Scanner trip over his own feet! He expected a comma while he got a point. This is something very trivial but really annoying, it would prefer to be able to switch the decimal delimiter directly than via a whole set of locales. But well … it’s Java.

So we just have to change the locale.

   Scanner scanner = new Scanner(input).useLocale(Locale.ENGLISH);
   scanner.useDelimiter(" ");

Wespen-Terror!!

September 26th, 2011 § 0 comments § permalink

Die diesjährig besonders aufdringlich wahrgenommenen Wespen haben sich nicht nur aufgrund des aussergewöhnlich feuchten Wetters zu einem Problem entwickelt. Wie Forscher der ETH Torgen herausfanden, sind genetisch mutierte Wespen aus Süden in die Schweiz gekommen. Nachforschungen ergaben, dass diese Wespen vom süditalieneschen Vespula-Clan gezüchtet worden sind, um unbemerkt mehrere Tonnen Kokain in die Schweiz zu schmuggeln. Die ursprünglich zu Minensuch-Zwecken ausgebildeten Wespen, wurden vom Mafia-Clans aus einem Labor des US-Militärs entwendet und nach Süditalien gebracht. Dort wurden die Pollensäcke der Wespen mit Kokain gefüllt und in Schwärmen Richtung Norden losgeschickt. Durch autogenes Training konnte die einzuschlagene Flugroute einprogrammiert werden und die Wespen würden sich unterwegs auch selbstständig mit Nektar versorgen, um so über die Alpen bis in Nordostschweiz zu fliegen.

Wie Jean-Luc Guêpes vom eidgenössischen Sicherheitsministerium sagte, sei man sich noch nicht ganz sicher wie die Wespen wieder eingefangen werden sollten. «Klar ist auf jeden Fall, dass viele Wespen mit dem Kokain in Berührung kamen und seither ausser Kontrolle geraten sind.» Nun würde die Bevölkerung terrorisiert.

Laut Guêpes seien Abklärungen im Gange, ob und wie das Militär mit ihren F/A-18 Hornets die Luftraumsicherung durchzusetzen kann. «Die Sicherheit der Bevölkerung ist klar im Mittelpunkt. Wir lassen nichts unversucht, um dieses Problem zu lösen und arbeiten eng mit Imker zusammen» teilt Vincenzo Vespa vom Bundesamt für Migration mit. Die ETH Torgen sammelt weiterhin Informationen zu Sichtungen von solchen Wespen, die sich durch Elf gelben Streifen auf dem Körper leicht erkennen lassen. «Sollten Sie ein solches Exemplar aus ihrem Haus oder Wohnung entfernen müssen, verwenden Sie einen kokain-absorbierenden Behälter aus 2cm dicken Aluminium. Entsorgen Sie diesen luftdicht verschlossenen Behälter dann in der örtlichen Aluminiumsammelstelle und nicht im Hausabfall» heisst es auf der Website der ETH Torgen.

Privacy respecting 2-click social media plugins

September 8th, 2011 § 0 comments § permalink

A few days ago I read this article over at Heise about a new era of privacy respecting social media plugins (german) and today I read in Denis’ blog that there already exist a WordPress plugin(german). I installed it today and removed to old Google +1 plugin, unfortunately since I don’t have Facebook (and don’t want/need/whatever) the Like-button won’t work. Though I use identi.ca I also have a twitter-account which I don’t use, it’s more that I have my nickname reserved.

The plugin (with german localization though)

I noticed that this greyish look matches my theme, neat side-effect!

Installing Redmine and gitosis on a Debian root-server with MySQL

September 1st, 2011 § 0 comments § permalink

So I wanted a bugtracker with a little of everything and git integration. First of all I must admit that this wasn’t easy and I wasted some time figuring out how to get this stuff working. Since I love to see tutorials and manuals myself, I’ll share my experience.

Be aware though that Ruby on Rails consumes a lot of RAM and will not run on 128MB RAM. I had to upgrade my VPS which now runs fine with 512MB RAM. I installed Redmine 1.0.1-stable on my Debian Squeeze 6 with the MySQL backend, but not without getting serious trouble when enabling the gitosis plugin: Whenever a username in git contained a umlaut, it just threw a server error. Finally I was able to tackle down the problem with a lot of help from friends over at #bsdprojects.

WARNING: This post is not intended to provide a foolproof guide or a newbie tutorial. This is meant for someone being able to handle a full root server.

INSTALLING PACKAGES

Install the needed debian packages:

apt-get install acl apache2 apache2-mpm-prefork apache2-prefork-dev build-essential cron git-core gitosis git-daemon-run libapache-dbi-perl libapache2-mod-passenger libapache2-mod-perl2 libcurl4-openssl-dev libdigest-sha1-perl libgemplugin-ruby libgemplugin-ruby1.8 libmysqlclient15-dev libnet-ssh-ruby1.8 librmagick-ruby1.8 libruby-extras libruby1.8-extras mysql-server python-setuptools rake redmine redmine-mysql ruby ruby1.8-dev rubygems sudo wget

CONFIGURING & SETUP

MySQL

This is where I failed in the first attempt, MySQL obviously has severe problems with the encoding and a configuration change was the solution eventually. Be sure to add the following to  /etc/mysql/my.cnf before you do anything else:

[client]
default-character-set=utf8

[mysqld]
default-character-set = utf8
skip-character-set-client-handshake
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8

Now create the DB:

mysql -u root -p

CREATE DATABASE redmine CHARACTER SET utf8;
CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'my_password';
GRANT ALL privileges ON redmine.* TO 'redmine'@'localhost';
quit;

Configure redmine:
vi /etc/redmine/default/database.yml

  production:
    adapter: mysql
    database: redmine
    host: localhost
    username: redmine
    password: my_password
    encoding: utf8

Installing the gems

Now comes the funny part, you need to exactly these versions or you’ll encounter strange errors:
gem install rails -v=2.3.11
gem install rack -v=1.1.0
gem install mysql
gem install -v=0.4.2 i18n
gem install inifile lockfile net-ssh

Get Redmine in place

ln -s /usr/share/redmine /var/www/redmine
chown -R www-data:www-data /var/www/redmine
chmod -R 755 /var/www/redmine
cd /var/www/redmine
rake generate_session_store
RAILS_ENV=production rake db:migrate
RAILS_ENV=production rake redmine:load_default_data

Apache

a2enmod passenger
vi /etc/apache2/sites-avaible/redmine

    <VirtualHost *:80>
        ServerName redmine.domain.tld
        DocumentRoot /usr/share/redmine/public
        <Directory /usr/share/redmine/public/>
                Options -MultiViews
        </Directory>
    </VirtualHost>


a2ensite redmine
/etc/init.d/apache2 reload
/etc/init.d/apache2 restart

Now your Apache should be able to handle the redmine bugtracker.

 Integrate gitosis

vi /etc/fstab

    …
    /dev/foo /  ext3  acl,errors=remount-ro 0 1
    …

reboot
sudo -H -u gitosis ssh-keygen -t dsa

Set no password, use standard path/file

sudo -u gitosis cat ~gitosis/.ssh/id_dsa.pub | sudo -H -u gitosis gitosis-init
sed -i.orig 's:/var/cache:/srv/gitosis:g' /etc/sv/git-daemon/run
sv restart git-daemon
setfacl -m user:www-data:r-x,mask:r-x ~gitosis/.ssh
setfacl -m user:www-data:r--,mask:r-- ~gitosis/.ssh/id_dsa
script/plugin install git://github.com/xdissent/redmine_gitosis.git
sudo -u www-data X_DEBIAN_SITEID=default RAILS_ENV=production rake db:migrate:plugins
/etc/init.d/apache2 restart

Point your browser to your installation, log in, go to Administration -> Plugins -> Configure Redmine Gitosis, change ‘localhost’ to your domain, change xdissent.com to your domain.

The repository

Now …

  • create a normal user
  • give him administrator access
  • logout as admin, login as user
  • create new project
  • give yourself at least ‘Developer’ role (Settings -> Members)
  • go to Settings -> Repository, choose git as SCM (this step was actually nowhere mentioned …)
  • now you’ll see a new menu (on the blue background) called ‘Repository’, click on it and follow the instruction written there.

You should be able to push your git repo to the redmine server finally.

SOURCES

MySQL + UTF-8 = Not So Obvious
TUTORIAL: REDMINE WITH GIT AND GITOSIS ON UBUNTU 11.04
GitHub Clone with Redmine