Euro numérique et paiements conditionnels

L’euro numérique est une monnaie numérique émise uniquement par la banque centrale européenne. Celle-ci est actuellement à  l’étude par les grandes instances qui siègent à  Bruxelles et son lancement, s’il y a a lieu, sera effectif d’ici 2027.

Même s’il pourrait ressembler à  ses cousines, les cryptomonnaies, telles que le Bitcoin, sa caractéristique principale est très différente: il n’est pas décentralisé et donc sous le contrôle total de la BCE. Ce qui amène à  des doutes tout à  fait légitimes sur le respect de la vie privée lors de son utilisation mais aussi sur le côté programmable de cette monnaie, qui d’un point de vue technique est très facile à  mettre en place.

Une monnaie programmable implique qu’elle ne peut être utilisée que pour un certain type de biens ou de services, leur rationnement et aussi la limite dans le temps ou sur un territoire bien délimité, que ce soit un pays, une ville, un quartier, un magasin, etc. Cette caractéristique alimente beaucoup les discussions, les fantasmes, les inquiétudes et aussi des théories en tout genre.

Récemment, la commission qui s’occupe de l’euro numérique a déclaré que l’euro numérique ne serait pas programmable. En revanche, elle a évoqué une autre caractéristique particulièrement intéressante: les paiements conditionnels. J’ai traduis personnellement toute cette partie, que je vous livre ci-dessous.

Les paiements conditionnels

Dans le cadre du projet d’euro numérique, les paiements conditionnels sont des paiements qui se déclenchent automatiquement lorsque des conditions pré-définies sont réunies. Les paiements conditionnels sont une vaste catégorie qui comprennent des services optionnels et à  valeur ajoutée.

Par exemple, cela pourrait être un paiement récurrent d’un payeur à  un receveur à  un jour déterminé du mois décidé par le payeur. Cela pourrait aussi être une autorisation de paiement, par exemple 100€ le premier jour de mois. Un autre exemple pourrait être des services de paiement par utilisation lorsqu’un paiement pour des biens et/ou des services est atteint en fonction de limites pré-definies par le payeur.

Les paiements conditionnels ne doivent pas être confondus avec de la monnaie programmable qui a été exclu au préalable dans les utilisations présentes et à  venir. La monnaie programmable implique que l’euro numérique soit utilisé pour acheter uniquement des types de biens et/ou des services spécifiques ou les limiter dans le temps ou dans un endroit précis. La monnaie programmable est en contradiction avec les grands principes de l’euro numérique par le concile de gouvernance, car la convertibilité avec d’autres formes de monnaie ne pourrait pas être garantie. L’euro-système a donc conclu que l’euro numérique ne deviendrait jamais une monnaie programmable.

Les intermédiaires réglementés sont les mieux placés pour développer des services de paiements conditionnels. Ceux-ci sont sont une innovation en plein développement au sein des paiements numériques. Les intermédiaires réglementés sont bien au courant des dynamiques de marché et peuvent répondre aux besoins de leur clients. L’Euro système pourrait soutenir le développement et la fourniture de services de paiement conditionnels, mais les intermédiaires seraient toujours capables de développer leurs propres fonctionnalités de paiement conditionnel en euro numérique sans recours au soutien de l’Euro système.

L’Euro système a l’intention de soutenir l’octroi de paiements conditionnels par le marché de deux manières différentes. Premièrement, des normes pourraient être fournies via les directives de l’agenda de l’euro numérique, si le marché le demande. Des normes communes pourrait soutenir les intermédiaires dans le développement et l’exécution de leur propre logique d’entreprise, que ce soit dans leur propre systèmes d’information ou par le moyen de processeurs qu’ils possèdent collectivement.

Les parties prenantes du marché ont souligné la nécessité d’assurer l’interopérabilité entre les différentes solutions de paiement en incluant des normes communes dans les directives de l’euro numérique. Ces dernières devraient éviter d’être trop normatives, ce qui limiterait les capacités des participants à  créer des solutions de paiement conditionnelles innovantes.

