Qu’est-ce que MongoDB ? Et comment est-il entré en jeu dans la révélation lors de l’évènement organisé par True the Vote ?

Le 13 août 2022, Catherine Englebrecht et Gregg Phillips ont décrit ce qu’ils ont trouvé l’année dernière sur un serveur non sécurisé en Chine : les informations personnelles de 1,8 million de travailleurs électoraux américains… et plus encore

Catherine Englebrecht de True the Vote et Gregg Phillips d’OPSEC (WIKI) ont organisé un événement le samedi 13 août en Arizona appelé “the Pit” (La fosse).

L’objectif de l’événement était de réunir 100 à 150 journalistes, influenceurs de réseaux sociaux, chercheurs et autres parties intéressées pour discuter et divulguer de nouvelles informations liées aux “irrégularités” électorales que True the Vote avait découvertes – en partie, pour apporter un éclairage supplémentaire sur les résultats du film 2000 Mules (WIKI) qui s’appuyait sur le suivi de la géolocalisation des téléphones portables de Gregg aux alentours de l’élection de novembre 2020, et aussi en partie pour partager de nouvelles informations qu’ils avaient découvertes entre-temps.

Cet article est basé sur mes notes et mes souvenirs de ce qui a été partagé lors de l’événement ; toute erreur dans la retransmission de l’histoire avec précision est entièrement de mon fait.

Je vais me concentrer principalement sur l’aspect technique de ce qui a été partagé ; d’autres personnes écrivent sur les questions plus larges et les implications choquantes et sérieuses de l’engagement (ou du manque d’engagement) du FBI avec les données que Gregg et Catherine ont tenté de porter à leur attention.

Mais mon domaine d’expertise se situe dans les détails techniques, je vais donc tenter d’y apporter un éclairage que d’autres n’ont pas encore abordé.

Comme vous le savez peut-être si vous avez vu le film, les données de localisation GPS des téléphones portables que Gregg a obtenues – dont une petite partie a été utilisée dans 2000 Mules – ont été traitées de manière à aider à identifier les “schémas de vie” des personnes qui ont été prises en train de bourrer illégalement des urnes dans de nombreuses villes du pays.

Ces soi-disant “Mules” étaient des trafiquants de bulletins de vote – comme le montre le film, ils ont été déployés, d’une manière coordonnée par des entités encore inconnues, dans diverses villes de swing states en novembre 2020, afin d’influencer illégalement les résultats des élections de 2020.

L’équipe de Gregg ou d’autres parties qui travaillaient avec lui continuaient à examiner attentivement les modèles d’élection dans les primaires de 2022 et au-delà, et ils examinaient aussi plus largement un large éventail de fournisseurs de technologie électorale pour mieux comprendre comment les actions des Mules s’inscrivaient dans le cadre plus large de l’exécution de la fraude qui a été exposée dans 2000 Mules.

Dans le cadre de cet événement Arizona Pit, Gregg et Catherine ont décrit un incident survenu au cours des recherches que leurs équipes avaient menées sur divers fournisseurs de logiciels aux agences électorales américaines.

Au cours de l’enquête sur l’un de ces fournisseurs de logiciels, Gregg et son équipe sont tombés, début 2021, sur l’adresse IP d’un serveur prétendument associé à une société nommée Konnech, du moins selon les enregistrements des services qui suivent la propriété et la localisation des adresses IP.

Il s’avère que cette adresse IP était située en Chine – elle a manifestement été utilisée par certaines instances de l’application logicielle pendant un certain temps, avant d’être transférée vers une nouvelle adresse IP à Grand Rapids, Michigan.

Les outils de géolocalisation que j’ai utilisés suggèrent que le serveur qui hébergeait cette adresse en Chine était quelque part près de Hangzhou, peut-être près de l’université de Zhejiang.

Konnech fabrique des logiciels destinés à prendre en charge diverses parties du processus électoral pour les États-Unis et d’autres pays. L’un de leurs modules s’appelle PollChief ; il s’agit d’un outil de gestion des ressources destiné à aider les organismes électoraux à gérer leurs employés qui travaillent dans divers bureaux de vote les jours d’élection.

Il gère, entre autres, les horaires des membres du personnel électoral, et comprend les détails nécessaires pour les recruter, les retenir et les payer. Ce logiciel, ainsi que la suite plus large de logiciels, peut être utilisé pour suivre toutes sortes d’informations logistiques sur le matériel électoral, comme l’endroit où il se trouve physiquement – à des fins d’inventaire en dehors de la saison électorale, mais aussi quand et où ce matériel est déployé pour la tenue des élections. Il y a également des modules commercialisés par Konnech qui sont impliqués dans le processus d’émission des bulletins de vote eux-mêmes pour certains groupes de personnes.

