Gravatar couramment utilisé Blog perso de Paul Da Silva

Comment mon ordinateur a voté à ma place, les fichiers

Posted on | mai 29, 2012 | 11 Comments

Laurent Grégoire nous avait gratifié d’un document de 20 pages et d’une vidéo expliquant comment il avait pu simplement créer un programme qui substituerait le vote d’un citoyen par celui qu’un attaquant aurait choisi. Il m’a transmit les sources de son « Proof of Concept » pour que celles-ci soient examinées, décortiquées et permettent éventuellement de déceller d’autres soucis (vote multiples, vote pour plusieurs candidats, …).

EDIT (01/06/2012) : la vidéo a été censurée par Vimeo – se référer à cet article.

Pour rappel la vidéo et le document initiaux :

Comment mon ordinateur a voté à ma place (et à mon insu)

Et le travail de Laurent (n’hésitez pas à partager celui-ci, à le dupliquer de partout… Bref Streisand it).

Ce serait quand même drôle que je reçoive un courrier pour violation de la « propriété intellectuelle » de Scytl ou du MAE non ? 🙂

Commentaires

11 Responses to “Comment mon ordinateur a voté à ma place, les fichiers”

  1. Bigou
    mai 29th, 2012 @ 16 h 46 min

    Bonjour,

    J’avais l’intention d’en faire un torrent et l’uploader sur The Pirate Bay, seriez vous contre ?

    Si vous ne l’êtes pas, en existe-t-il déjà un (histoire de ne pas diviser les seeders).

    Bonne journée 🙂

  2. Paul
    mai 29th, 2012 @ 16 h 49 min

    Avec plaisir pour moi

  3. Bigou
    mai 29th, 2012 @ 16 h 59 min

    Parfait ! Je ferai ça en rentrant du boulot alors.

    Je vous ferai parvenir le lien, ainsi qu’a la rédac de reflets.info, undernews & co quand ca sera fait 🙂

  4. qwerty
    mai 29th, 2012 @ 19 h 32 min

    Une suggestion (pour bien se faire voir et pour plus de justice), serai de fournir les correctifs pour éviter des utilisations malhonnêtes.

  5. Oumph
    mai 30th, 2012 @ 0 h 41 min

    (je suis un des délégués sur le vote par internet AFE)

    La version de test, encore disponible, est fournie avec un certificat expiré et moisi.

    http://monvotesecurise.votezaletranger.gouv.fr/testconfiguration/voting-applet.jar

    $ sha256sum voting-applet.jar
    26f313d6cdf87e33ee553d1ce9e78b4cb3371ac34ee7682a38d112c748fc9286 voting-applet.jar

    $ jarsigner -verify -certs -verbose voting-applet.jar
    (…)
    X.509, CN=duke2, OU=test, O=test, L=test, ST=test, C=es
    [certificate expired on 16/09/07 16:49]
    (…)
    Warning:
    This jar contains entries whose signer certificate has expired.

    La version de production ne semble plus accessible depuis la fermeture du scrutin. J’ai retrouvé une copie dans l’analyse de L. Grégoire. http://www.paulds.fr/wp-content/uploads/2012/05/autovote.tar.gz

    $ sha256sum voting-applet/voting-applet.jar
    6599ec2e599fc0016baabfb9abd378893abc111cbe6928e7b943546fde048c43 voting-applet/voting-applet.jar

    $ jarsigner -verify -certs -verbose voting-applet/voting-applet.jar
    (…)
    X.509, CN=MINISTERE DES AFFAIRES ETRANGERES ET EUROPEENNES, OU=0002 12000601000025, O=MINISTERE DES
    +AFFAIRES ETRANGERES ET EUROPEENNES, L=PARIS, ST=ILE DE FRANCE, C=FR
    [certificate is valid from 13/01/12 16:12 to 13/01/15 16:12]
    X.509, CN=GlobalSign CodeSigning CA – G2, O=GlobalSign nv-sa, C=BE
    [certificate is valid from 13/04/11 10:00 to 13/04/19 10:00]
    [KeyUsage extension does not support code signing]
    (…)

    Apparemment une 3ème version a aussi circulé (pas plus d’info). https://twitter.com/#!/bastien_durel/status/205996762744360961 parle d’une autre somme de contrôle. La version aurait été modifiée à un moment ?

    d8c4b7f64c2726ca5db146772ea85ce575e0392aa43f72b822ccb3388abc6ed3 voting-applet.jar

  6. Alain
    mai 31st, 2012 @ 22 h 04 min

    En lisant le doc je suis un peu surpris de l’utilisation de la librairie tools.jar sur le poste client.

    D’après moi cette librairie appartient au JDK et non pas au JRE. Donc elle n’est pas dispo sur les postes clients.

    A quoi sert-elle exactement? A l’injection ou bien à tourner un service sur le poste de l’électeur?

    Ou bien ne sert-elle à rien et on peut tourner tout ça sur le poste avec un simple JRE?

    Merci à ceux qui ont tout compris de m’éclairer!
    Alain

  7. Laurent
    juin 1st, 2012 @ 10 h 13 min

    Il est possible d’inclure la librairie dans le code de l’injecteur, c’est un classique fichier jar.

  8. Laurent
    juin 1st, 2012 @ 10 h 23 min

    La librairie contient le code qui permet d’implémenter le protocole JDWP au niveau client. Dans le projet eclipse publié la librairie est d’ailleurs présente en tant que référence externe, mais elle devrait est incluse par le build ant dans le jar généré (methode dite du jar « shading » selon la termino maven).

  9. Daniel
    juin 1st, 2012 @ 16 h 53 min

    Le document est très intéressant et la vidéo très claire.
    Cependant, il me manque une explication de comment faire un troyen qui puisse effectuer ces actions sans être détecté par les logiciels antivirus ou par Windows lui-même … Un antivirus va certainement considérer suspect qu’un programme caché essaye d’écrire dans le registre Windows de la JVM ou d’ouvrir un port local pour modifier le trafic de ce port.
    Faire un troyen qui n’est pas détecté par l’antivirus, qui peut être distribué via le navigateur (par USB la diffusion ne serait pas suffisante), qui peut réaliser toutes les opérations décrites dans le document, et infecter les machines des personnes utilisant ce système de vote précis, est bien plus compliqué que ce qui est décrit ici. Un article de ce type aurait, quant à lui, du sens.

    Sans ce troyen, l’attaque décrite ci-dessus n’est plus que la manipulation de son propre vote personnel.

  10. Laurent
    juin 1st, 2012 @ 18 h 30 min

    Il n’y aucune action réalisée par l’injecteur qui alarmera un anti-virus, à moins que celui-ci ne soit spécialement programmé pour désactiver ce programme spécifiquement.

    1) L’écriture dans la base de registre est l’ajout d’une variable d’environnement de l’utilisateur qui exécute le programme d’injection, or c’est tout à fait normal et légitime pour un programme d’ajouter une variable d’environnement « utilisateur » (pas système!)

    2) La JVM ouvre un port en écoute en local, ce qui n’est pas non plus interdit. Beaucoup de programme communiquent entre-eux par ce biais en local (les IPC sous Windows étant incompatibles avec celles sous UNIX, un des seuls moyens d’avoir des IPC multi-plateformes est d’utiliser des sockets réseau sur une machine locale). L’injecteur quand à lui ouvre une socket en tant que client, et ce sur la machine locale, donc entièrement légitime pour un programme, un anti-virus ne dira rien.

    3) Vous pouvez faire le test vous même: programmer une application web-start en java, la mettre en téléchargement sur un site et l’exécuter depuis votre ordinateur. Il n’y a presque pas de confirmation demandée à l’utilisateur, et si l’application téléchargée ne fait pas partie de la base de virus de votre anti-virus, vous pourrez l’installer sans problème. Un clic de confirmation sur une boîte de dialogue suffit. De plus, la signature de l’application java induit un faux sentiment de sécurité chez l’utilisateur, sachant que n’importe qui peut acheter un certificat de nos jours (on peut même générer des certificats auto-signés, et beaucoups d’utilisateurs internet ne feront pas la différence). Donc écrire un petit jeu contenant l’injecteur et le mettre en téléchargement n’alarmera pas grand monde.

  11. Laurent
    juin 2nd, 2012 @ 11 h 30 min

    D’ailleurs concernant le point 2) de mon commentaire précédent, il est également possible d’activer le mode JDWM en « shared-memory » (mémoire partagée inter-processus), auquel cas on n’utilise pas de sockets. Là encore cela passe complètement sous le radar d’anti-virus car faire de l’IPC entre différents processus locaux est très banal et entièrement valide du point de vue du système (pas d’activité suspecte).

