By Philidia on dimanche 6 juin 2021
Category: News

Analyse des données de l'exploitation de bugs

​Si vous vous demandez comment Riot gère l'exploitation de bugs, cet article, qui reviendra sur 3 exploits passés sur Reddit, est pour vous !

Bug Exploit data analysis | Hextechlab

Récemment, des exploits bugs ont été publiquement connus sur League of Legends, et exploités par des joueurs. Ces bugs peuvent avoir différentes sévérités et impacts sur le jeu. La meilleure façon de comprendre à quel point ces bugs sont utilisés et de se rendre compte de l'impact de cette utilisation sur le jeu compétitif est de récolter des données et de les analyser...

Cette étude se focalise sur 3 bugs en particulier :

Build spécial sur Pyke (Thread Reddit)

Sorts globaux, notamment le A/Q de Poppy (Thread Reddit)

Viego et le sceau noir (Thread Reddit)

Les données de cette analyse proviennent de l'API Riot. Les spécificités de ces bugs les rendent plus ou moins faciles à détecter en utilisant les données disponibles. Nous allons voir que ces bugs sont très différents, aussi bien en terme de sévérité qu'en terme d'impact, mais aussi en terme de gestion de la part de Riot, et comment Reddit a pu influencer l'utilisation de ces bugs.

Contexte

Les exploits de bugs (Ou bug exploits en anglais) représentent dans les jeux vidéo l'écart entre les règles du jeu et le programme qui les implémente. Il s'agit de quelque chose que le joueur peut faire, mais ne devrait pas pouvoir faire. La plupart du temps, ces bugs sont trouvés et corrigés par les développeurs avant la sortie du patch, mais certains peuvent leur échapper, en général parce qu'ils n'apparaissent que dans des conditions très spécifiques.

Les speedruns, compétitions dont le but est de finir un jeu le plus rapidement possible, reposent généralement très fortement sur ces exploits. Considérer ou non les exploits comme de la triche est sujet à controverse. Finalement, c'est à la communauté et aux développeurs de décider, au cas par cas, si un exploit est un bug ou une fonctionnalité.

Le build spécial sur Pyke

Description

​Ce build spécial vient d'une combinaison de deux runes, Après-coup et Ruban de mana, ainsi que l'objet Catalyste. Quand ces trois éléments sont équipés, et prêts à être utilisés, La prochaine compétence Harponnage de Pyke va lui donner une énorme augmentation de statistiques et de soins. Ces conditions rendent le bug assez difficile à utiliser, et vu que le Ruban de Mana n'a qu'un nombre limité d'utilisations par partie (10 fois), l'impact est assez limité, mais tout de même capable de renverser un combat, voire même la partie, si bien utilisé.

Utilisation

Sur le serveur EU Ouest, quelques jours après le premier sujet sur Reddit, le build est apparu dans 683 parties, pour 586 joueurs au total.

Comme on le voit, le build a été principalement utilisé en parties normales.

​Nombres de parties par joueur ​Toutes files ​File classée
​1 ​526 ​139
2​​419​
​312​​3
4​​3​0
​5​1​0
​6​2​0
​10​1​0

Nombre de parties jouées avec le build spécial par joueur, pour tous les types de parties, et pour les parties classées

Le tableau montre que seul un joueur a utilisé ce build dans 10 parties, mais seulement en parties normales. En parties classées, aucun joueur n'a utilisé ce build plus de 3 fois.

Effets

Ce bug n'a eu que très peu d'effets sur l'aspect compétitif de Pyke. Son banrate est resté à 18-19%, son pickrate à 10%, et son winrate à 48% pour la période de temps étudiée en parties classées.

De manière assez ironique, on peut observer que le winrate du champion baisse lorsque le build est utilisé :

​File Winrate (Build spécial) ​Winrate (Tous les Pyke)
​Coop vs IA ​100% ​98.73%
​Normale​44.42%​47.75%
​Classée​40.36%​48.86

​Cette chute du winrate peut s'expliquer par l'expérience des joueurs sur ce champion. Plus de la moitié de ceux qui ont essayé d'utiliser ce bug ont seulement trois parties ou moins sur Pyke, en incluant les parties avec le build spécial, et donc sont inexpérimentés sur le champion.

