Un moyen simple de gagner de l'argent grâce à Bug Bounty

Figure 2


Vous avez sûrement entendu l'expression "chasse aux bogues" plusieurs fois. J'ose supposer que cela ne vous gênera pas de gagner un ou deux cents (ou même mille) dollars en trouvant une vulnérabilité potentielle dans le programme de quelqu'un. Dans cet article, je vais vous parler d'une astuce qui aidera à analyser les projets open source afin de trouver de telles vulnérabilités.

Bug Bounties sur les logiciels libres et open source - qu'est-ce que c'est?


Bug Bounty est un nom commun pour divers programmes, où les développeurs de sites Web et de logiciels offrent des récompenses en espèces pour trouver des bogues et des vulnérabilités. En plus des programmes bien connus de Bug Bounty de grandes sociétés comme Apple ou Microsoft, il existe également des programmes de recherche de vulnérabilités dans les projets open source.

Beaucoup d'entre eux peuvent être trouvés sur HackerOne, mais peut-être le plus important est FOSSA - Audit logiciel libre et open source. Il s'agit d'un programme de recherche de vulnérabilités dans divers projets open source, parrainé par l'Union européenne. La dotation totale est une somme impressionnante - jusqu'à 850 000 euros!

Comment participer?


Tout d'abord, vous devez vous inscrire sur HackerOne . Nous n'aurons besoin que de projets open source. Il y a toute une liste sur HackerOne.

Si vous souhaitez participer à Bug Bounty de l'Union européenne, la liste des projets participant à ce programme est disponible ici . Pour la plupart des projets, il suffira d'être enregistré sur HackerOne, mais de nombreux programmes listés sont également sur le site intigriti.com.

Pour participer, vous devez choisir un projet approprié pour vous-même, puis lire attentivement les conditions de participation. Si vous êtes d'accord avec eux, passez à une partie pratique.

Pour trouver une vulnérabilité et obtenir votre argent, vous aurez juste besoin de télécharger un projet (ou de le cloner depuis GitHub) et d'analyser soigneusement chaque ligne de code, en examinant chaque expression pour des erreurs potentielles. Si vous trouvez quelque chose, cela peut affecter la sécurité du programme - faites un rapport et envoyez-le aux développeurs. S'ils jugent votre résultat digne d'être récompensé - vous avez votre argent dans votre poche :).

Mais où est la simplicité?


La partie simple est que vous n'avez pas à analyser le code uniquement manuellement. Il existe des outils qui vous permettent de rechercher automatiquement les erreurs de code. Par exemple - analyseurs de code statique. Je préfère utiliser notre outil - PVS-Studio . L'analyseur PVS-Studio est capable de trouver des erreurs dans le code, écrit en C ++, C # et Java, ainsi qu'une interface conviviale. De plus, il existe plusieurs options d'utilisation gratuite. Quoi qu'il en soit, il existe d'autres analyseurs de code différents.

Bien sûr, les analyseurs statiques ne peuvent pas révéler toutes les erreurs. Qu'à cela ne tienne! Après tout, nous avons pour but de trouver rapidement et facilement les erreurs, et non de les trouver toutes.

Une fois le projet téléchargé et construit, il ne faudra que quelques clics pour démarrer l'analyse. Le résultat sera un rapport avec un certain nombre (généralement significatif) d'avertissements générés par l'analyseur. Dans PVS-Studio, ils sont classés en trois niveaux de certitude. Vous devez commencer par le premier niveau d'avertissements, afin que les niveaux orange et jaune puissent être éliminés du résultat de l'analyse.

Figure 1


Un exemple de filtrage des résultats de l'analyse.

Ainsi, vous n'aurez qu'à regarder les avertissements restants et à choisir les endroits qui peuvent présenter le plus grand danger. Il vaut la peine de vérifier s'il est possible de reproduire l'un d'eux directement lors de l'exécution du programme. Si vous parvenez à le faire - cela augmentera non seulement les chances que les développeurs acceptent le rapport, mais augmentera certainement le montant du paiement. Dans ce cas, la visibilité est votre meilleure amie.

Il convient également de déterminer si le bogue que vous avez trouvé affecte la sécurité du programme. Après tout, dans ce cas, le montant qui vous sera versé sera plusieurs fois plus :)

La capture d'écran montre l'interface de Visual Studio. Cependant, ne vous laissez pas induire en erreur. L'analyseur peut être utilisé non seulement comme un plugin pour Visual Studio, mais également seul, y compris les environnements Linux et macOS .

Avantages de cette approche