Deuxièmement, l’Euro système pourrait fournir des fonctionnalité de règlements supplémentaires dans l’infrastructure de l’euro numérique, notamment une fonctionnalité « réservation de fonds », qui serait nécessaire pour la fourniture en toute sécurité de certains services de paiement conditionnel aux utilisateurs finaux.

Cette fonctionnalité de « réservation de fonds », dans l’infrastructure de règlement est un dispositif permettant l’utilisation de plusieurs paiements conditionnels comme le paiement en échange d’une livraison et le paiement pour utilisation.

Les contrats intelligents au secours de l’euro numérique

Pour résumer ce rapport, il est question ici de smart contract, de contrats intelligents tels que l’on peut les voir sur les blockchains Ethereum, BNB, etc. Le terme employé, paiement conditionnel n’est pas très heureux, surtout lorsque l’on souhaite rassurer des futurs usagers clients. En matières de contrats intelligents, on voit souvent l’expression de paiement à  déclenchement. (Trigger)

Le contrat intelligent exécutent un programme informatique irrévocable et qui garanti donc l’exécution d’un contrat avec des caractéristiques pré-définies. L’avantage est donc qu’il sécurise irrémédiablement l’opération entre les deux parties et l’automatise. Vous éliminez aussi un grand nombre d’intermédiaires qui sont affiliés au service en lui même. En conséquence, c’est la mort programmée de tout un pan de la bureaucratie financière, celle là  même qui demande un nombre considérable de papiers, de vérifications, de signatures, etc. Il n’est pas certain que cela aille dans le sens des institutions aussi réglementées que celle qui régentent l’activité financière.

L’autre difficulté est la transcription du contrat en lui même d’une forme réglementaire à  une forme numérique et surtout algorithmique. Une réglementation peut être sujet à  appréciation, devant un juge ou un arbitre, contrairement à  un programme informatique qui n’applique qu’une séquence d’instructions et d’opérations. Et ces dernières ne sont jamais exempts de bugs informatiques et de problèmes de sécurité.

Dans le cadre de la création d’un nouvelle monnaie, il n’est pas surprenant que la commission européenne souhaite utiliser des contrats intelligents, et ce pour deux raisons:

La première est qu’il ne laisse aucune interprétation, et surtout aucune remise en question d’un contrat financier. En clair, ce dernier est gravé dans le marbre et se trouve être donc l’outil idéal pour sécuriser une transaction quel qu’elle soit mais aussi pour imposer une réglementation. Une fois que vous signez un contrat intelligent, il n’y a aucune possibilité de s’en défaire si ce n’est aller au bout du déclenchement, à  savoir les directives prévues par le créateur du contrat.

La seconde est qu’il s’agit d’une réelle innovation dont ont bien besoin les architectes de l’euro numérique. En réalité, celui-ci n’offre aucune révolution en matière de paiement électronique et à  moins d’être imposé par voix législative, les chances qu’il soit réellement utilisé pour le paiement de détail sont très minces tant la concurrence est déjà  dense. Entre les incontournables SEPA, Visa, Mastercard, Paypal, Paylib, et aussi l’offre pléthorique des néo-banques, se faire une place parmi ces géants est quasiment mission impossible. On le voit d’ailleurs déjà  avec le projet de Yen numérique qui est pour le moment abandonné par la banque centrale du Japon,faute d’intérêt du public.

Viennent aussi deux autres obstacles de taille: en dépit des efforts de la commission européenne, l’euro numérique sera certainement confondu avec ces cousines, les cryptomonnaies qui demeure un concept incompréhensible pour le quidam moyen qui veut juste payer son pain. L’autre est la méfiance toujours plus grande envers les grandes institutions, déconnectées, avides de réglementations parfois discutables et de contrôles toujours plus intrusifs. Il n’est pas certain que confier son argent à  un tel organisme soit accepté si facilement.

Ce n’est sans doute pas les contrats intelligents alias les paiements conditionnels qui sauveront le projet d’euro numérique.

Analyse d’une cyberattaque sophistiquée en provenance de Russie

