私が検索した(そして見つけた!)スマートコントラクトプロジェクトkickicoのバグ

8月、思いがけないことに、私はKickicoプロジェクトのバグバウンティに参加しました。 先週金曜日にアトラスブロックチェーンラリーでこのことについてすでに話しました。 記事はこのレポートのテキスト版で、追加と小さな金曜日のコンテストがあります :)



Kickico-クラウドファンディングプラットフォーム、暗号通貨でのキックスターター。



私はすでにプロジェクトについて知っていました。 どこか、おそらくチャットで、契約のソースコードが記載されたgithubへのリンクを見つけました。数百万を超えるコードを見るのは興味深いものになりました。



それから、私はまだスマートコントラクトと堅牢性について何も知りませんでした、そしてダウンロードされたコントラクトはそのように更新できないという事実をすぐに知りました、そしてすぐにdividents.lengthに置き換える提案でマジックナンバーが使用されるという考えを作りました。





また、最初の読み取りで、calculateDividends関数が目を引きました。配当計算計画からシリアル番号を割り当てて呼び出したときに、トークン所有者のアカウントに関心が生じることがわかりました。 ただし、発生後のみ次のステージは無効化されず、関数を再度呼び出すと、配当が再び発生します。





最初のレビューの一環としても、承認イベントは発生せず、バグではありませんでした。理解したとおり、何も影響しませんでしたが、とにかく送信しました。







その後、 AntiDanilevskiリンクをishuisに投げて、preicoの乱雑さで迷子にならないようにし、Kickicoについて確認してしばらくの間忘れるという約束を受け取りました。 2週間後、githubから新しいコミットに関する通知を受け取りました。私の詳細はすべて修正されました。 私はAntiを書き、トークンで報酬を受け取りました。



さらに10日後、Antiは私自身に手紙を書き、契約の大きな更新を発表し、さらにバグを探すことを提案しました。 トークンの配当とトークンの凍結を担当するトークン契約の部分は大幅に改訂され、配当を獲得するのに十分な放送時間ができない場合に潜在的な脆弱性が防止されました。



数時間座った後、私はさらに2つのishuisを送りました。 最初のものは、重要ではありますが、すぐに目立ちました。 配当率はホワイトペーパーと一致しませんでした。 どうやら、彼らは変更する予定だったが、それをやり直した。



2番目の問題もまた、配当を再獲得する可能性に関連していましたが、すべての人にではなく、特にこのバグを見つけるespeciallyな人に関連していました。 このバグは要因の組み合わせです:配当をすべてのユーザーに発生させる能力、すべての口座に一度に配当を請求する機能の導入(ガスの制限により)。







これらのバグは同じ日に修正され、別の報酬を受け取りました。



同じ日に、kickicoチームはbankorプロトコルのサポートをコミットし、Antiは再びバグを探すことを提案しました。 すぐに、NewSmartTokenイベントコールが実装されていないことだけを見ましたが、これも重要ではありません。



翌晩、コードを再度見て、発行方法で、配当を発生させるためにトークンが発行されたアドレスをリストに追加するだけでは不十分であることがわかりました。 私はすぐにこれをAntiに報告しましたが、このバグは既にお金を借りた監査人によって報告されていたことがわかりました。



何がうまくいったのでしょうか?





-----ボーナス部分-----



先日、kickicoはトークンの更新バージョンをリリースしました。このバージョンでは、特に、重大な重大なバグが修正されましたが、ICOやサードパーティの監査員には見られませんでした。 これは、多かれ少なかれ複雑な契約を結んでいる場合、バグがないことを誰も保証できないという事実によって確認されます。 この場合、常にプランBが必要です。 これに適したオプションは、アドレスを変更せずにコードを更新するメカニズムです。



さて、実際には競争です。このバグを最初に説明した人は、kickicoプロジェクトから500 KICKを受け取ります。 バグのあるgithubバージョンでは、現在のバージョンのdiffを見るのはスポーツマンらしくない:)スポイラーの下でバグの説明を非表示にしてください。



All Articles