Tout d'abord, l'utilisation d'un analyseur statique est l'un des moyens les plus simples de trouver des bogues. Vous n'avez pas besoin de connaissances particulières pour utiliser les analyseurs de code: il vous suffit de comprendre la langue dans laquelle le code est écrit.

Deuxièmement, les analyseurs sont attentifs. Ils ne se fatiguent pas et ne perdent pas leur vigilance, contrairement à un être humain. Par conséquent, ils peuvent être utilisés pour analyser des bases de code aussi volumineuses que vous le souhaitez avec un coût presque minimal.

Troisièmement, les analyseurs ont souvent plus de connaissances que les humains. Qu'est-ce que cela signifie? Permettez-moi d'expliquer mes pensées avec l'exemple du code du noyau Android:

static void FwdLockGlue_InitializeRoundKeys() { unsigned char keyEncryptionKey[KEY_SIZE]; .... memset(keyEncryptionKey, 0, KEY_SIZE); // Zero out key data. } 

Il semblerait, où est une erreur ici?

Il s'avère qu'un compilateur, voyant qu'un tableau n'est utilisé nulle part ailleurs, peut optimiser le code et en supprimer l'appel de la fonction memset . Et il ne le fera que lors de la construction de la configuration de la version. Tout irait bien, mais seule la clé d'inscription restera dans la RAM non effacée pendant un certain temps, de cette façon, elle peut être obtenue par un intrus. Une vraie brèche de sécurité!

De plus, il est difficile à trouver par vous-même: dans le mode de débogage, l'appel de memset fonctionne très bien. Les tests ne seront pas non plus utiles ... La seule chose qui reste est d'être conscient et de se souvenir de cette fonctionnalité vous-même.

Et si les développeurs du projet ne connaissent pas cette fonctionnalité? Et si vous ne connaissez pas cette fonctionnalité lorsque vous recherchez des bogues? Quant à l'analyseur, il a le diagnostic V597 , donc vous découvrirez certainement cette fonctionnalité lors de la visualisation du rapport.

Enfin, le quatrième point. L'un des avantages les plus utiles de l'utilisation de l'analyse statique lors de la recherche de Bug Bounty est la vitesse. C'est vrai qu'on peut vérifier deux, trois, quatre projets en une soirée - mais ce n'est pas tout.

L'essentiel est que vous puissiez être le premier. Bien que le prix soit offert pour trouver des bogues dans n'importe quel projet, le projet continue d'être affiné et développé. Les développeurs livrent de nouvelles versions et de nouvelles fonctionnalités avec un nouveau code et un nouvel espace pour les erreurs. En utilisant l'approche que j'ai décrite, vous serez en mesure de considérer de manière ciblée les nouvelles erreurs et vulnérabilités potentielles dès le premier jour de leur publication.

Figure 4


Vulnérabilités potentielles


Un lecteur attentif peut être perplexe:

Attends, attends! D'une part, vous parlez de rechercher des erreurs dans le code dans les programmes, d'autre part - vous mentionnez des vulnérabilités potentielles. Les vulnérabilités sont plus intéressantes en termes de Bug Bounty. Veuillez clarifier ce que vous voulez dire!

Le fait est que les erreurs et les vulnérabilités potentielles sont fondamentalement la même chose. Bien sûr, seules quelques erreurs / vulnérabilités potentielles s'avèrent être de réelles vulnérabilités dans les recherches futures. Cependant, une erreur inoffensive et une vulnérabilité cruciale peuvent avoir exactement la même apparence dans le code. L'article « Comment PVS-Studio peut-il aider à détecter les vulnérabilités? » Présente plusieurs bogues apparemment courants qui sont désormais connus pour être des vulnérabilités.

Soit dit en passant, selon le rapport du National Institute of Standards and Technology (NIST), environ 64% des vulnérabilités des applications sont liées à des erreurs logicielles, et non à des problèmes directement liés à la sécurité.

Alors saisissez l'ortie, obtenez PVS-Studio et commencez à chercher des erreurs et des failles de sécurité! Le classement selon le CWE sera d'une grande aide ici.

Conclusion


J'espère que j'ai aidé un lecteur dans sa recherche de ces bugs qui lui apporteront des récompenses honorables et monétaires. Je suis sûr que l'analyse statique vous y aidera! N'oubliez pas que les développeurs n'ont généralement pas le temps d'analyser les bogues en détail, vous devrez donc prouver que votre découverte peut réellement affecter le programme. La meilleure façon est de le reproduire visuellement. Et rappelez-vous: plus le bogue détruit la sécurité - plus vous serez payé pour cela.

Eh bien, c'est tout. Bonne chance dans la recherche d'une récompense!

Source: https://habr.com/ru/post/fr464553/


All Articles