Si l'on prend uniquement les joueurs expérimentés, avec au moins 10 parties sur la période étudiée, le taux de victoire est de 50%, soit légèrement plus que le taux global. Cependant, vu que le nombre de parties concernées est vraiment bas (seulement 28), il est difficile de conclure à un avantage grâce à ce bug. 

Du côté des stats intéressantes, le graphique ci-dessous montre la distribution des soins de Pyke dans une partie, sur la gauche pour tous les Pyke, sur la droite ceux utilisant le build spécial. Comme attendu, l'utilisation du build spécial obtient généralement des soins bien plus élevés :

Le graphique suivant représente plusieurs stats jour par jour, indiquant le jour de la mise à jour et le premier sujet sur Reddit à propos du bug. Les barres bleues montrent le nombre de parties avec Pyke et son build spécial. On peut voir qu'il n'a été utilisé qu'une seule fois avec la mise à jour, un pic après le sujet Reddit, puis une chute massive deux jours après, suggérant que la plupart, si ce n'est tous les usages de ce build étaient uniquement pour abuser du bug, qui a été rapidement corrigé. Les lignes représentent les soins moyens de Pyke, avec et sans le build spécial. Cela permet de voir assez précisément quand le bug a commencé à être utilisé, et quand il a été corrigé :

Conséquences sur les abuseurs

Tous les joueurs ayant utilisé le bug jouent toujours normalement, aucun ban n'a donc été reçu, et d'après les quelques contacts avec les joueurs concernés, aucun n'a reçu ne serait-ce qu'un avertissement.

Sorts globaux, notamment le A/Q de Poppy

Description

Due à une erreur dans le calcul de zone sous certaines conditions, les sorts avec une zone d'effet rectangulaire partant du champion à certains endroits précis touchaient toute la carte. Ce bug est apparu plusieurs fois l'année dernière, d'abord avec Kayn, "résolu" en mars, puis avec Ornn (résolu en Avril) puis encore avec Kayn en juin. Tous ces bugs semblaient vraiment reliés, jusqu'à ce qu'on se rende compte que c'était bel et bien le même bug affectant tous les sorts de ce type :

Bien sûr, un tel bug génère un énorme avantage, étant capable de tuer les sbires sur toute la carte, et même de tuer les autres champions n'importe où. C'est une victoire quasiment assurée.

Méthodologie

Comme ce bug n'a pas besoin de runes ou d'objets en particulier, trouver les occurrences d'abus de ce bug devient un peu plus compliqué. Malgré tout, cela laisse des traces que l'on peut détecter grâce à l'API Riot, en cherchant les cas où une bonne partie des dommages de l'équipe (>80%) est faite par un seul joueur, même chose pour le nombre de sbires tués. Cette méthode ne peut pas capturer toutes les occurrences, mais cela permet au moins de trouver les joueurs abusant du bug, et en cherchant parmi les parties de ces joueurs, on peut trouver d'autres parties qui n'avaient pas été trouvées initialement. De l'autre côté, toutes les parties trouvées avec la première méthode ne sont pas forcément des occurrences d'abus, et pour éviter de compter un joueur innocent comme coupable, toutes les parties ont été manuellement vérifiées pour s'assurer qu'abus il y a bien eu. Finalement, s'il n'est pas possible de trouver *toutes* les parties où l'abus a eu lieu, il est possible d'en avoir un bon échantillon, et l'analyse qui va suivre reposera donc sur cet échantillon.

Usage

Sur une semaine, entre le 17/06/2020 et le 24/06/2020, le bug a été utilisé dans au moins 614 parties, par 194 joueurs.

Sur la distribution des parties par type, on remarque que l'abus est bien plus utilisé en parties classées, avec 87% des parties trouvées, bien plus que pour le bug de Pyke par exemple, et même en Clash avec trois parties concernées.

On voit aussi dans la figure suivante que Poppy est le champion le plus utilisé de très loin, puis Kayn et Illaoi, qui sont les deux autres champions utilisés pour ce bug.

​Nombre de parties jouées en utilisant l'exploit bug Toutes files​ Classées​
​1 62​ 52​
​2​4336​
​3​29​22
​4​22​20
​5​9​9
​6​9​8
​7​8​6
​8​5​5
​9​1​1
​11​1​1
​13​1​1
​15​2​2
​16​1​1
20​​1​1