Le logiciel lui-même n’est pas immédiatement inquiétant à première vue, mais le fait qu’une de ses instances se connectait apparemment à un serveur en Chine a certainement fait sourciller certains, ce qui a justifié un examen plus approfondi.

Pendant que Gregg et son équipe enquêtaient, ils ont effectué quelques contrôles de cybersécurité de routine pour voir quels services étaient utilisés par cette adresse IP chinoise afin de déterminer ce qui se cachait derrière. L’un de ces “scans” de routine a montré un port sur cette adresse IP – 27017 – qui est généralement utilisé par une application de base de données appelée “MongoDB” (je vais expliquer certains de ces termes plus en détail dans un instant).

C’était intéressant et quelque peu inattendu, puisque les applications de Konnech utilisaient ostensiblement des bases de données SQL (j’y reviendrai dans un instant) et cette découverte valait donc la peine d’être explorée.

Jetons un coup d’œil technique à ce qu’est MongoDB avant d’en venir à ce qu’ils auraient découvert.

Mais d’abord, nous allons prendre un peu de recul pour vous mettre au courant de certaines notions de base et expliquer certains termes. Les bases de données sont des systèmes logiciels qui stockent de grandes collections de données pour une consultation, une corrélation, un rapport et une récupération rapides par des applications logicielles.

Lorsque vous voyez une application Web de nos jours, quelque part derrière elle se trouve un serveur de base de données qui sert les informations “personnalisées” que vous voyez s’afficher sur les pages Web de l’application.

Une forme populaire de système de base de données utilisée de nos jours s’appelle un serveur “SQL”. Microsoft est l’un des fournisseurs de serveurs SQL, mais il en existe beaucoup d’autres.

Pour les curieux, les serveurs SQL sont basés sur les mathématiques de la théorie des ensembles (si vous avez utilisé un diagramme de Venn ou si vous avez suivi des cours de mathématiques avancées au lycée ou à l’université, vous avez probablement une idée de base de ce que sont les ensembles) et ils s’appuient aussi fortement sur ce qu’on appelle l’algèbre linéaire. Il s’agit d’une branche des mathématiques qui traite des vecteurs et des “matrices” en 2D, 3D ou de dimension supérieure. C’est ce qui les rend rapides et efficaces pour manipuler les données.

Si vous êtes familier avec Microsoft Excel, alors vous savez qu’une feuille de calcul n’est qu’une forme simple d’une matrice d’informations en 2D : une feuille dans Excel comporte des lignes et des colonnes de cellules qui contiennent et organisent les données.

Un serveur SQL est analogue à certains égards à une feuille de calcul, mais il est plus sophistiqué. Il stocke les données dans de nombreuses “tables” (pensez aux feuilles d’Excel) – et les tables qui sont censées être reliées entre elles d’une manière ou d’une autre sont stockées dans des collections appelées “bases de données”.

See the source image
un exemple de tableau Excel

Les serveurs SQL sont conçus pour des types de données relativement propres et “bien structurés” ; on place généralement les données dans différentes tables, qui sont ensuite liées les unes aux autres dans une “relation” par un champ commun aux deux tables. De cette façon, vous pouvez “consulter” des données dans une table en utilisant une valeur connexe dans une colonne d’une autre table.

Les serveurs SQL sont généralement utilisés pour les données très volumineuses et très bien structurées, lorsque vous avez besoin de résultats vraiment rapides pour que votre logiciel fonctionne sans problème.

See the source image
Un diagramme de relation pour diverses tables dans une base de données SQL

Cependant, tous les problèmes que vous rencontrez dans le monde réel ne correspondent pas aux bases de données “bien structurées” comme SQL. Parfois, vous devez travailler avec des données plus désordonnées ou faiblement structurées – ou structurées d’une manière qui peut changer fréquemment parce que vous n’avez pas encore mis au point tous les détails finaux de votre application.

Dans les bases de données SQL, un seul “enregistrement” a le même format (champs) que n’importe quel autre enregistrement (par exemple, considérez une seule ligne d’un tableau Excel comme un “enregistrement”). Par exemple, imaginez un enregistrement “employé de bureau de vote” pour un bureau de vote – il pourrait avoir, par exemple, un champ pour le nom, l’adresse, le numéro de téléphone, l’adresse électronique, etc. avec un “enregistrement” pour chaque employé de bureau de vote. Vous pouvez également disposer d’informations sur les personnes à contacter en cas d’urgence ou sur d’autres membres de la famille de ce membre du personnel électoral.

