# Immunefi vs Code4rena vs Sherlock : ou trouver et signaler des bugs
Si vous lisez assez bien le Solidity pour reperer une reentrance ou un controle d'acces casse, quelqu'un vous paiera pour ca. La vraie question, c'est ou. Trois noms dominent la discussion : Immunefi, Code4rena et Sherlock. De loin ils se ressemblent (trouver un bug, etre paye) mais ils recompensent un travail fondamentalement different. L'un paie des exploits en production, les autres paient un travail de revue contre une deadline. Choisir la mauvaise plateforme pour votre situation, c'est gaspiller des semaines.
Cet article detaille les modeles de recompense et de severite, le jugement, l'engagement en temps, et quelle plateforme convient vraiment a un debutant par rapport a un auditeur experimente.
La distinction de base : bounties vs concours
Il y a ici deux modeles economiques distincts, et la difference faconne tout le reste.
Bug bounty (Immunefi). Un protocole publie un programme permanent sur du code deja deploye qui detient de vrais fonds. Vous chassez a votre rythme. Si vous trouvez une vulnerabilite valide et dans le perimetre, vous soumettez un rapport prive et vous etes paye selon sa severite. Pas de deadline, pas de pool partage. Si vous etes le premier a signaler un bug unique, la recompense est a vous.
Concours d'audit (Code4rena, Sherlock). Un protocole ouvre une competition limitee dans le temps (souvent de quelques jours a deux semaines) sur du code qui n'est generalement pas encore en mainnet. Beaucoup d'auditeurs revisent le meme code en meme temps. Un pool de recompenses partage est reparti entre tous ceux qui signalent des problemes valides, pondere par la severite et, sur certaines plateformes, par le nombre de personnes ayant trouve la meme chose.
La consequence pratique : les bounties recompensent la profondeur et la patience sur des cibles en production, les concours recompensent la rapidite et l'etendue sur du code frais. Un doublon ne vaut rien sur un bounty (quelqu'un vous a devance) mais rapporte quand meme une part dans un concours.
Modeles de severite et de recompense
Les trois s'appuient sur une echelle de severite similaire, mais l'argent se comporte differemment.
Immunefi
Immunefi a standardise la severite autour d'un systeme de classification des vulnerabilites avec des niveaux comme Critical, High, Medium, Low. Les findings critiques en smart contract sont en general ceux qui permettent de voler ou de geler definitivement des fonds. Les recompenses sont liees au programme : beaucoup de gros programmes DeFi plafonnent la recompense critique en pourcentage des fonds a risque, avec des maximums absolus eleves. Surtout, un vrai exploit sur un contrat en production est le resultat le mieux paye de tout le secteur, car le protocole evite une perte reelle.
Le compromis : vous etes en competition avec le monde entier sans preavis, et la plupart des rapports sont des doublons ou hors perimetre. Les revenus sont irreguliers. Vous pouvez passer un mois sans rien trouver de payable.
Code4rena
Code4rena utilise High, Medium comme paliers payes pour l'essentiel du pool, les rapports QA (assurance qualite) et d'optimisation de gas etant traites a part et valorises plus bas. Le pool est fixe a l'avance. Votre part sur un probleme donne depend de la severite et de la facon dont le finding est partage entre tous ceux qui l'ont signale. Signaler un High que vingt autres personnes ont aussi trouve rapporte bien moins qu'un High que vous seul avez trouve.
Cela cree une vraie incitation a trouver les bugs rares, pas seulement les evidents. Les debutants farment souvent les Mediums faciles et finissent avec de petites recompenses ; le classement est domine par ceux qui font remonter regulierement des High uniques.
Sherlock
Sherlock paie aussi principalement sur High et Medium, avec un pool fixe, mais ajoute deux mecaniques notables. D'abord, il a historiquement propose une composante de couverture ou de garantie sur certains audits, ce qui releve l'enjeu de la justesse du jugement. Ensuite, ses definitions de severite sont strictes et codifiees, ce qui reduit les disputes mais signifie aussi que les findings limites sont declasses plus agressivement. Sherlock attire les auditeurs qui aiment un jugement precis, guide par des regles.
Comment fonctionne le jugement
C'est sur le jugement que ces plateformes se ressemblent le moins, et c'est la partie que les debutants sous-estiment.
- Immunefi : l'equipe du protocole (parfois avec mediation) decide de la validite et de la severite. Il vous faut en general un proof of concept fonctionnel qui demontre l'impact, pas juste une theorie. Les litiges se reglent en prive.
- Code4rena : des juges dedies revisent toutes les soumissions apres la cloture du concours, les dedupliquent, attribuent la severite, et la communaute peut commenter. C'est transparent et vous voyez comment votre rapport se compare aux autres.
- Sherlock : un responsable du jugement plus l'avis du protocole, avec un document de regles formel. Il existe une fenetre d'escalade/appel ou vous pouvez defendre votre cas en citant les regles.
Le point commun : un rapport vague est rejete partout. Un finding sans chemin d'attaque concret et sans impact n'est que du bruit.
A quoi ressemble vraiment un rapport finance
La severite, c'est l'impact, pas l'astuce. Voici un schema classique a fort impact : un retrait qui met a jour l'etat apres l'appel externe, ce qui permet la reentrance.
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
contract Vault {
mapping(address => uint256) public balances;
function deposit() external payable {
balances[msg.sender] += msg.value;
}
// Vulnerable : appel externe avant la mise a jour de l'etat
function withdraw(uint256 amount) external {
require(balances[msg.sender] >= amount, "insufficient");
(bool ok, ) = msg.sender.call{value: amount}("");
require(ok, "transfer failed");
balances[msg.sender] -= amount; // trop tard
}
}
Le correctif suit l'ordre checks-effects-interactions :
function withdraw(uint256 amount) external {
require(balances[msg.sender] >= amount, "insufficient");
balances[msg.sender] -= amount; // l'effet d'abord
(bool ok, ) = msg.sender.call{value: amount}("");
require(ok, "transfer failed");
}
Quelle que soit la plateforme, vous appuyez ca avec un proof of concept. Avec Foundry, le PoC executable ressemble a ceci :
forge test --match-test testReentrancyDrainsVault -vvvv
Un juge veut voir le contrat attaquant, la sequence d'appels et la variation finale du solde. "Ca a l'air reentrant" n'est pas une soumission ; un test qui vide le coffre, oui.
Engagement en temps
- Immunefi est sans limite. Vous pouvez y consacrer une heure ou bosser une cible des semaines. Pas de chrono, mais pas de paiement garanti pour le temps passe non plus.
- Code4rena : les concours sont des sprints intenses. Une participation serieuse, c'est plusieurs jours concentres dans une fenetre courte, souvent nuits et week-ends, car le pool se ferme pour tout le monde au meme instant.
- Sherlock a une cadence proche de Code4rena, avec la pression supplementaire d'un jugement strict qui sanctionne un rapport bacle et mal justifie.
Si vous avez un emploi a plein temps, les concours forcent une collision de calendrier. Les bounties permettent de travailler en asynchrone.
Quelle plateforme vous convient
Si vous etes debutant
Commencez par les concours, et commencez par Code4rena. Voici pourquoi :
Faites quelques concours, etudiez comment ecrivent les meilleurs, et ne courez apres les bounties en production que lorsque vous savez produire un PoC fonctionnel de facon fiable.
Si vous etes experimente
- Immunefi est ou se trouvent les plus gros paiements uniques, si vous savez trouver un bug unique en production et prouver l'impact de bout en bout. Ca recompense les specialistes qui creusent un seul protocole.
- Sherlock recompense les auditeurs disciplines qui ecrivent des rapports precis, alignes sur les regles, et que les declassements stricts ne derangent pas.
- Code4rena recompense l'amplitude : ceux qui font remonter regulierement des High uniques sur de nombreux concours batissent un solide palmares public.
Beaucoup d'auditeurs professionnels font les trois : les concours pour une reputation publique reguliere et les bounties en production pour le gros coup occasionnel.
Comment demarrer, concretement
Entrainez-vous avant de concourir
Le meilleur predicteur de succes en concours, c'est la reconnaissance de patterns : voir vite une classe de bug connue, dans du code inconnu. C'est une competence qui s'entraine, et c'est moins cher de l'entrainer sur des exercices que de l'apprendre en direct dans un pool de prix.
Sur app.solingo-blockchain.xyz, vous pouvez vous exercer sur les classes exactes de vulnerabilites que les juges paient, auditer des contrats casses a dessein, et vous entrainer a ecrire le genre de findings concrets et centres sur l'impact qui sont acceptes. Construisez le reflexe d'abord, puis emmenez-le dans un vrai concours.