Aujourd’hui un article assez long expliquant le fonctionnement d’une méthode permettant de créer de l’argent grâce à votre banque en ligne.
Il n’y a pas que les banques “physiques” qui sont vulnérables, les banques en ligne aussi sont susceptibles d’être attaquées. De nombreux bugs ont déjà été observés en conditions réelles. Des utilisateurs ont par exemple trouvés le moyen : de prendre de l’argent de comptes d’autres utilisateurs, d’avoir un découvert illimité sur leur propres comptes, de transférer des montants négatifs sur d’autres comptes (retirer l’argent des autres utilisateurs) et même – aussi effrayant que cela puisse paraître – de créer une quantité illimitée d’argent à partir de rien.
Ces types de failles critiques dans les systèmes financiers ne sont pas aussi rares qu’on le souhaiterait, en effet, certain professionnels estiment qu’au moins un tel défaut existe dans votre banque en ligne, si elle n’a pas été soigneusement et régulièrement été examinée par différents spécialistes en sécurité informatique.
Bien que ces vulnérabilités puissent permettre à un voleur de prendre beaucoup d’argent de clients ou de la banque elle-même, cela est considéré comme un acte punissable par la loi.
Failles de sécurité exploitables légalement
Il existe, cependant, d’autres types de failles de sécurité dans les systèmes financiers dont l’exploitation peut être parfaitement légale. Une faille aujourd’hui publique consiste à abuser de la manière dont l’arrondi se fait lors de la conversion entre devises et qui permet aux utilisateurs d’influer efficacement sur les taux de change à tel point que, par exemple, ils obtiennent 100 EUR (Euro) en échange de100 USD (dollar américain), même si 100 euros serait normalement équivalent à 130 USD.
Ce type de faille a d’abord été décrite dans le document intitulé « Assymetric Currency Rounding » par M’Raïhi, Naccache et Tunstall de Gemplus, et plus tard dans un article publié en 2008 sur le site Corsaire « Breaking the bank -Vulnerabilities in numeric processing within financial applications ».
Principe du fonctionnement
Les banques ont généralement deux taux de change : le taux d’achat est le taux auquel la banque va acheter la monnaie étrangère, tandis que le taux de vente est le taux auquel ils vont la vendre.
Dans cet article, nous allons utiliser les chiffres avec une virgule décimale et un point comme séparateur de milliers. Par exemple, un millier sera écrit comme 1.000,00.
Supposons qu’une banque européenne ait pour taux de change du dollar américain :
Taux d’achat: 1,388 (vous payez 1,388 USD pour 1,00 EUR)
Taux de vente: 1,364 (vous obtenez 1,364 USD pour 1,00 EUR)
Évidemment, la banque prend une marge sur chaque conversions et ce même si aucune commission distincte est facturé pour l’échange. Par exemple, si vous achetez 1.364,00 USD pour 1.000,00 EUR et que vous les revendez à la banque, vous obtiendrez 982,71 euros, ce qui correspond à une perte de 17,29 EUR.
Arrondi
Les banques fonctionnent généralement avec deux décimales et même si divers calculs (par exemple, les calculs d’intérêts ou de change) sont effectués avec une plus grande précision, les résultats finaux sont arrondis à deux décimales. Maintenant, si la banque est juste, cet arrondi se fait au plus proche, c’est à dire que 7,237 est arrondie à 7,24 et 2,221 est arrondi à 2,22. Si l’on doit arrondir un chiffre tel que 1,505 alors que l’on arrondisse à 1,50 ou 1,51 n’a pas d’importance dans cet article.
Combien puis-je obtenir pour un cent?
Dans des cas typiques, la conversion ne semple pas poser de problèmes cependant les chercheurs en sécurité sont généralement plus intéressés par les cas atypiques.
Que se passe t-il si vous voulez convertir un centime d’euro en dollars américains? La banque en ligne va utiliser les taux de vente suivants :
0,01 EUR * 1,364 USD / EUR = 0,01364 USD
Après arrondi, on obtient 0,01 USD. On observe qu’il en résulte une perte (un cent de dollar vaut moins qu’un cent euros dans notre exemple), ce qui correspond à une perte de 27%.
Mais que se passe t-il si on fait la conversion dans l’autre sens? Cette fois, les taux d’achat utilisés sont :
0,01 USD / 1,388 USD / EUR = 0,0072046109510086455331412103746398 EUR
Après arrondi, vous obtenez 0,01 euros. Ce qui change c’est qu’au lieu d’une perte on vient de faire un bénéfice de 38,8%. Bien sûr, le profit est minuscules mais cette procédure peut être exécutée à plusieurs reprises d’une manière entièrement automatisée. En le faisant ainsi une centaine de fois, 1 dollar américain peut être échangé contre un euro. Une centaine de milliers de fois, et on obtient 1.000,00 EUR pour 1.000,00 USD (un bénéfice de 280,00 euros). Même si l’on doit d’abord acheter les 1.000,00 $ à la même banque (au taux de vente de la banque) pour 733,14 euros, le bénéfice total final est égal à 266,86 euros. Et ce bénéfice n’est que le résultat d’un usage légitime des services fournis par la banque.
Mais combien de cents Puis-je vendre?
Supposons une banque en ligne accepte une centaine de demandes par seconde (ce qui laisse une grande marge de manœuvre – les grandes banques ayant à soutenir des milliers de requêtes par seconde en période de pointe), un script automatisé peut faire 100 * 60 * 60 * 24 = 8.640.000 demandes d’échange par jour, faisant un profit d’environ 23.000 euros toutes les 24 heures.
Maximiser le rendement
A présent, il est clair que le profit provient des erreurs d’arrondi. Plus la valeur convertie est proche de 0,005 (mais au-dessus), plus le bénéfice sera important après arrondi. Il est plus facile de maximiser le profit en utilisant des monnaies à taux de change plus importantes (tel que le Yen ), car elles permettent de s’approcher plus facilement de 0,005. Dans le meilleur des cas on obtient un bénéfices de 0,005 unités de la devise cible. Pour espérer faire fortune en utilisant cette technique il faudra alors des centaines de milliers d’opérations.
Est-ce vraiment légal?
La propriété essentielle de cette «exploitation», c’est que vous ne faites rien pour contourner un quelconque mécanisme de sécurité, vous utilisez simplement une fonctionnalité fournie, et il est inconcevable que l’échange de 1,00 $ soit légal alors que l’échange de 0,01 $ ne le soit pas.
Notez que à partir du moment où l’on “aide” le système afin qu’il accepte le faible montant, on risque de tomber dans l’illégalité, même si il ya juste une validation JavaScript côté client afin d’empêcher l’utilisation de valeurs trop petites (ce qui, comme tout le monde le sait, peut être facilement contournée) la loi pourrait interpréter un tel “court-circuit” comme illégal.
Contres mesures
Après avoir pris connaissance de cette vulnérabilité, les banques peuvent employer diverses contre-mesures pour l’éliminer :
- Mettre en place des frais de conversion. C’est la plus simple contre-mesure, et même si la taxe est vraiment minuscule (par exemple, 0,01 euros), cela suffit à absorber les bénéfices offerts par l’arrondi.
- Définition d’un montant minimum de conversion. Tout comme les bureaux de change physiques refuser toutes opérations en dessous d’un certain montant, une banque en ligne peut refuser les transactions en dessous d’un euros. Notez que l’échange d’un montant supérieur à 1 euros peut encore fournir jusqu’à 0,005 euros de bénéfices erreur d’arrondi, mais ce bénéfice est plus que neutralisée par la différence entre les taux acheteur et vendeur.
- Toujours arrondir au profit de la Banque: Cela peut sembler injuste mais c’est une contre-mesure efficace
- Limiter le nombre d’opérations par l’utilisateur: Évidemment, la récolte des bénéfices significatifs nécessite des centaines de milliers d’opérations de change. Une banque en ligne peut limiter le nombre autorisé des opérations de change pour tout utilisateur un millier par jour par exemple sans que cela ne cause de problèmes.
Existe t-il d’autres failles de sécurité exploitables légalement?
Elles sont nombreuses mais celle-ci est publiquement connue depuis une décennie et est exploitée activement. Beaucoup d’autres défauts ne sont pas connues du public et les chercheurs estiment qu’il ne serait pas prudent de les rendre publiques.
Conclusion
Cette faille est un excellent exemple de comment les choses peuvent mal se passer quand vous prenez un simple processus physique tels que le change manuel – et que vous le transformez en un service en ligne. Ce cas particulier a introduit deux modifications essentielles: d’abord, le service en ligne permet d’exécuter des centaines de milliers d’opérations dans un court laps de temps, tandis que dans un bureau d’échange physique on ne pourrait probablement pas faire plus de deux opérations par minute. Et en second lieu, le système en ligne accepte ne s’intéresse pas à la somme en jeux aussi petite soit-elle, il ne fait que suivre les instructions.
Source :

Pingback: Nono’s Vrac 36 « m0le'o'blog