Les bases de données SQL sont courantes et utiles, mais il existe également un type de base de données appelé base de données “No SQL”. Ces types de bases de données sont différents ; ils permettent à chaque enregistrement d’avoir potentiellement différents nombres (et tailles) de champs, avec peut-être seulement quelques champs par enregistrement gardés en commun. Par exemple, l’enregistrement d’un travailleur peut comporter des champs supplémentaires que les enregistrements des autres travailleurs n’ont généralement pas, comme des numéros de téléphone secondaires ou des adresses e-mail supplémentaires.

Lorsque vous avez des bases de données moins bien structurées, ou des données qui ne “rentrent pas bien” dans une table SQL – ou si vous avez besoin d’ajouter rapidement de nouveaux champs au fur et à mesure que vous développez votre logiciel sans avoir à reconstruire votre base de données à chaque fois que vous effectuez un changement majeur – il est désormais courant d’utiliser l’une de ces bases de données “No SQL”.

Elles sont tout simplement plus faciles à utiliser pour les programmeurs – si les exigences du logiciel en matière de données changent, il est souvent plus rapide et plus facile de “mettre à niveau” l’application lorsque les données se trouvent dans une base de données NoSQL que si elles se trouvent dans une base de données SQL à la structure plus rigide.

Le développement du logiciel se fait plus rapidement, ce qui permet à l’entreprise d’économiser de l’argent. Il suffit de rajouter quelques nouveaux champs pour certains nouveaux enregistrements, de laisser les anciens enregistrements tranquilles et de programmer votre application pour qu’elle reconnaisse lorsqu’elle voit un nouveau format pour les enregistrements de données et qu’elle agisse en conséquence.

Ces types de bases de données sont également plus faciles à utiliser d’un point de vue conceptuel pour les programmeurs moins qualifiés, elles se “connectent” plus facilement aux applications Web modernes et leur popularité a augmenté au cours de la dernière décennie. MongoDB a été l’un des premiers et l’un des plus populaires utilisés de nos jours.

Parfois, une base de données “NoSQL” est utilisée au début du développement d’un logiciel en raison de la flexibilité qu’elle offre pour modifier rapidement les structures de données au fur et à mesure que le programme s’étoffe ; mais une fois que le programme atteint les étapes du produit final, il est converti en une base de données SQL car les structures de données ne sont pas censées changer autant après la mise sur le marché du programme et les serveurs SQL sont plus rapides.

La facilité d’utilisation des bases de données NoSQL comme MongoDB pour les programmeurs non avertis pose toutefois un problème : parce que les programmeurs moins qualifiés (et moins chers) peuvent les utiliser et les utilisent, ils négligent souvent certains paramètres de sécurité critiques en raison de leur manque de connaissances.

Venons-en maintenant à ce que l’équipe de Gregg a découvert.

Rappelez-vous qu’ils ont trouvé une adresse IP en Chine associée à ce qui semblait être l’un des produits de Konnech (d’après les enregistrements DNS de cette IP, en tout cas) qui était utilisée par une ou plusieurs agences de vote américaines ; et que l’un des ports utilisés à cette adresse IP était généralement utilisé pour MongoDB, s’il était installé sur ce serveur.

Utilisons brièvement l’analogie de la “maison” pour faciliter la compréhension de la situation. Imaginez que la “maison” est l’adresse IP, et que les “ports” sont les portes et les fenêtres de la maison, c’est-à-dire les moyens d’entrer ou de sortir de la maison.

Une pratique courante pour les professionnels de la cybersécurité qui explorent un réseau est de “tester les serrures” lorsqu’ils trouvent “des fenêtres ou des portes ouvertes” en se promenant dans un “bâtiment” d’intérêt, et dans ce cas, ils ont fait une vérification rapide du port MongoDB (“ils ont secoué les fenêtres”) pour voir s’il répondait.

Lorsqu’il a répondu, ils ont ensuite essayé une chose assez basique : ils ont vérifié s’ils pouvaient se connecter avec le nom d’utilisateur et le mot de passe par défaut, “prêts à l’emploi”. Ce serait une chose assez stupide pour le propriétaire de cette machine que de les avoir laissés en place, mais c’est étonnamment commun.

En d’autres termes, lorsque la cyber-équipe a secoué les portes et les fenêtres, elle a trouvé une erreur stupide sur l’installation de MongoDB que seul un novice aurait pu faire. Les portes et les fenêtres n’étaient même pas verrouillées. En fait, elles étaient grandes ouvertes.