Un de mes sites a été la victime d’une puissante cyberattaque en provenance de Russie, heureusement sans conséquence.

Un site PHP entièrement fait maison

Ce site est la cible régulière de nombreuses attaques, et j’ai pris la mauvaise habitude de ne même plus y faire attention, en toute honnêteté. Néanmoins, comme certaines précautions ont été prises par le passé, je suis assez confiant dans les contre-mesures que j’ai mises en place, ce qui explique mon apparent laxisme à  ce sujet. L’échec de cette attaque prouve d’ailleurs que je n’ai pas trop de raison de m’inquiéter. Cependant, au vue de la virulence de l’attaque, j’ai cru bon de devoir un peu la documenter, histoire d’analyser les techniques employées par ces goujats et puis aussi voir comment je peux encore améliorer mes défenses.

Ce site est un pur développement PHP de ma part, avec quelques bouts de Java essentiellement pour l’aspect cosmétique. Toutes les URL sont gérées par une fonction qui vérifie leur intégrité et me permet de détecter les éventuelles attaques ; cette fonction agit un peu à  la manière d’un reverse-proxy. Pour ce faire, j’utilise la même technique utilisée par WordPress, à  savoir un htaccess avec les directives suivantes :

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*\.(zip|exe|rar|gz|tgz|bak|war|backup|dat))$ http://tartopom.com/ [L]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule> 

Vous noterez que j’expédie déjà  au diable les casse-pieds qui essayent de télécharger des archives et autres joyeusetés que l’on a l’habitude de rencontrer lors de tentatives d’intrusion.

Après, une succession de strcmp() me permet d’orienter le site vers le bon traitement :

if(!strcmp($mi,"f1.php")) f1();
if(!strcmp($mi,"f2.php")) f2();
"¦

Finalement, je termine par un catchall qui m’indique souvent que l’on est en présence d’un vilain dont il faut parfois bannir l’IP. Typiquement, 5 URL bizarroà¯des à  la suite est un signe qui ne trompe que très rarement et qui trahit un début d’attaque.

Une cyberattaque avec Metasploit

L’attaque a duré une dizaine d’heures, avec des pauses de plusieurs minutes entre les différentes tentatives. Ce qui me laisse penser que je n’ai pas eu affaire à  un script qui se déroule, mais bien à  un hacker qui s’essaye à  plusieurs méthodes. Cette personne a vraisemblablement utilisé le sinistre Metasploit. Je l’ai rapidement déduit, en m’apercevant que les types d’attaques me ramenaient souvent à  plusieurs modules de ce tristement célèbre programme. Je pense aussi qu’il a utilisé quelques scripts tiers, n’ayant pas trouvé d’équivalence sous Metasploit. Le bon côté de la chose est qu’il m’a donné quelques pistes de réflexion pour améliorer encore plus la sécurité du site. Je sais que je peux désormais compter sur l’utilisation de plusieurs modules Metasploit pour un hardening encore plus fin.

Les méthodes de requêtes étaient composées principalement de GET et de POST pour lancer quelques scénarios. A noter aussi la présence de OPTIONS qui demande des informations sur les options de communication et aussi de PUT qui est un dérivé de POST. D’après mes logs, la méthode PUT est très rarement utilisée en temps normal.

Au total, j’ai décortiqué 140 attaques que j’ai mis dans un fichier Excel. Puis j’ai cherché un par un le détail de l’attaque. La plupart était grave avec des tentatives de RCE, de fuite de données et aussi d’élévation de privilèges.

J’ai été agréablement surpris de trouver dans la majorité des cas une CVE documentant la faille ; preuve quand même que la communauté Infosec fait toujours un travail aussi remarquable. Et même lorsqu’il n’existait pas de CVE, j’ai généralement pu trouver une documentation expliquant le problème. Ce cas s’est surtout présenté sur des programmes peu connus et parfois des modules WordPress. On peut aussi imaginer que l’URL utilisée lors de l’attaque était personnalisée, voir même codée, m’empêchant ainsi de trouver la documentation idoine.