Nombre de parties avec sorts globaux par joueur, tous types de partie confondus et classées uniquement

​Nombre de parties jouées en utilisant l'exploit bug Toutes files​ Classées
​1 ​1890 ​1638
​2​56​45
​3​18​14
​4​11​10
​5​5​5
​6​6​6
​7​4​5
​8​2​2
​9​3​2
​10​6​6
​12​1​1
​14​4​4
​16​1​1
​18​1​1
​22​1​1
​37​11​

Nombre de parties un joueur a été dans l'équipe d'un abuseur de sorts globaux, tous types de partie confondus et classées uniquement

Le premier tableau montre le nombre de de joueurs ayant abusé du bug par nombre de parties. On peut voir qu'un joueur a abusé du bug dans 20 parties différentes, mais on peut aussi voir qu'aucun joueur n'en a abusé plus de 8 fois en parties classées, ce qui reste néanmoins un nombre assez élevé.

Le deuxième tableau montre le nombre de joueurs qui ont joué dans la même équipe qu'un abuseur par nombre de parties. Si être dans la même équipe qu'un abuseur n'est pas suspect en soi, cela l'est quand il est dans la même équipe plus d'une fois. Cela montre sans doute un joueur voulant se faire rapidement et simplement des points de ligue sans risque. Ou presque. On note aussi un joueur ayant indirectement abusé du bug dans 37 parties.

Effets

Avec 96% de taux de victoire, ce bug est vraiment très efficace pour gagner, sans surprise. Mais on peut aussi remarquer des effets sur la compétition au-delà des parties directement concernées.

La figure ci-dessous montre l'impact que ce bug a eu sur Poppy. Après que le bug ait été posté sur Reddit, son taux de ban a été multiplié par 5, de moins de 1000 bans par jour à plus de 6000 le 19/06. Pour un court moment, Poppy a été le 72ème champion le plus ban, contre 126ème d'ordinaire. Le taux de sélection de Poppy a aussi sensiblement augmenté ce jour-là.

Conséquences sur les abuseurs

127 comptes parmi ceux qui ont abusé du bug (soit environ 65%) n'ont pas joué à une seule partie depuis Juin 2020, signifiant sûrement que ces comptes ont été bannis définitivement. De plus, plusieurs comptes qui montraient des parties jouées depuis ont été contactés, et ils ont tous signalé qu'ils avaient été piratés, et qu'ils ont en effet été bannis pour l'usage du bug, puis ce ban a été levé après avoir récupéré le compte auprès du support, ce qui conforte la première hypothèse.

Plus intéressant, certains de comptes qui ont joué avec des abuseurs sans jamais utiliser le bug eux-mêmes ont été bannis, ce qui montre que même abuser indirectement d'un bug peut valoir des sanctions aussi élevées de la part de Riot Games.

Viego et le sceau noir

Description

Le Sceau Noir est un objet qui accumule des "stacks", un compteur qui augmente à chaque champion tué et à chaque assistance, qui diminue à chaque mort, et chacun de ces stacks donne des stats supplémentaires comme la puissance des sorts.

Après avoir "corrigé" un problème sur cet objet pour Viego dans le patch 11.5, quand ce dernier meurt pendant qu'il possède un autre champion, le nombre de stacks sur le Sceau Noir augmente et va bien plus haut que ce qui est normalement possible. C'est un cas de soupassement d'entier. Pour faire simple, quand Viego meurt avec un Sceau noir, il perd 4 stacks, mais quand il a par exemple 2 stacks, au lieu de diminuer à 0, il diminue à -2. Le problème ici, c'est que la façon dont est encodé le nombre de stacks n'autorise pas de nombres négatifs, et le soupassement fait que le nombre de stacks devient alors la plus haute valeur possible, dans ce cas, en tant qu'entier sur 16 bits, 65535. Cela fait beaucoup de stacks, et donne bien trop de stats au porteur, ce qui mène à des abus comme ceux que l'on peut voir ici :

A 15h11 (UTC)le 04/03, Viego a été désactivé pour permettre la correction de ce bug.

Méthodologie

Dans ce cas, une conséquence directe des dommages bien trop élevés de Viego est que les dommages reportés en fin de partie sont aussi trop élevés pour être gérés par le système, et les dommages de Viego sont alors affichés en négatif. C'est un cas tellement unique qu'isoler les parties avec ce problème donnait à coup sûr une partie où le bug apparaissait.

