بازبینی کد (Audit) قراردادهای هوشمند؛ گامی بهسوی تکامل
به گزارش اکسران : فناوری بلاک چین و اپلیکیشنهای غیرمتمرکز بر شانههای قرارداد هوشمند (Smart Contract) ایستاده است. این قابلیتهای جدید توانستهاند مسئله اعتماد و واسطهها را از میان بردارند و درهای جدیدی برای انجام کارها با سرعت و ایمنی فراوان به روی کاربران بگشایند. بااینهمه، این موضوع فنی و پیچیده هم مانند سایر فناوریهای نوین این حوزه با مشکلاتی روبهروست. وجود ایرادها و نقیصهها میتواند موجب مشکل در کارکرد بلاک چین یا تراکنشها شود و حتی زمینه را برای حملههای هکرها فراهم کند. بازبینی کد قراردادهای هوشمند میتواند یکی از روشهای کارآمد برای جلوگیری از این مشکلات باشد.
درواقع، امتیاز و ویژگی مهم قراردادهای هوشمند میتواند بهشکلی غیرمنتظره به ضعف آنها نیز تبدیل شود. قراردادهای هوشمند بهطورخودکار وظایفی را انجام میدهند و نیاز به واسطه و ناظر شخص ثالث را از بین میبرند. باوجوداین، اگر این کدهای رمزنگاریشده خود دچار ایراداتی باشند، بهراحتی ممکن است امنیت و شفافیت کل شبکه را بهخطر بیندازند. زیرا پس از پیادهسازی، هیچ شخص ثالثی مسئول صحت عملکرد آنها نیست و تغییر کدهای اجراشده در بلاک چین نیز غیرممکن خواهد بود. بههمیندلیل، بازبینی کد قراردادهای هوشمند اهمیت فراوانی دارد.
در این مطلب، با ذکر انواع آسیبپذیریها و مشکلات احتمالی قراردادهای هوشمند، دید بهتری از دلیل و شیوه انجام بازبینی کد این قراردادهای رمزنگاریشده ارائه میدهیم. همچنین، به نکاتی اشاره میکنیم که در بازبینی کد قراردادهای هوشمند باید مدنظر قرار بگیرند. در پایان نیز، با تعدادی از شرکتهای تأمینکننده امنیت این قراردادها آشنا میشویم و نگاهی به شرایط و هزینههای این فرایند میاندازیم.
بازبینی کد (Audit) قراردادهای هوشمند چیست؟
پیش از اینکه وارد مبحث بازبینی قراردادهای هوشمند آشنا شویم، بهتر است مفهوم قراردادهای هوشمند را بدانیم. بهطورخلاصه، قراردادهای هوشمند پروتکلهای تراکنش کامپیوتری هستند که برای اجرای شرایط قراردادی مشخص طراحی شدهاند. این قراردادهای رمزنگاریشده واسطهها را از میان برمیدارند و با رعایت موبهموی شرایط قراردادها، احتمال بروز تصادف و استثناء را نیز بهحداقل میرسانند.
درحالحاضر، قراردادهای هوشمند به انجام طیف وسیعی از وظایف ازجمله مدیریت زنجیره تأمین و توزیع توکن و رأیگیریهای انتخاباتی کمک میکنند. بااینحال، این کدهای رمزنگاریشده نیز درست مانند هر نرمافزار دیگری با آسیبپذیریهای امنیتی همراه هستند. بنابراین پیش از پیادهسازی قراردادهای هوشمند، باید کد این قراردادها را بهطوراصولی بازبینی کنیم تا مطمئن شویم که دچار مشکلات امنیتی نیستند. علاوهبراین، بازبینی قراردادهای هوشمند میتواند ضامن عملکرد ایدئال و بهینه آنها نیز باشد.
فرایند بازبینی قراردادهای هوشمند بر بررسی دقیق و موشکافانه کدی متمرکز است که تمام شرایط و ضوابط قرارداد هوشمند را دربر میگیرد. با کمک این بازبینی، توسعهدهندگان قراردادهای هوشمند بهراحتی میتوانند آسیبپذیریها و باگها و مشکلات را پیش از پیادهسازی و اجرای قراردادهای هوشمند شناسایی و رفع کنند. برای انجام این منظور، اغلب اوقات نهادهای شخص ثالث وظیفه بازبینی کامل قراردادهای هوشمند را برعهده میگیرند. گفتنی است شرکتها میتوانند حسابرسها و بازبینهایی حرفهای برای بررسی کد قراردادهای هوشمند خود انتخاب و استخدام کنند.
بازبینی کد قرارداد هوشمند پیش از اجرای آن اهمیت زیادی دارد؛ زیرا پس از ثبت قرارداد هوشمند روی بلاک چین، تغییر کد عملاً غیرممکن است. اجرای قراردادهای هوشمند بدون بازبینی مناسب میتواند زمینهساز ایجاد شرایط نامطلوب یا عملکرد ضعیف یا مشکلات امنیتی جدی در اپلیکیشنهای غیرمتمرکز شود. علاوهبراین، بازبینی نامناسب و بیدقت ممکن است خطرهایی ازجمله ازبینرفتن دادههای شخصی یا سرقت داراییها را بههمراه داشته باشد.
چرا بازبینی کد قراردادهای هوشمند مهم است؟
درحالحاضر، امنیت یکی از دغدغههای مهم بههنگام پیادهسازی و اجرای قراردادهای هوشمند بهشمار میرود. ناکارآمدی و مشکلات امنیتی و اجرای ناصحیح این قراردادها میتواند هزینههای سنگین و جبرانناپذیری در شبکه بلاک چین بهبار آورد.
یکی از مسائلی که گهگاه موجب تعلل شرکتها و کسبوکارها در استفاده از قراردادهای هوشمند میشود، ماهیت برگشتناپذیر این قراردادهاست. علاوهبراین، آسیبپذیریهای امنیتی احتمالی همواره میتوانند تهدیدی برای کل قرارداد و داراییهای مربوط به آن محسوب شوند. ازاینرو، بازبینی قرارداد هوشمند یکی از ضروریترین اقداماتی است که باید پیش از اجراییشدن آن انجام شود.
دلایلی ازجمله بهینهسازی بهتر کد، بهبود عملکرد قراردادهای هوشمند، افزایش ایمنی کیف پولها و امنیت دربرابر حملههای هک برخی از عواملی هستند که بازبینی قراردادهای هوشمند را به ضرورت تبدیل میکنند. همچنین، بازبینی قراردادهای هوشمند برای صاحبان محصولات اپلیکیشنهای غیرمتمرکز و سازندگان و سازماندهندگان استارتآپهای عرضه اولیه کوین (ICO)، توسعهدهندگان قراردادهای هوشمند و افرادی مهمتر است که باید اعتماد سرمایهگذاران و سهامداران و مشارکتکنندگان را جلب کنند.
باتوجهبه مزایای حیاتی بسیاری که برای ایمنی قراردادهای هوشمند ذکر کردیم، باید مراحل و شیوههای بازبینی قراردادهای هوشمند را نیز بهخوبی بیابیم و بشناسیم.
بازبینی کد قراردادهای هوشمند چگونه کار میکند؟
بازبینی کد قراردادهای هوشمند شامل ارزیابی دقیق و حسابشده قراردادهای هوشمند و اپلیکیشنهای مبتنیبر بلاک چین میشود. این بازبینی میتواند مشکلات مربوط به طراحی قراردادها و آسیبپذیریهای امنیتی و خطاهای مرتبط با کد را تشخیص دهد. بازبینهای حرفهای قراردادهای هوشمند اغلب نقشه مسیر دقیقی از فرایند بازبینی دراختیار ارائهدهندگان قرارداد هوشمند قرار میدهند تا درک بهتری از فرایند بازبینی داشته باشند.
بااینهمه، تعامل دوطرفه بین بازبین و نهادی که خواستار بازبینی قرارداد هوشمند است، نکته مهمی در مراحل بازبینی بهشمار میرود. بازبینها اغلب ایده مشخصی درباره پروژه یادشده ندارند؛ بنابراین، اولین گام تعریف ویژگیهای مطلوب قرارداد است تا بازبین بتواند براساس آن برنامهای تدوین کند و درنهایت، گزارشی از چگونگی انجام بازبینی ارائه دهد. درادامه، به برخی از اقدامات مهم و مراحل بازبینی قراردادهای هوشمند اشاره میکنیم.
تعریف مشخصات و جزئیات قرارداد هوشمند
اولین و مهمترین عامل در فرایند بازبینی قراردادهای هوشمند، توافق توسعهدهنده قرارداد و بازبین درباره مشخصات و جزئیات قرارداد هوشمند است. این ویژگیها و سایر اسناد مرتبط با قراردادهای هوشمند توضیح روشنی درزمینه معماری و فرایند ساخت و اساس طراحی پروژه ارائه میدهد.
معمولاً مشخصات مستندشده در فایل README پروژه پیدا میشود. باوجوداین، توسعهدهنده نیز باید بهدرستی جزئیات و ویژگیهای آن را مستند و مشخص کند و دراختیار بازبین قرار دهد؛ وگرنه بازبینهای قرارداد هوشمند دیدگاه کاملی درباره عملکرد مطلوب و واقعی کد نخواهند داشت. بنابراین، مرحله اول شیوه بازبینی قرارداد هوشمند با تعریف مشخصات کامل پروژه آغاز میشود.
در این مرحله، بازبین باید بهدنبال زمان نهاییشدن یا بهاصطلاح بستهشدن کد (Code Freeze) نیز باشد. پیش از نهاییشدن کد، قرارداد هوشمند در مرحله پیشنویس نهایی قرار میگیرد و در این زمان، توسعهدهندگان باید تمام تلاشهای ممکن را برای شناسایی هرگونه ناهنجاری یا عوامل نامطلوب در کد انجام داده باشند. بهعبارت سادهتر، تعیین زمان «نهاییشدن کد» بسیار مهم است؛ زیرا هیچگونه تغییری پس از این مرحله نمیتواند بازبینی شود.
فرایند آزمون قرارداد
بازبینها آزمایشهای متعدد و متنوعی انجام میدهند تا کد قرارداد هوشمند را از جوانب مختلف بررسی شوند. این کار برای تشخیص باگها و مشکلات احتمالی انجام میشود و با گزینههای مختلفی ازجمله تستهای هر بخش (Unit Test) برای بررسی جزئیات کوچکتر کد و تستهای یکپارچه (Integration Test) برای بررسی عملکردهای اصلی کد همراه است.
این آزمایشهای کوچکوبزرگ به بازبینها کمک میکند درک بهتری از پروژه و عملکردهای موردانتظار داشته باشند. اگر کد قرارداد هوشمند اکثر آزمایشها را با صحت و سلامت پشتسر بگذارد، احتمال وجودداشتن مشکلات ریشهای کمتر خواهد بود؛ درغیراینصورت، با شکست تعداد زیادی از این تستها، رویکرد منطقی توقف فرایند بازبینی و ایجاد اصلاحاتی اساسی و بنیادین در پایگاه کد خواهد بود.
یکی از عناصر مؤثر بر هزینه انجام بازبینی قراردادهای هوشمند، به میزان پوشش خطوط کد مربوط میشود. بهعبارتدیگر، این مسئله که بازبین خطبهخط کد منبع قرارداد هوشمند را آزمایش و بررسی کند، اهمیت فراوانی دارد. برخی از متخصصان تضمین کیفیت بهدنبال پوشش کامل کد منبع هستند؛ بااینحال، پوشش ۸۵ تا ۹۰درصدی نیز برای بسیاری از پروژهها کافی و مناسب بهنظر میرسد.
همچنین، برخی از این آزمونها شامل ویژگیهایی اضافی و منحصربهفردی هستند که احتمال آسیبپذیریها و مشکلات ناشناخته بیشتری را بررسی میکنند و به کاهش تعداد باگهایی که بهراحتی حذفشدنی هستند، میتوانند کمک کنند.
تحلیل خودکار
پس از اتمام فرایند آزمایش، به مرحله تحلیل بازبینی قرارداد هوشمند میرسیم. اخیراً تقاضا برای کدهای قرارداد هوشمند ایمن افزایش درخورتوجهی یافته است؛ بنابراین، نیاز به نرمافزارهای تشخیص خودکار باگ نیز بهسرعت بیشتر میشود. این ابزارها میتوانند آسیبپذیریهای رایج و عمومی قراردادهای هوشمند مبتنیبر سالیدیتی (Solidity) را پیدا کنند.
همچنین بخوانید: زبان برنامه نویسی سالیدیتی چیست و چگونه میتوانیم قرارداد هوشمند بنویسیم؟
علاوهبراین، ابزارهای تحلیل خودکار میتوانند قراردادها را باتوجهبه ورودیهایی ارزیابی کنند که باعث اجرای هر قسمت از آن میشوند. این ابزارها با بهبود سهولت شناسایی مشکلات کلی در کد منبع به تسهیل روند بازبینی کمک میکنند و به بازبین اجازه میدهند تا تلاش خود را روی آسیبپذیریهای جدید و پیچیده متمرکز کند.
درمجموع، ابزارهای تحلیل خودکار نیاز به بازبینهای انسانی را نیز کمتر و در زمان و هزینه موردنیاز برای بازبینی صرفهجویی میکنند. بااینحال، ابزارهای تحلیل خودکار سالیدیتی درحالحاضر در مراحل اولیه توسعه قرار دارند و بهنظر میرسد دستیابی به کمال مطلوب برای ابزارهای بازبینی قراردادهای هوشمند به زمان بیشتری احتیاج دارد.
علاوهبراین، ازآنجاکه این ابزارها برای تشخیص باگها و مشکلات عمومی طراحی میشوند، آگاهی لازم را از قطعات ویژه کدهای مختلف ندارند و ممکن است بهطورمداوم مشکلات کاذب گزارش کنند. اینجاست که تحلیل دستی برای بررسی ضعفهای شناساییشده وارد میدان میشود.
تحلیل دستی
ابزارهای تحلیل خودکار در بازبینی قراردادهای هوشمند مزایای بسیاری درباره یافتن ضعفهای رایج ارائه میدهند. بااینهمه، برخی نقایص ویژه قراردادهای خاصی هستند و ابزارهای تحلیل خودکار در درک هدف و مقصود توسعهدهندگان، ناتوان و ناکارآمد بهنظر میرسند. بنابراین، تحلیل و بررسی دستی بهوسیله بازبینهای انسانی برای بهبود تشخیص ضعفهای احتمالی کد قرارداد هوشمند اغلب امری ضروری است. تیم بازبینی مجرب میتواند وجوه مختلفی از عملکرد پروژه را ارزیابی کند و براساس مشاهدات خود، توصیههای مطمئنی برای بهبود کد قرارداد به تیم پروژه ارائه کند.
گزارش بازبینی و ارائه مشاوره برای رفع نقایص
آخرین مرحله در بازبینی قرارداد هوشمند تنظیم گزارشی از فرایند و مراحل بازبینی است. بازبین باید پس از تکمیل آزمایشها و تحلیلهای خودکار و دستی، گزارش بازبینی مفصلی از یافتهها و مشاهدههای خود ارائه دهد. مهمتر از همه، تیم بازبینی و تیم پروژه باید درباره یافتهها و نکتههای گزارش بحث و تبادلِنظر کنند.
این بحث میتواند به تیم پروژه کمک کند تا مشکلات و آسیبپذیریهای قرارداد هوشمند مدنظر را درکنار توصیههای تیم بازبینی بهتر درک و برای رفع آنها تلاش کند. گفتنی است بسیاری از ارائهدهندگان خدمات امنیتی ارائه مشاورههای منظم و پیگیری بلندمدت برای رفع کامل مشکلات و مشکلات قرارداد را یکی از مراحل اصلی خدمات خود قلمداد میکنند.
آسیبپذیریهای مهم در قراردادهای هوشمند
تا اینجای مقاله، از اهمیت شناسایی ضعفهای قراردادهای هوشمند و مراحل پیگیری و رفع آنها صحبت کردیم. اکنون، بهتر است با فهرستی کلی و مختصر از برخی از این آسیبپذیریها و حملههای امنیتی و بخشهایی که تحتتأثیر قرار میدهند، بیشتر آشنا شویم:
وابستگی برچسب زمانی
ماینرها میتوانند تأثیر بسزایی بر عملکرد محیط اجرای قراردادهای هوشمند بگذارند. یکی از نقایصی که میتواند این قراردادها را آسیبپذیر کند، وابستگی عملکرد آنها به ارزش برچسب زمانی (Timestamp) یا همان زمان ثبت بلاک در بلاک چین است. در این حالت، ماینر ممکن است بتواند با دستکاری در دادههای مربوط به برچسبهای زمانی، به هدفی ازپیشتعیینشده دست پیدا کند.
خطاهای دسترسی به تابع
امکان مشاهده و فراخوانی قراردادهای هوشمند سالیدیتی بهطورپیشفرض «عمومی» هستند؛ یعنی هر فردی امکان دسترسی و فراخوانی قرارداد را دارد و این مسئله احتمال سوءاستفاده از کد را افزایش میدهد. درصورتیکه توسعهدهنده فراموش کند قابلیت مشاهده و دسترسی به تابعی را بهطور «خصوصی» تعریف کند، ضعف امنیتی میتواند کل قرارداد را تهدید کند.
حمله ورود مجدد
یکی از حملههای مخرب در قراردادهای هوشمند سالیدیتی، حمله ورود مجدد (Reentrancy Attack) است. در این حمله، هکر بهصورت مکرر بین قرارداد هوشمند مدنظر و قرارداد هوشمند نامطمئن دیگر تماس برقرار میکند. بدینترتیب، میتواند پیش از اینکه قرارداد هدف فرصت بهروزرسانی دادهها و موجودی خود را داشته باشد، دادهها و داراییهای آن را بدزدد.
حمله آدرس کوتاه
در این حمله، قرارداد دادههایی کمتر از میزان موردنیاز دریافت و زبان برنامهنویسی سالیدیتی جای دادههای خالی را با «صفر» پر میکند. صفرهای اضافی در دادهها میتواند موجب بروز مشکلات جدی شود.
حملههای ورودی زیاد و ورودی کم
حمله ورودی زیاد (Overflow Attack) ناشی از ارائه ارزشی مازاد بر ارزش حداکثری قرارداد و حمله ورودی کم (Underflow Attack) ناشی از ارائه ارزشی کمتر از میزان حداقلی به قرارداد است. در هر دو حالت، هکر میتواند با سوءاستفاده از پاسخ اشتباه قرارداد به ورودیهای نامتعارف، به داراییهای قرارداد دسترسی پیدا کند.
حمله تکرار
حمله تکرار (Replay Attack) با سوءاستفاده از تکرار یا تعلل در انتقال دادههای بهظاهر صحیح انجام میشود.
آسیبپذیری اعداد تصادفی
یکی از عوامل تأمینکننده امنیت قراردادهای هوشمند تصادفیبودن اعداد مربوط به کدهای رمزنگاریشده و کنترل دسترسی است. درصورتیکه کد قرارداد دچار باگ باشد، مهاجم میتواند عدد تصادفی را بهدرستی حدس بزند و به دادههای حساس قرارداد دسترسی پیدا کند.
شکست در تمایز انسانها و قراردادها
تشخیصندادن اینکه فراخوان قرارداد هوشمند ازسوی شخص است یا قرارداد، میتواند عواقبی پیشبینینشدنی بهدنبال داشته باشد. بهعنوان مثال، باگ امکان پیشبینی متغیرهای تصادفی و دستکاری در آنها را انسان در بازی غیرمتمرکز پلتفرم فوموتریدی (Fomo۳d) شناسایی کرده است که به هکر اجازه میدهد داراییهای استخر ایردراپ را بهسرقت ببرد.
حمله سفارشگذاری مجدد
حمله سفارشگذاری مجدد (Reordering Attack) ازطریق دستکاری ترتیب تراکنشها و ایجاد اختلال در عملکرد قرارداد هوشمند انجام میشود.
اشتباهات املایی
درصورتیکه اشتباهات املایی توسعهدهنده قرارداد حین برنامهنویسی بررسی نشوند، ممکن است به تغییر چشمگیر عملکرد و اجازه دسترسی مهاجم به تابع قرارداد منجر شوند.
رویکردهای بازبینی کد در قراردادهای هوشمند
تاکنون، مراحل بازبینی قراردادهای هوشمند و ضعفهای احتمالی این کدهای رمزنگاریشده را باهم مرور کردیم. حالا میتوانیم درکی بهتر از عناصری بهدست آوریم که بازبینهای قراردادهای هوشمند در این فرایند بررسی در نظر میگیرند. بهطورکلی، دو عنصر مهمی که روشهای بازبینی کد را برای بازبینها تعریف میکند، آسیبپذیریهای امنیتی و بهرهوری کارمزد (گس) قراردادهاست.
بهرهوری در کارمزدها
بازبینی قراردادهای هوشمند، تنها بهمنظور تضمین امنیت این قراردادها انجام نمیشود؛ چراکه بهرهوری و بهینهسازی نیز ملاحظات مهمی برای بازبینها بهشمار میروند. برخی قراردادها برای تحقق هدف خود باید فهرستی طولانی از تراکنشها را بهسرانجام برسانند. اینجاست که اهمیت بهکارگیری قراردادهای کارآمد ازنظر صرفهجویی در هزینه کارمزدها برجسته میشود.
افزونبراین، تلاش برای اجتناب از عملکردهای ناکارآمد و غیرضروری میتواند تعداد ضعفها را کاهش دهد. درمجموع، بهینهسازی عملکرد قراردادها بهطورمستقیم به توانایی و تخصص توسعهدهندگان در این زمینه بستگی دارد و ارزیابی آن برعهده بازبین کد قرارداد است.
آسیبپذیری قرارداد
بخش زیادی از اقدامات بازبینها روی جستوجوی نقصهای امنیتی در قراردادها متمرکز است. البته باید اشاره کنیم که حتی وقتی برخی مشکلات کاملاً آشکار هستند، هکرها باید از رویکردها و برنامههای پیچیدهای برای حملههای خود استفاده کنند. بهعنوان مثال، حملههایی که مربوط به وامهای فوری میشود حاصل فرایند پیچیدهای از دستکاری در بازار و سوءاستفاده از نقایص امنیتی قراردادهای هوشمند است.
بنابراین، بازبینها بررسی مشکلات امنیتی را با شبیهسازی حملههای مخرب به قراردادهای هوشمند شروع میکنند. مشکلاتی ازجمله حمله ورود مجدد و حملههای ورودی کم یا ورودی زیاد و فرصتهای فرانترانینگ (Front Running) که با سوءاستفاده از کدهای ضعیف برای دستکاری بازار اتفاق میافتند، برخی از مشکلاتی هستند که بازبینها در بررسیهای خود زیر ذرهبین قرار میدهند.
شرکتهای ارائهدهنده بازبینی کد قراردادهای هوشمند
بهدلیل اهمیت بازبینی قراردادهای هوشمند، بهتر است این فرایند بهدست متخصصان حرفهای در این حوزه انجام گیرد. درحالحاضر، شرکتهای بسیاری کار بررسی و تشخیص مسائل امنیتی کدهای قراردادهای هوشمند را برعهده میگیرند. در این بخش، تعدادی از برترین شرکتهای ارائهدهنده خدمات بازبینی کد قراردادهای هوشمند را معرفی میکنیم.
هکن (Hacken)
هکن شرکتی با خدمات گسترده امنیتی در حوزههای مختلف بلاک چین و ارزهای دیجیتال است که با بهکارگیری فناوریهای نوینی مانند هوش مصنوعی درزمینه تأمین امنیت دیجیتال به شهرت فراوانی دست یافته است.
این شرکت مدعی است که با بازبینی دقیق خود باعث کاهش هزینههای مالی و صرفهجویی در زمان برای تیمهای توسعهدهنده میشود و به کسبوکارها اجازه میدهد با اطمینان بیشتری قراردادهای هوشمند خود را پیادهسازی کنند. علاوهبراین، هکن بهرهوری و بازده «دهبرابری» قراردادها پس از بازبینی را نیز تضمین میکند.
کوانتاستمپ (Quantstamp)
تیم بازبین کوانتاستمپ از افراد متخصص با سابقه آکادمیک تشکیل شده است که میتوانند کار بازبینی کد نرمافزارها و اپلیکیشنهای مختلف با زبانهای برنامهنویسی متفاوت را برعهده بگیرند. این اپلیکیشنها شامل طیف گستردهای از حوزهها ازجمله فضای دیفای و توکنهای غیرمثلی تا کیف پولها و کلاینتهای بلاک چین میشوند. علاوهبراین، کوانتاستمپ در بررسی قراردادهای هوشمندی که روی اتریوم ۲.۰ سوار میشوند، نیز تبحر دارد.
کوانتاستمپ پس از بازبینی کد و تشخیص ضعفها، به تیم توسعهدهنده کمک میکند تا مشکلات پروژه را رفع کند. گفتنی است این شرکت در نوآوری منحصربهفرد خود، شبکهای غیرمتمرکز برای بازبینی قراردادهای هوشمند ایجاد کرده است که به کاربران اجازه میدهد بررسی امنیتی خودکار قراردادهای هوشمند را بهکمک «شبکهای جهانی از نودهای امنیتی غیرمتمرکز» انجام دهند.
تریلآفبیتس (Trail of Bits)
تریلآفبیتس از شبکهای از توسعهدهندگان خبره در شناسایی و رفع باگهای نرمافزارها و کدهای رمزنگاریشده بهره میبرد و در سالهای اخیر، ابزارهای امنیتی قدرتمندی برای بررسی قراردادهای هوشمند توسعه داده است.
برخی از خدمات تأمین امنیت شرکت تریلآفبیتس شامل ارائه مشاوره به تیم پروژه و استفاده از ابزارهایی ویژه و سفارشی برای شناسایی مشکلات کد درکنار پیگیری و حمایت بلندمدت پس از پایان فرایند بازبینی میشوند.
اوپنزپلین (OpenZeppelin)
در واقع، اوپنزپلین یکی از اولین تیمهایی بود که با معرفی عناصر گیمیفیکیشن (بازیسازی) برای شناسایی باگهای موجود در قراردادهای هوشمند، گام مهمی برای تأمین امنیت بلاک چین برداشت. اوپنزپلین نقشه مسیر کاملاً مشخصی دراختیار تیم پروژه قرار میدهد و درپایان، گزارشی کامل و خصوصی همراه با توصیههایی کاربردی و اجراشدنی به سازندگان قرارداد هوشمند ارائه میکند.
همچنین، این تیم تأمین امنیت به مشتریان خود کمک میکند کدهای رمزنگاریشده با هر نوع پروتکل و زبان برنامهنویسی را بررسی کنند.
کانسنسس دیلیجنس (ConsenSys Diligence)
شرکت آمریکایی کانسنسس یکی از شرکتهای بزرگی است که منابع و متخصصان خود را درزمینه توسعه اپلیکیشنها و نرمافزارهای بلاک چین اتریوم، بهویژه نرمافزارهای مالی بهکار میگیرد. محصول میتکس (MythX) این شرکت یکی از ابزارهای کارآمد برای بررسی قراردادهای هوشمند اتریوم بهشمار میرود.
این راهحل API قدرتمندی نیز ارائه میدهد که توسعهدهندگان میتوانند برای دسترسی به ابزارهای تحلیل امنیت از آن استفاده کنند. علاوهبر بهرهمندی از متخصصان این حوزه، شرکت کانسنسس از افزونهها و ابزارهای امنیتی متنباز برای تأمین امنیت اپلیکیشنها استفاده میکند و با ادغام این ابزارها در محیط توسعه پروژهها، میکوشد فرایند بررسی کد مشتریان خود را بهطورمداوم و بلندمدت انجام دهد.
سرتیک (Certik)
براساس وبسایت رسمی سرتیک، این شرکت امنیتی بیش از ۱۸۸,۰۰۰ خط کد را بازبینی کرده است و تأمین ایمنی بیش از ۶.۳۲میلیارد دلار دارایی را در کارنامه خود دارد. همچنین بهگزارش این وبسایت، «رویکرد ریاضی» سرتیک با بازبینی قراردادهای هوشمند بهواسطه محصولات نوآورانهای در این حوزه همراه شده است.
برخی از این محصولات همچون آنتیویروس بلاک چین اسکاینت پریمیوم (Skynet Premium) درکنار راهاندازی بلاک چین عمومی سرتیک چِین (Certik Chain) که همسو با اهداف تأمین امنیت این پلتفرم فعالیت میکند، سرتیک را بین شرکتهای امنیتی برجسته در این حوزه قرار داده است.
لیستآتاریتی (LeastAuthority)
لیستآتاریتی شرکت مشاوره امنیت سایبری با تمرکز بر حفظ حریم خصوصی است. اگرچه محصولات مهم این شرکت در وهله اول با هدف تضمین ایمنی منابع ذخیرهسازی غیرمتمرکز توسعه داده میشوند، لیستآتاریتی کار بازبینی پروژههای مختلفی را در بلاک چین اتریوم و تزوس و سایر پلتفرمها نیز برعهده گرفته است.
برای این منظور، لیستآتاریتی در طول مراحل مختلف چرخه توسعه اپلیکیشنها با توسعهدهندگان همکاری میکند تا از امنیت پروژهها در هر گام از ایجاد قراردادهای هوشمند اطمینان حاصل شود.
پیدبلیوسی (PWC)
این شرکت خدمات امنیتی حاصل ادغام پیدبلیوسی سوئیس و چینسکیوریتی (Chainsecurity) است که درزمینه تأمین امنیت پروژههای بلاک چینی و وب ۳.۰ فعالیت میکند و به منابع گسترده شرکت پیدبلیوسی دسترسی دارد. پیدبلیوسی با ارائه مشاوره و سرویسهای مختلف به پروژههای بلاک چینی، تمام مراحل توسعه پروژهها را از ابتدای کار تا مرحله پس از پیادهسازی زیرپوشش قرار میدهد.
این پلتفرم با معیارهای مهمی عملکرد قراردادهای هوشمند را ازطریق ابزارهای خودکار نوآورانه و متخصصان امنیتی آزمایش و بررسی و سپس با شناسایی تهدیدهای بالقوه، برای رفع آنها تلاش میکند.
اسلومیست (Slowmist)
اسلومیست را میتوان پیشروترین شرکت امنیت بلاک چین دانست که درزمینه بازبینی قراردادهای هوشمند نیز سابقه درخشانی دارد.
بهگزارش وبسایت رسمی اسلومیست، این پلتفرم بیش از ۱,۵۰۰ قرارداد هوشمند برجسته در بلاک چین اتریوم و سایر بلاک چینهای مبتنیبر ماشین مجازی اتریوم (EVM) ازجمله ایاس، فَبریک، سولانا، ویچِین و آنت را بازبینی کرده است.
همچنین، اسلومیست از محصولات قدرتمندی ازجمله فایروال قراردادهای هوشمند ایاس برای رهگیری مشکلات احتمالی این قراردادها بهره میبرد. بد نیست بدانید وبسایت رسمی اسلومیست در صفحه اول خود طبقهبندی جالبی از انواع مختلف بازبینی برای پلتفرمهای متفاوت به کاربران ارائه میکند که میتواند نمایی کلی از شرایط بازبینی کد را به جویندگان این خدمات نشان دهد.
رانتایم وریفیکیشن (Runtime Verification)
رانتایم وریفیکیشن شرکت تحقیقوتوسعه با تمرکز بر اعتبارسنجی رسمی است. این شرکت دو محصول اصلی برای تأمین امنیت قراردادهای هوشمند توسعه داده است که از یک سو بازبینی عملکرد قراردادهای هوشمند پلتفرم کاردانو را هدف قرار میدهد و از سوی دیگر ابزار تحلیلی نهایی برای ارزیابی قراردادهای هوشمند اتریوم بهشمار میرود.
شرکت مذکور اکثر زبانهای برنامهنویسی را زیر پوشش قرار میدهد و مجموعه کاملی از خدمات را دراختیار پروژهها میگذارد.
هزینه بازبینی کد قراردادهای هوشمند چقدر است؟
عوامل متعددی بر هزینه بازبینی کد قراردادهای هوشمند تأثیرگذار است. برخی از عوامل مهمی که در تخمین هزینه بازبینی کد در نظر گرفته میشوند، عبارتاند از: پیچیدگی کد، حجم کد و تعداد خطوط، شرایط ویژه توافقشده درباره قرارداد، میزان شهرت و کیفیت عملکرد بازبینها و تعداد ساعات کاریای که مهندسان و نیروی انسانی شرکت بازبین صرف بررسی کد میکنند. علاوهبراین، پلتفرمی که قرارداد هوشمند روی آن سوار شده است و ابزاری که برای بررسی کد استفاده میشود، در هزینه پایانی، نقش کاملاً تعیینکنندهای ایفا خواهند کرد.
درهرصورت، تنظیم و بازبینی قرارداد کار چندان ارزانی نیست. در منابع مختلف، ارقام متفاوتی درباره هزینه بازبینی کد قراردادهای هوشمند ذکر شده است. بهطورکلی، این فرایند ممکن است بین ۵,۰۰۰ تا ۵۰۰,۰۰۰ دلار خرج روی دست کسبوکارها بگذارد. دراینمیان، همیشه موارد استثناء وجود دارند و هزینه بررسی برخی کدها گاهی به نیممیلیون دلار هم میرسد! این نکته را هم نباید فراموش کنیم که برخی از برترین شرکتهای بازبینی ازجمله نمونههایی که در این مقاله نام برده شد، در اغلب مواقع رزروشده هستند و کار با آنها بسیار گران تمام میشود.
جمعبندی
درپایان این مطلب، احتمالاً با میزان اهمیت بازبینی کد قراردادهای هوشمند آشنا شدهاید. اکنون درمجموع، میدانید چه خطرها و حملههایی ممکن است قراردادهای هوشمند بازبینینشده را تهدید کند. همچنین، نمایی کلی از مراحل و فرایند بازبینی کد در ذهن دارید و تعدادی از برترین شرکتهای تأمین امنیت قراردادهای هوشمند را میشناسید.
بیشک بازبینی قراردادهای هوشمند میتواند رویکردی مناسب برای بهبود عملکرد و بهرهوری قراردادهای هوشمند باشد و اعتماد شرکتها و کسبوکارهای بیشتری را برای استفاده از این کدهای رمزنگاریشده جلب کند. بااینهمه، هنوز مشکلاتی ازجمله زمان موردنیاز و کیفیت و هزینه بازبینی بر سر راه بازبینی کد این قراردادها دیده میشود. علاوهبراین، مسئله نوظهوربودن این حوزه و حملههای احتمالی جدید و ناشناخته آن را نباید نادیده گرفت.
بهنظر میرسد رفع موانع و افزایش بهرهوری این فرایند بیش از همه به تعامل پایدار و مداوم و قدرتمند توسعهدهندگان و بازبینها مربوط باشد. مسائلی ازجمله توافق بر سر شرایط بازبینی پروژه و توضیح و تعریف اهداف آن و همکاری تیم بازبین با تیم توسعهدهنده بهمنظور رفع باگها و مشکلات میتواند کیفیت کار هر دو گروه را بهبود ببخشد و درنهایت، به افزایش پذیرش قراردادهای هوشمند و اپلیکیشنهای غیرمتمرکز کمک کند.