Description des cyberattaques

Une bonne partie des attaques consistait à  tenter d’accéder à  une URL défendue et susceptible de présenter une faille en fonction du type de logiciel possiblement présent sur le serveur. On y trouve bon nombre de programmes de e-commerce comme Woocomerce, bien entendu des attaques à  base d’injection SQL et sur d’autres bases de données telles que Mongo et même Oracle, des XSS sur des CMS comme Drupal et comme à  l’accoutumée le célèbre WordPress. Pour ce dernier, ce n’est pas l’habituel brut force sur le wp-login.php qui a été utilisé et que j’observe par centaine tous les jours sur le présent blog ainsi que sur mon site professionnel, mais plutôt des attaques ciblant des modules spécifiques, tels que quiz-master, simple-file-list ou ait-csv.

J’ai pu également constaté un nombre important de tentatives à  base de Java, de modules Apache et de PHP. C’est sur cette partie que j’ai particulièrement inspectée ce qui a été tenté. Le hacker a essayé de créer des sessions et envoyé aussi un certain nombre d’instructions en PHP. Exemple  :

/index.php?a=fetch&content=%3C%3Fphp+file_put_contents%28%22monsite.php%22%2C%22%3C%3Fphp+echo+phpinfo%28%29%3B%22%29%3B

Il a également fait plusieurs POST sur des fichiers stratégiques tels que index.php, login.php, admin.php, etc. Heureusement tout ceci sans gravité. Cela m’a donné l’idée qu’il faudrait que je stocke également ces données dans mes logs afin d’étudier plus finement ce qu’il tente de faire.

J’ai aussi constaté un nombre important d’attaques REST sur d’éventuelles API présentes. Au vue du nombre toujours plus croissant de ce type d’application, il faut vraiment être très vigilant lorsque l’on propose ce type de port  ; il s’agit d’une véritable porte d’entrée sur tout un système.

Des attaques sur des logiciels très connus m’ont fait froid dans le dos, surtout que certains sont justement des logiciels de sécurité ou des portails pour firewall ! Quelques exemples : Citrix, Oracle’s eBusiness, F5, Cisco Asa, SAP, Exchange, Trend Micro et le pompon : FortiOS et son VPN SSL !

J’ai aussi observé un nombre de tentatives sur de l’IOT et pas mal de caméras et de routeurs domestiques  ; un peu trop à  mon avis, et en plus l’une d’entre elle n’était pas très loin du routeur Wifi que j’utilise à  la maison. Mais je pense plus à  un hasard. Cette partie me convainc toujours plus qu’il y a un véritable problème de sécurité avec l’IOT et l’embarqué. Si le cœur de métier de ceux qui fabriquent les logiciels est justement le logiciel et donc ont tout intérêt à  s’assurer de sa sécurité, dans l’IOT, le cœur de métier est beaucoup plus le matériel au détriment du logiciel qui l’habille. Sur ce type d’environnement, je vois trop souvent des GUI mal foutues, codées à  la va vite, et bourrés de bugs. D’ailleurs, un client m’a même déjà  sollicité pour une mission portant sur la sécurisation de tout son IOT. Révélateur, n’est-il pas  ?

Autre exemple d’attaque que j’ai pu observer : les scénarios en plusieurs passes, généralement à  base de POST mais pas seulement. L’attaque suivante à  base de Radius copie le fichier des mots de passe (/etc/passwd) dans le fichier monsite.txt

 /manager/radius/server_ping.php?ip=127.0.0.1|cat%20/etc/passwd>../../monsite.txt&id=1

Puis il tente de le récupérer au moyen d’un simple GET :

 /monsite.txt

J’ai mis monsite.txt, mais en réalité, le nom est une pseudo signature MD5 qui identifie mon site de manière unique. En gros, c’est un paramètre, et je l’ai trouvé plusieurs fois dans mes logs sur des attaques similaires à  base de scénario, notamment sur du WordPress comme cet autre exemple qui tente de charger via un POST un fichier signature appelé 1afreRe.php:

 /wp-content/plugins/ait-csv-import-export/admin/upload-handler.php