Leave a Reply





Edito

Ancien journaliste, ancien entrepreneur, ancien (ir)responsable Pirate, actuel citoyen qui s'intéresse à la politique et à son évolution.

Read moar !.

Retrouvez moi sur :

Suivez moi sur twitter sur facebook sur wikipedia Ajouter ce blog a votre lecteur RSS

Piratons la démocratie

piratons la democratie

One more thing !

0100 0011 0110 1000 0110 0001 0110 1110 0110 0111 0110 0101 0111 0010 0010 0000 0110 1100 0110 0101 0010 0000 0110 1101 0110 1111 0110 1110 0110 0100 0110 0101 0010 0000 0110 0101 0110 1110 0010 0000 0111 0011 0010 0111 0110 0001 0110 1101 0111 0101 0111 0011 0110 0001 0110 1110 0111 0100 0010 0000 0010 1101 0010 0000 0110 1111 0110 1110 0010 0000 0111 0110 0110 0001 0010 0000 0110 0010 0110 1111 0110 1001 0111 0010 0110 0101 0010 0000 0111 0101 0110 1110 0010 0000 0110 0011 0110 1111 0111 0101 0111 0000 0010 0000 0011 1111

Tm9uIGNlbGVsIGzgIGVzdCBqdXN0ZSBwb3VyIHRlIGZhaXJlIHBlcmRyZSA1bW4gOyk=

Relationship Closeness Inventory

Promo code Genesis Mining

Sha 256 cloud mining

Best Bitcoin debit card

Zcash Mining

Bitcoin code promo

Genesis Mining Code Promo