Vous voyez, lorsque MongoDB est fraîchement installé, il n’a pas de règles de sécurité appropriées pour limiter qui peut lire et écrire des données dans le système ; à moins que la personne qui configure l’installation de MongoDB ne prenne les mesures supplémentaires nécessaires (et sache comment le faire), MongoDB n’a soit PAS de mot de passe, soit le mot de passe par défaut qui est… eh bien, vous pouvez probablement le deviner. “PASSWORD” (“MOT DE PASSE”, NdT).

L’équipe de Gregg a donc pu “entrer par la grande porte”, pour ainsi dire, car il n’y avait pas de serrure sur la porte, et “jeter un coup d’oeil”.

Ce qu’ils ont découvert était choquant : ils ont trouvé des données comprenant les détails personnels de près de 1,8 million de travailleurs électoraux américains. Des détails comme leurs noms, numéros de téléphone, adresses, etc. Même les noms des membres de leur famille : des choses qui pourraient être collectées de manière routinière lorsque vous embauchez quelqu’un et lui remettez un bulletin de paie.

Mais ils auraient également trouvé de riches détails sur l’emplacement des machines électorales, y compris les plans des bâtiments utilisés pour les élections. En principe, ces informations seraient utiles aux agences électorales, car l’application qu’elles utilisaient les aidait à suivre leur inventaire de machines électorales.

Mais rien de tout cela n’aurait dû être laissé à la vue de tous, et cela n’aurait certainement pas dû être fait en Chine. En bref, il s’agissait d’un grave déversement de données.

La Chine a apparemment une loi selon laquelle toute donnée trouvée sur son Internet appartient au gouvernement, donc en fait, la Chine a la “garde” de tout ce qui existait sur ce serveur.

Peut-être qu’en raison du fait que les programmeurs chinois connaissent cette politique du Parti Communiste Chinois, ils sont paresseux et ne se soucient pas beaucoup de sécuriser leurs serveurs de base de données ; il pourrait s’agir d’une chose culturelle – une sorte d’attitude “à quoi bon, tout leur appartient de toute façon” chez certains travailleurs. Il se pourrait également que les programmeurs les plus talentueux prennent des emplois dans d’autres pays, tandis que les plus incompétents restent pour travailler en Chine.

Alors, comment en est-on arrivé à ce que ces informations se trouvent en Chine ? Eh bien, de nos jours, les entreprises américaines ont l’habitude de sous-traiter le développement de logiciels en Inde, en Chine, au Pakistan, en Arménie, en Russie et ailleurs, car les salaires sont moins élevés pour le même niveau de talent en matière de logiciels qu’ils pourraient trouver aux États-Unis ; de plus, il y a une telle demande de programmeurs de nos jours dans tous les secteurs de l’économie que les entreprises américaines ne peuvent parfois même pas trouver des personnes ayant les bonnes compétences localement pour faire le travail dont elles ont besoin.

C’est pourquoi des entreprises comme Microsoft et d’autres font un usage si intensif du programme de visa H1B : la demande de talents en matière de logiciels dépasse de loin l’offre.

Il se peut donc que Konnech ait employé un ou deux programmeurs en Chine pour développer et tester des éléments de la suite d’applications Konnech, avec l’idée que, le moment venu, ils ramèneraient l’application finale (et la base de données) à Grand Rapids pour le déploiement final et l’utilisation dans des élections réelles.

Cependant, ayant moi-même travaillé sur des applications client/serveur de ce type, je sais que les compétences en “administration de réseau” et en “sécurité de réseau” font souvent défaut ou sont absentes chez les programmeurs juniors, et qu’ils pourraient également commettre des erreurs de configuration de base lors du déploiement des systèmes de production (comme laisser toutes les portes et fenêtres déverrouillées.)

Il se peut aussi qu’ils ne changent pas correctement les adresses IP une fois la phase “bêta” terminée, mais avant de passer en “live” dans une ville américaine. Ils pourraient également copier les données de “production en direct” sur un système de développement en Chine, afin que les programmeurs puissent continuer à affiner l’application et à supprimer les bogues même si le système de production est utilisé.

Une explication raisonnablement probable, par conséquent, est que Konnech (ou peut-être un entrepreneur qu’il utilisait) a externalisé le travail en Chine, et que le gestionnaire de programme américain et les programmeurs chinois qu’il a utilisés ont été grossièrement incompétents, laissant des données de test ou de production en direct non protégées sur un serveur MongoDB en Chine.