Qu’il tente ensuite de de récupérer :

/wp-content/uploads/1afreRe.php 

Cela peut complexifier un peu la détection, et les contre-mesures.

Russie et cyberattaques hors-bande

J’ai observé que plusieurs URL aboutissaient systématiquement à  ce site Russe.

Il s’agit d’un site gouvernemental pour la protection civile, les situations d’urgence et l’élimination des conséquences des catastrophes naturelles. Après plusieurs recherches, je n’ai rien trouvé de probant sur ce site, qui est tout à  fait légitime et ne présente aucun problème particulier (Hacking, blacklist, etc.) Ma conclusion est que l’un des formulaires de ce site a été également la victime d’une attaque similaire à  celle que j’ai subie.

En ce qui concerne l’attaquant en lui même, il est clairement identifié grâce à  son adresse IP. Il est originaire de Moscou, présent dans la plupart des listes noires qui recensent les activités dites «  malignes   » et lance de régulières attaques un peu partout dans le monde. D’ailleurs, en ce moment même il s’est de nouveau attaqué à  mon site.

Pour terminer sur les attaques, le hacker a utilisé une méthode hors bande pour tester d’éventuelles vulnérabilités sur mon serveur. Les vulnérabilités hors bande, qui sont également appelées OOB pour Out-Of-Band, sont une série de moyens alternatifs qu’un attaquant utilise pour exploiter une vulnérabilité qui ne peut pas être détectée par une interaction HTTP traditionnelle. Pour ce faire, il a utilisé le programme Interactsh. Cette méthode est assez innovante, mais encore assez mal documentée, de ce que j’ai pu trouver.

Dans mon cas, il a essayé de lancer des wget directement sur ma machine et observé les résultats sur une machine distante.

En conclusion

En définitive, ce genre d’attaque sophistique est un excellent stress-test pour évaluer la robustesse d’un site web. Il vous oblige à  vous mettre à  jour sur certains petits problèmes qui vous auraient échappé, et en plus vous force à  faire de la veille technologique sur de nouvelles méthodes d’intrusion.

L’ange et le banquier

