با توسعه اتریوم و بر سر کار آمدن قراردادهای هوشمند فرصت بسیار خوبی برای ایجاد برنامههای غیرمتمرکز ایجاد شد. قراردادهای هوشمند این اجازه را به برنامه نویسان دادند تا بدون این که یک بلاکچین اختصاصی داشته باشند اپلیکیشنهای غیرمتمرکز راه اندازی کنند. در حال حاضر سرمایهگذاری در برنامههای مبتنی بر قراردادهای هوشمند یکی از گزینههای اصلی سرمایهگذاران در کریپتوکارنسی است. قراردادهای هوشمند از یکسری کد تشکیل شدهاند که وقتی به اجرا در میآیند هیچکس حتی خود سازنده نمیتواند آنها را متوقف کند. برای ایجاد این قراردادها از زبان برنامه نویسی سالیدیتی استفاده میشود. این زبان برنامهنویسی به توسعه دهندگان فرصت ساخت گستره بزرگی از برنامههای غیرمتمرکز را میدهد. با این حال خطری که همیشه قراردادهای هوشمند را تهدید میکند مشکلات امنیتی است. اگر برنامهنویسان به اشتباه یک حفره برای نفوذ باقی بگذارند ممکن است بعدا توسط هکرها مورد حمله قرار بگیرند. برای پیشگیری از این موضوع قراردادهای هوشمند مورد حسابرسی امنیتی قرار میگیرند که ما در این مقاله قرار است به طور مفصل درباره آن صحبت خواهیم کرد.
حسابرسی قرارداد هوشمند چیست؟
برای بررسی امنیتی قراردادهای هوشمند لایبرریها، فریمورکها و نکات امنیتی مختلفی وجود دارد اما حتی استفاده از این ابزارها هم نمیتواند جلوی اشتباهات و خطاهای احتمالی را بگیرد. از آنجایی که سرمایههای زیادی در یک قرارداد هوشمند وجود دارد هم برای توسعه دهنده و هم برای سرمایهگذار امنیت قرارداد اهمیت ویژهای دارد به همین دلیل از حسابرسی امنیتی قرارداد هوشمند استفاده میشود.
حسابرسی امنیتی قرارداد هوشمند ضمانت کننده امنیت یک قرارداد هوشمند است. توسعه دهندگان برای انجام این حسابرسی سراغ پلتفرمها و تیمهای حسابرسی معتبر میروند. قراردادهای هوشمندی که تاکنون مورد حسابرسی امنیتی قرار گرفتهاند مقاومت خوبی در مقابل حملات هکری از خود نشان دادهاند. هم اکنون در دنیا پلتفرمها و تیمهای حسابرسی معتبری وجود دارند که برای ارتقای امنیت و کاربرد بلاکچین به کمک توسعه دهندگان رفته و باعث بالا رفتن اعتبار یک قرارداد هوشمند میشوند.
وقتی تیم حسابرسی، قرارداد هوشمند را از نظر امنیتی مورد بررسی قرار داد توسعه دهندگان طبق گزارش دریافت شده برای رفع مشکلات امنیتی تلاش میکنند و بعد از برطرف کردن مشکلات باز هم پروژه توسط تیم حسابرسی یا پلتفرم بررسی میشود. اگر مشکلات به طور کامل برطرف شده بودند گزارش جدیدی برای تایید امنیت پروژه منتشر خواهد شد.
یک نکته درباره قراردادهای هوشمند این است که این قراردادها کاملا متنباز هستند و هرکسی که دانش کافی درباره سالیدیتی داشته باشد میتواند آنها را مورد بررسی قرار دهد. این ویژگی باعث میشود خود سرمایهگذاران نیز بتوانند امنیت قراردادهای هوشمند را بررسی یا حتی یک تیم برای بررسی آن استخدام کنند.
چرا به حسابرسی قرارداد هوشمند نیاز داریم؟
اگر بخواهیم علل استفاده از حسابرسی هوشمند را بررسی کنیم به دلایل مختلفی بر میخوریم. وقتی DAO هک شد هکرها توانستند 60 میلیون دلار اتریوم از شبکه خارج کنند. این هک حتی نهایتا به هاردفورک اتریوم منجر شد. این حمله به کسانی که در بلاکچین فعال هستند به خوبی ثابت کرد که حسابرسی قرارداد هوشمند تا چه اندازه اهمیت دارد. انجام حسابرسی قرارداد هوشند با توجه به دلایل زیر یک نیاز ضروری است:
مهم ترین دلیلی که نشان میدهد پیش از راهاندازی قرارداد هوشمند، حسابرسی آن ضروری است توقفناپذیر بودن این قرارداد بعد از اجرا شدن است.
از آنجایی که سرمایه زیادی داخل قراردادهای هوشمند جمع میشود حتما باید پیش از راهاندازی حسابرسی امنیتی شوند.
حسابرسی امنیتی علاوه بر رفع مشکلات امنیتی باعث بهینهتر شدن کدهای یک قرارداد هوشمند میشود. حسابرسی این فرصت را به توسعه دهندگان میدهد که مشکلات کدنویسی قرارداد هوشمند خود را برطرف و آن را از همه جهات بهینه کنند.
یکی از ویژگیهای ذاتی بلاکچین برگشت ناپذیر بودن تراکنشهاست. به همین دلیل راه قطعی برای پس گرفتن وجوه هک شده وجود ندارد. این موضوع اهمیت حسابرسی امنیتی قرارداد هوشمند را دو چندان میکند.
ممیزی قرارداد هوشمند چگونه کار میکند؟
انجام ممیزی قرارداد هوشمند یک استاندارد خاص دارد که ارائه دهندگان حسابرسی طبق این استاندارد ممیزی را انجام میدهند. فرایند معمولی حسابرسی امنیتی قرارداد هوشمند را در زیر مرحله به مرحله توضیح میدهیم:
تعیین محدوده حسابرسی: فرایند ممیزی با تعیین محدوده حسابرسی و تعیین مشخصات پروژه توسط گروه توسعه دهنده آغاز میشود. این مشخصات به ترک شدن پروژه توسط تیم حسابرسی پیش از انجام ممیزی کمک میکند.
بررسی اولیه توسط تیم حسابرسی: بعد از این که تیم حسابرسی، بررسیهای مورد نظر را انجام داد یک گزارش اولیه درباره قرارداد هوشمند ارسالی ارائه میدهد.
ایجاد اصلاحات توسط تیم توسعه دهنده: براساس گزارشی که به توسعه دهندگان ارائه شده آنها شروع به ایجاد تغییرات و اصلاحات در کدها خواهند کرد.
بررسی دوباره و ارائه گزارش نهایی توسط تیم حسابرسی: نهایتا تیم حسابرسی با یک بررسی دوباره از نبود نقاط آسیبپذیر اطمینان حاصل کرده و بعد از آن، گزارش نهایی خود را ارائه میدهد.
روشهای حسابرسی قرارداد هوشمند کدامند؟
روشهای مختلفی برای انجام حسابرسی قرارداد هوشمند وجود دارد. این که یک قرارداد هوشمند به چه روشی حسابرسی شود به نظر تیم توسعه دهنده و تیم حسابرسی بستگی دارد. این روشها عبارت هستند از بهرهوری گس، نقصهای امنیتی پلتفرم و آسیبپذیریهای قرارداد که در ادامه به شرح کامل هرکدام از آنها خواهیم پرداخت:
- بازدهی گس:
برای این که این گزینه را بهتر درک کنید ابتدا باید توضیحی درباره موضوع گس فی در اتریوم بدهیم. بالا بودن هزینه تراکنشهای اتریوم باعث استخراج بیشتر این ارز برای انجام تراکنشها میشود. این موضوع مورد انتقاد نهادهای حفاظت از محیط زیست است چرا که استخراج اتریوم از طریق افزایش مصرف برق بر محیط زیست تاثیر منفی میگذارد. از طرفی هزینههای تراکنش بر توسعه دهندگان قرارداد هوشمند نیز تاثیرگذار است. این مورد هم برای سرمایهگذاران مهم است و هم باعث کاهش هزینههای تیم توسعه دهنده میشود.
با در نظر گرفتن این توضیحات درباره GAS اتریوم حال به سراغ توضیح درباره روش بازدهی گس میرویم. حسابرسی هوشمند تنها بر امنیت بلاکچین متمرکز نیست و در روش بازدهی گس تلاش بر این است تا با بررسی کدها هزینه تراکنشهای پیچیده قرارداد هوشمند کاهش پیدا کند. این تراکنشها برای داشتن عملکرد مورد نظر لازمالاجرا هستند. بهینهسازی کدها در این زمینه به از دست نرفتن مقدار زیادی سرمایه منجر شود.
بهینهسازی کارایی همچنین نشانگر تواناییهای توسعه دهندگان است. اگر در یک قرارداد هوشمند قدمهای اشتباه برداشته شود احتمال شکست بالا میرود. به همین دلیل بهتر است پروژه تا انجام اصلاحات راهاندازی نشود. وقتی هزینههای گس بالا هستند قراردادهای هوشمند ممکن است قادر به اجرا نباشند.
- نقصهای امنیتی پلتفرم:
بیشتر حسابرسیها مربوط به بحثهای امنیتی هستند. این حسابرسیها حتی شامل API که برای تعامل با برنامه غیرمتمرکز استفاده میشود نیز هستند. وقتی یک پروژه از نظر امنیتی ضعیف باشد ممکن است تحت حمله DDoS قرار بگیرد. اگر رابط کاربری وبسایت از نظر امنیتی متزلزل باشد کاربران کیف پول خود را به یک شبکه غیر ایمن متصل میکنند و احتمال از دست رفتن سرمایه آنها وجود دارد.
- آسیبپذیریهای قرارداد هوشمند:
تنها راهی که میتوان سپرده سرمایهگذاران را از یک قرارداد هوشمند خارج کرد هک آن قرارداد نیست بلکه راههای دیگری هم برای این کار استفاده میشود. تکنیکها و استراتژیهای مختلفی برای این کار وجود دارد که در صورت آسیب پذیر بودن قرارداد هوشمند توسط افراد سودجو پیادهسازی میشوند.
یکی از این راهها دستکاری بازار است که با استفاده از برخی قراردادهای هوشمند آسیبپذیر انجام میشود. تیم حسابرسی برای این که این ضعفها را پیدا کند و به تیم توسعه دهنده گزارش دهد این حملات مخرب را شبیهسازی میکند. معمولا متداول ترین آسیبپذیریها موارد زیر هستند:
- مسائل مربوط به ورود مجدد:
یکی از مخربترین حملات برای قراردادهای هوشمندی که با زبان برنامه نویسی سالیدیتی نوشته شدهاند حمله موسوم به reentrancy attack است. در این نوع حمله یک قرارداد با یک قرارداد غیرقابل اعتماد دیگر تماس خارجی برقرار میکند و اگر آن قرارداد خارجی مخرب باشد با یک فراخوان بازگشتی تلاش میکند وجوه داخل قرارداد هوشمند را تخلیه کند. حمله هکری معروف به DAO که پیشتر درباره آن صحبت کردیم با استفاده از همین روش صورت گرفت و باعث ضرری 60 میلیون دلاری شد.
- جریانهای اعداد صحیح:
اصطلاحات overflows و underflows مربوط به برنامه نویسی هستند که در قراردادهای هوشمند نیز به کار میروند. وقتی یک قرارداد هوشمند شروع به انجام محاسبات ریاضی میکند، گاهی خروجی آن از ظرفیت ذخیرهسازی بیشتر میشود. این موضوع باعث انجام محاسبات غلط توسط قرارداد هوشمند خواهد شد. برای پیشگیری از این اتفاق تیم حسابرسی کدها را مورد بررسی قرار داده و در صورت وجود ایراد به تیم توسعه دهنده گزارش میدهد.
- فرصتهای در حال اجرا:
اگر کدها دارای ساختار اشتباه باشند ممکن است سیگنالهایی درباره بازار یا خرید و فروشها ارائه کنند که همین اطلاعات زمینه سوءاستفاده هکرها را فراهم خواهد کرد. به همین دلیل بررسی و حسابرسی این کدها نیز دارای اهمیت است.
گزارش حسابرسی چیست؟
به گزارشی که بعد از انجام فرآیند حسابرسی توسط تیم حسابرسی یا پلتفرم به توسعه دهندگان ارائه میشود، گزارش حسابرسی میگویند. از آنجایی که موضوع شفافیت در بلاکچین اهمیت زیادی دارد انتظار کلی بر این است که توسعه دهندگان این گزارشها را با جامعه ارز دیجیتال اشتراکگذاری کنند.
در گزارشها میزان و شدت خطاها با رده بندیهای مثل بحرانی، عمده، جزئی و... تقسیمبندی میشود. پیش از منتشر شدن گزارش نهایی به توسعه دهندگان فرصتی برای حل مشکلات داده میشود. در گزارش اولیه علاوه بر ذکر شدن اشکالات کدها به تفکیک مکان، توصیهها و نمونههایی از کدهای اضافی نیز وجود دارد که مورد استفاده توسعه دهندگان قرار میگیرد. بعد از این که تیم توسعه دهنده گزارش را بررسی و خطاها را برطرف کرد تیم حسابرسی دوباره پروژه را بررسی و گزارش نهایی را منتشر میکند.
از کجا میتوان حسابرسی قرارداد هوشمند دریافت کرد؟
شرکتها و پلتفرمهای کاربردی مختلفی برای حسابرسی قرارداد هوشمند وجود دارند. این ارائه دهندگان خدمات در سراسر دنیا وجود دارند و بین آنها مواردی که آمار بهتری داشتند بیش از بقیه مورد توجه قرار گرفتهاند. در ادامه قرار است به بررسی بهترین کمپانیها و پلتفرمهای حسابرسی امنیتی قرارداد هوشمند بپردازیم:
1_ Hacken
نخستین شرکتی که در لیست بازبینی قرارداد هوشمند ما قرار دارد شرکت Hacken است. این شرکت سابقه خوبی در بازبینی و حسابرسی قراردادهای هوشمند دارد. در حسابرسیهای این شرکت کدهای سیستماتیک و ساختاری مورد بررسی قرار میگیرند و با شبیهسازیهای مختلف راههای نفوذ برای حملات DDoS را پیدا میکنند. این شرکت دانش عمیقی در زمینه قراردادهای هوشمند و بلاکچین دارد و اولویت آن اعتماد کاربران و مقاوم بودن پروژه به هرگونه حملات هکری است.
2_ Kudelski
یکی دیگر از شرکتهای معتبر در زمینه حسابرسی قرارداد هوشمند شرکت کودلسکی سکیوریتی است که دفاتری در آمریکا و اروپا دارد. این شرکت سعی میکند کسب و کارهای نوآورانه را با کمک به مقابله با تهدیدهای سایبری حمایت کند. هم سازمانهای دولتی مختلف اروپایی و هم شرکتهای فهرست Fortune 500 با این شرکت همکاریهایی دارند. علاوه بر این خدمات، شرکت کودلسکی به شرکتهایی که میخواهند زیرساخت خود را به بلاکچین منتقل کنند نیز آموزشهای امنیتی میدهد.
3_ Certik
یکی از بهترین پلتفرمهایی که برای حسابرسی امنیتی به وجود آمده سرتیک است. این پلتفرم علاوه بر بررسی قراردادهای هوشمند مبتنی بر اتریوم، پروژههای مبتنی بر شبکههای دیگر را نیز بررسی میکند. هنگام مراجعه به سایت این پلتفرم در مقابل شما لیستی از صدها پروژه ممیزی شده قرار میگیرد که قادر به بررسی و مقایسه آنها خواهید بود. به این پروژهها بر اساس سطح امنیت و بهرهوری آنها امتیازاتی داده شده است. این پلتفرم تاکنون موفق به حفظ امنیت بیش از 300 میلیارد دلار از داراییهای کاربران با حسابرسی امنیتی پروژههای بلاکچین شده است. این 300 میلیارد دلار در پروژههای بیش از 1800 شرکت قرار دارند که توسط سرتیک مورد بررسی قرار گرفتهاند. یکی از ویژگیهای جالب سرتیک استفاده از ابزارهای هوش مصنوعی در دیفای برای حسابرسی امنیتی است.
4_ ConsenSys
کانسنسیس یکی از بهترین شرکتهای بررسی قرارداد هوشمند مبتنی بر اتریوم است. این شرکت تاکنون 100 قرارداد هوشمند را مورد بررسی قرار داده و 200 خطای امنیتی در آنها یافته است. ابزارهای پیشرفتهای که این شرکت برای حسابرسی به کار میگیرد خطاهایی که ممکن است هزینه زیادی بر دست کاربران بگذارند را شناسایی خواهند کرد. این پلتفرم با ارائه ابزارهایی به کاربران اجازه میدهد که قرارداد هوشمند را به صورت خودکار بررسی کنند.
5_ 4IRE
این شرکت که مقر اصلی آن در اروپا است در زمینه توسعه بلاکچین و حسابرسی قرارداد هوشمند 12 سال سابقه دارد و یکی از بهترینها به حساب میآید. این شرکت علاوه بر قراردادهای هوشمند، پروژههای مخصوص دیفای، پروژههای فین تک، NFTها و اقتصاد سازگار با محیط زیست را نیز مورد بررسی قرار میدهد. مهندسان این شرکت با بازبینی فناوریهای جدید پیش از انتشار از عدم وجود هرگونه حفره امنیتی در آن مطمئن میشوند. این شرکت تنها قراردادهای هوشمندی مورد بررسی قرار نمیدهد و قراردادهای مبتنی بر زنجیرههای معروف دیگر نیز جزو آنها میباشند.
6_ Immunbytes
ششمین شرکتی که در لیست ما قرار دارد ایمیون بایتس است. این شرکت در هند تاسیس شده و قراردادهای هوشمند مبتنی بر بسترهای مختلف بلاکچین را مورد حسابرسی قرار میدهد. ایمیون بایتس تا این لحظه بیش از 125 پروژه را به طور موفق مورد حسابرسی قرار داده و گزارش خطاهای آنها را منتشر کرده است. ابزارهای این شرکت در بهینه سازی کد قراردادهای هوشمند توسعه دهندگان تاثیر زیادی دارند.
7_ Chainsulting
این شرکت در آلمان تاسیس شده است. چینسالتینگ پروژههای مبتنی بر بسترهای مختلف بلاکچین را مورد بازبینی قرار میدهد. عملکرد و منطق درونی قرارداد هوشمند، قابلیت انطباق با دستورالعملهای کدگذاری و میزان آسیبپذیری مواردی هستند که در حسابرسیهای چینسالتینگ به طور ویژه بررسی میشوند. در ساز و کار این شرکت بعد از انجام آزمایشهای امنیتی مختلف یک گواهی تایید و یک گزارش شامل توصیه های امنیتی به تیم توسعه دهنده ارائه میشود.
8_ Slowmist
شرکت اسلومیست در سال 2018 به عنوان یک شرکت امنیتی بلاکچین تاسیس شد. یکی از امتیازهای خاص این شرکت تسلط تیم حسابرسی آن به امنیت شبکه و پروژههای بلاکچین است. در کنار تعداد زیادی از خدمات و سرویسهای مرتبط با امنیت اسلومیست به طور ویژه به حسابرسی امنیتی قراردادهای هوشمند میپردازد.
9_ Solidproof
شرکت سالیدپروف در آلمان تاسیس شده است و هم روشهای خودکار و هم روشهای دستی را برای شناخت آسیبپذیریهای قرارداد هوشمند به کار می برد. بعد از انجام بررسیها آسیبپذیریها به صورت طبقه بندی شده گزارش میشوند. یکی از نکات جالب توجه درباره سالیدپروف استفاده از KYC برای بررسی سوابق پروژههای دیفای توسعه دهندگان است. این شرکت تاکنون بیش از 500 قرارداد هوشمند را مورد بررسی قرار داده است.
10_ OpenZeppelin
آخرین گزینه لیست ما یکی از بهترین شرکتهای حسابرسی قرارداد هوشمند است. OpenZeppelin محبوبیت زیادی در زمینه امنیت سایبری دارد و خدمات متعددی در حوزه زبان برنامه نویسی سالیدیتی ارائه میدهد. این شرکت تاکنون موفق شده است با بررسی صدها قرارداد هوشمند، از 10 میلیارد دلار سرمایه نهفته در آنها محافظت کند. از پروژههای معروفی که این شرکت آنها را حسابرسی کرده است میتوان به Aave، Compound، Coinbase و بنیاد اتریوم اشاره کرد. نکته جالب توجه دیگر درباره این شرکت ارائه خدماتی مانند سرویس Defender است که به مدیریت خودکار قرارداد هوشمند کمک میکند. این شرکت همچنین رویکرد جدیدی برای شناسایی آسیبپذیریهای قرارداد هوشمند با استفاده از بازی ارائه کرد.
سخن پایانی
در این مقاله صفر تا صد حسابرسی امنیتی قرارداد هوشمند را مورد بررسی قرار دادیم. توسعه دهندگانی که تاییدیه حسابرسی را دریافت میکنند خیالشان از امنیت قراردادی که تولید کردهاند راحت خواهد بود همچنین با ارائه این گواهی سرمایهگذاران را متقاعد میکنند که قراردادشان برای سرمایهگذاری ایمن است. قراردادهایی که با سهل انگاری در زمینه امنیت مورد حملات هکری قرار گرفتهاند کم نیستند. بهتر است هنگام انتخاب یک پروژه برای سرمایهگذاری حتما درباره امنیت آن تحقیق کنید.