Il n’est pas contesté que quelqu’un d’incompétent a fait cela ; les données ont été exposées. Ce que l’on ne sait pas, c’est qui l’a fait exactement, et quelle relation il avait avec le fournisseur Konnech.

Cependant, la situation est encore plus grave qu’il n’y paraît à première vue : comme la base de données MongoDB n’était complètement pas sécurisée, il était également possible pour des intrus non seulement de lire toutes ses données, mais aussi potentiellement d’ajouter, d’écraser et de modifier des données.

Par exemple, quelqu’un aurait pu ajouter quelques douzaines d’employés de bureau de vote non sélectionnés qui agissaient comme des usines envoyées pour exécuter les ordres de quelqu’un sur les machines électorales ou les bulletins de vote.

Mais cela nous ramène à un point précédent : le Parti Communiste Chinois considère que toutes les données présentes sur les réseaux chinois appartiennent au gouvernement : qu’elles aient été exposées par incompétence ou non. Ils s’en moquent ; elles leur appartiennent.

Puisque Gregg et son équipe ont pu “entrer par la grande porte” parce que les portes et les fenêtres n’étaient pas verrouillées, il va de soi que les équipes de cybersécurité de la Chine ont pu faire de même… et donc que le Parti Communiste Chinois aurait pu, et a probablement, pris possession de ces mêmes données sur les travailleurs électoraux américains.

Que pouvait-il y avoir d’autre sur ces serveurs ? Aurait-il pu s’agir de données relatives à l’inscription des électeurs ? Qu’aurait pu faire le Parti Communiste Chinois avec ces données ? Auraient-ils pu s’en servir pour corrompre ou faire chanter les travailleurs électoraux, car ils disposaient de tous leurs détails, y compris leurs numéros de téléphone ?

Auraient-ils pu s’en servir pour injecter leurs propres usines comme les travailleurs de bureau de vote ? Auraient-ils pu utiliser les informations sur les plans et les emplacements des machines électorales pour faciliter le piratage des machines électorales connectées à un réseau sans fil, puisqu’ils savaient exactement où cibler leurs efforts ?

Nous ne pouvons pas connaître tous ces détails à ce stade. Mais il y a certainement des raisons de soupçonner qu’ils pouvaient, et ont, utilisé ces informations à leur propre avantage.

Ce qui est particulièrement troublant, c’est que, lorsque Gregg et Catherine ont découvert tout cela, ils ont essayé de faire ce qu’il fallait et d’impliquer le FBI. Mais en raison de la politisation de tant d’agences fédérales, non seulement leur tentative d’informer et d’impliquer le FBI a été repoussée, mais le FBI a ensuite tenté de retourner la situation et de faire passer Gregg ou son équipe pour des méchants pour avoir téléchargé (à partir d’un serveur non sécurisé) et être entré en possession de cet ensemble de données de 1,8 million de travailleurs électoraux américains.

En gros, Gregg a fait l’équivalent de ramasser un disque dur de données abandonné qui gisait ouvertement sur le sol en Chine, et le FBI veut l’accuser de l’avoir eu en sa possession, à cause de ce qui a été trouvé sur le disque !

Ils ne sont pas intéressés à voir si ces données ont été utilisées par la Chine pour détourner nos élections ? L’ingérence étrangère dans les élections américaines n’est-elle pas un acte de guerre ?

Il reste à voir dans combien d’autres cas des déversements de données comme celui-ci ont été exploités par la Chine ; et il restera à voir s’il existe des preuves directes que des données de ce type ont été utilisées pour modifier le résultat des élections, au-delà de ce qui a déjà été documenté comme ayant eu lieu dans les cas de bourrage d’urnes des “Mules 2000”.

Nous ne sommes pas à la fin de cette enquête sur la fraude électorale ; nous sommes simplement à la fin du début. Le Pit a été un tournant : le moment pour Gregg et Catherine d’inciter une communauté plus large de chercheurs et de journalistes à sonder l’ensemble des questions relatives à l’intégrité des élections et à impliquer les citoyens de la manière dont ils doivent être – mais ne l’ont pas encore été – impliqués.

Sans élections dignes de confiance, notre République risque d’être mise à bas par ceux qui préfèrent le communisme et le socialisme. Nous ne resterons pas les bras croisés. Tous les Américains doivent trouver un moyen de s’impliquer davantage dans le processus électoral ; s’engager et s’impliquer dans la protection et la sécurisation de notre République.

Chapitres

Informations