Gabriel: Bonjour Walter.
Walter: Bonjour Gabriel.
G: Comment va ta femme ?
W: Arrête tout de suite tes mondanités et allons droit au but: tu veux encore de l’argent ?
G: Oui, je suis sur un gros projet et je suis raide de chez raide.
W: Comme d’habitude, quoi ?
G: Heu oui, comme d’habitude …
W: Tu sais bien que je ne peux plus te prêter de l’argent, cela devient beaucoup top risqué au vue de tout ce que tu me dois déjà .
G: Oui, mais là , c’est fort différent; je t’apporte de solides garanties.
W: Gabriel, tu ne peux pas éviter les ennuis en dépensant plus que ce que tu gagnes.
G: Mais c’est différent, te dis-je ! J’ai des garanties.
W: Je suis tout ouà¯e.
G: Je voudrais terminer la construction de l’immeuble du Marais.
W: Aie !
G: Gonzague est de la partie.
W: Ce malheureux Gonzague ! Ne crois-tu pas que tu ne l’as pas assez pressé comme cela ?
G: Cette question est hors de propos; je lui ai déjà  évoqué notre affaire et il est d’accord, emballé même.
W: Et où sont ces fameuses garanties ?
G: Il finance à  hauteur de 75%.
W: Je vois, donc tu prends 25% ?
G: Oui, sur 8 ans.
W: Et les locataires ?
G: Comme d’habitude, tu me connais ?
W: Que trop ! Pourquoi fais-tu cela ? Tu crois vraiment que c’est ton rôle ?
G: Cela me regarde.
W: Et si tes locataires ne paient pas ?
G: Ils prennent une assurance obligatoire à  la CFA.
W: Gros malin, la CFA t’appartient. Et elle est déjà  lourdement endettée !
G: Ce n’est pas grave, je peux toujours compter sur les revenus de l’AFC.
W: L’AFC, qui comme par hasard t’appartient également ! Tu sais très bien que tu joues avec le feu !
G: Ce n’est pas tes histoires: je ne t’ai jamais sollicité pour l’AFC alors tu la laisses en dehors de tout cela.
W: Il n’empêche que tout cela ne sent pas bon du tout.
G: Alors, tu me suis ou pas ?
W: Je ne sais pas trop, il me faudrait plus de garanties.
G: Tu sais très bien que je n’ai aucun mal à  lever les cotisations pour la CFA et l’AFC, ce qui me procure du récurrent.
W: Oui, je le sais bien et j’ai bien vu que ton service de contentieux ne faisait pas dans la dentelle.
G: Tu sais aussi que mes participations dans des grosses boites comme FDE me garantissent de solides dividendes tous les ans.
W: Certes, mais pour combien de temps encore ?
G: Et le top du top: le mécanisme de bail-in que j’ai discrètement imposé aux sociétaires de la CFA et de l’AFC.
W: Qu’est-ce que c’est que cette histoire ?
G: Je t’explique: tous les mois, mes sociétaires cotisent et bien entendu lors d’un sinistre (accident ou défaut de paiement d’un locataire), ils sont remboursés en fonction de ce dont ils ont souscrit. Ce remboursement est toutefois plafonné à  hauteur de 75% de la valeur totale du sinistre. S’ils souhaitent être remboursés à  hauteur de 100%, alors ils prennent une assurance complémentaire. La chose amusante, c’est que les sociétaires du CFA vont dans ce cas voir l’AFC pour leur complémentaire, et chose encore plus amusante, ceux de l’AFC vont chez le CFA; mes services commerciaux sont redoutablement efficaces.
W: En effet !
G: Exact, mais ce n’est pas tout: sur le reliquat qui représente 25% des sommes, j’ai mis une clause en petits caractères qui dit qu’en cas de difficulté de la société, l’assurance peut saisir la totalité de ce reliquat pour se couvrir.
W: C’est diabolique, mais les gens ne disent rien ? Parce que c’est quand même drôlement gonflé !
G: As-tu déjà  lu les 32 pages de ton contrat d’assurance ?
W: Non, car c’est écrit trop petit et aussi c’est surtout indigeste.
G: Tu vois. Alors on fait affaire, oui ou non ?
W: Vu la dette que tu as chez moi, j’aurais tendance à  dire non, mais je dois bien avouer que tes trois derniers arguments font mouche, l’Ange.
G: Je t’ai déjà  dit que je détestais que l’on m’appelle comme cela ! Alors, c’est ok ou pas ?
W: C’est ok, même si cela me déplait beaucoup. Une chose encore.
G: Oui ?
W: Un jour où l’autre, tu sais très bien que tu devras passer à  la caisse.

Un générateur de fausses identités

Pas question ici de fullz mais tout simplement de fausses identités générées aléatoirement à  partir d’une combinaison d’informations tout ce qu’il y a de plus courant.

Vous obtenez un prénom, un nom, une adresse, le sexe, un email, un numéro de téléphone, un numéro de sécurité sociale ainsi que, ô surprise, un numéro de carte bleue. Bien entendu tout est faux.

Ces jeux de données peuvent être utilisées pour des tests sur des sites de e-commerce ou comme dans mon cas, dans le cadre de la cybersécurité.

Télécharger 500 fausses identités

Wpcheck, un plugin pour vérifier votre WordPress

Wpcheck est un plugin WordPress qui vous permet d’afficher un nombre très important d’informations sur l’état de votre blog WordPress. A savoir, la plupart des paramètres, les informations système de votre serveur, le contenu du cron ainsi que la majorité des variables PHP. Il peut aussi vérifier les performances d’accès au réseau.

Vous avez également la possibilité de générer un rapport complet que vous pourrez télécharger. Ceci peut-être fort pratique dans le cadre des mises au point ou du support utilisateur.

29 mars 2020: Version 1.01. Petit bug remonté par FreePixel

27 mars 2020: Version 1.0

Télécharger le plugin