近日、あるセキュリティ会社が特定のデジタルコレクション契約に2つの深刻な脆弱性を発見し、業界の広範な関心を引きました。この2つの脆弱性は、それぞれユーザーの資産がロックされることとプロジェクトの資金が引き出せなくなるという深刻な結果をもたらす可能性があります。
最初の脆弱性は、払い戻し関数に存在します。この関数は、全てのユーザーに対して払い戻しを行うためにループ方式を使用していますが、もし払い戻しの対象が悪意のあるコントラクトであれば、受け入れを拒否され、取引が失敗する可能性があり、それが全てのユーザーの払い戻しプロセスに影響を与えます。幸いなことに、この脆弱性は現在利用されていません。
このような状況に関して、業界の専門家はプロジェクトが返金メカニズムを設計する際に以下の点を考慮することを提案しています:参加者を一般ユーザーアカウントのみに制限すること、ネイティブ資産ではなくステーブルコインを使用すること、バルク返金ではなくユーザーが自ら返金を受け取る機能を設計することなど。
第二の脆弱性は、コード内の比較ロジックの誤りによって引き起こされています。プロジェクト資金を引き出す関数には、条件判断文が存在し、そうすべきでした。