Curieusement, Viego n'était pas le seul à présenter des dommages négatifs, certains champions pouvant interagir avec Viego comme Mordekaiser ou Yuumi, montraient aussi des stats négatives.

Usage

Ce bug est apparu dans 1032 parties, pour 673 joueurs différents, sur EU Ouest entre le 04/03 et le 05/03, et pour être plus précis, avant que Viego ne soit désactivé.

On peut voir que ce bug a été utilisé dans la moitié des cas en parties classées, dans un tier des cas en parties normales, et le restant du temps en coop vs IA

​​​Nombre de parties jouées en utilisant l'exploit bug ​Toutes files Classées
​1 492​ 223​
2​​103
​51
​3​35​16
​4​167​
​511​5​
​6​8​7
​7​3​2
​8​1​1
​9​11​
​10​3​2

Nombre de parties avec Sceau Noir sur Viego par joueur, tous types de parties confondus et classées uniquement

​​​​Nombre de parties jouées en utilisant l'exploit bug ​Toutes files Classées
​1 ​3614 1809​
​2​16057​
​334​​23
​47​2​
​5​3​2
​6​6​6
7​​4​3
​9​11​

Nombre de parties où un joueur a été dans l'équipe d'un abuseur du bug, tous types de partie confondus et classée uniquement

Avec le premier tableau, on peut voir que parmi les 673 joueurs ayant utilisé le bug, seulement 181 l'ont utilisé plus d'une fois, et certains jusqu'à 10 fois, ce qui est un nombre assez élevé considérant la rapidité de la réaction de Riot à propos de ce bug. Le deuxième tableau montre le nombre de fois où un joueur était dans la même équipe qu'un abuseur, et 215 joueurs ont été alliés à un abuseur plus d'une fois.

On peut voir que la majorité des occurrences du bug se sont produites *après* le premier sujet à ce propos sur Reddit.

 Effets

Avec 76% de taux de victoire, ce bug donne un important avantage, mais pas autant que le bug de sorts globaux, mais ce taux monte à 82% pour les joueurs ayant utilisé le bug deux parties ou plus, et 87% pour trois parties et plus.

Sur le graphique ci-dessus, on peut noter un début d'augmentation du taux de ban assez rapide coïncidant avec le nombre des occurrences du bug. Le taux de ban de Viego est passé de 31% (malgré une certaine instabilité durant la nuit du fait du faible nombre de parties jouées) à 37% juste avant sa désactivation, laissant penser que le taux de ban aurait été bien plus élevé sans cette désactivation. Après réactivation, le taux de ban était légèrement plus bas en s'étant stabilisé à 29%.

Conséquences sur les abuseurs

69 comptes sur les 181 qui ont utilisé le bug plus d'une fois n'ont pas fait de partie depuis Avril 2021, ce qui en représente seulement 38%, soit bien moins que pour le bug des sorts globaux, une différence qui peut être partiellement expliquée par le biais dans l'échantillonnage, biais inexistant pour cette dernière analyse, mais montre aussi que ce bug peut être assez facilement activé par accident.

Du côté des "alliés fréquents", seulement 54 des 215 partenaires opportuns semblent avoir été bannis sans avoir utilisé le bug, ce qui conforte la théorie que ce type de joueurs peut être aussi concerné par les sanctions.

Dans tous les cas, cela ne donne qu'une estimation basse du nombre de bans, étant donné qu'un compte peut être récupéré et son ban retiré si les parties incriminées n'ont pas été jouées par l'utilisateur légitime du compte.

Conclusion

Le résultat le plus impressionnant, mais pas si surprenant de cette analyse, c'est l'impact immense de Reddit sur l'exploitation de bugs une fois que c'est publié.

Aussi, nous pouvons voir que Riot Games agit bien en sanctionnant les abuseurs, mais aussi les abuseurs indirects, au moins sur les bugs qui impactent sérieusement le jeu. Quand il s'agit d'autres bugs moins importants, Riot n'agit pas du tout, malgré une claire volonté de tirer avantage du bug par certains joueurs.

Envie d'aller plus loin ? Le code de cette analyses est disponible sur Github.

Leave Comments