واحد 3 / 11

پشتیبانی حسابرسی قرارداد هوشمند: بررسی امنیتی و پیش نویس یافته ها

سود:

  • توانایی درک اینکه هوش مصنوعی دامنه حسابرس را گسترش می دهد، اما جایگزین آن نمی شود و در اسکن دسته بندی و یافتن پیش نویس مفید است.
  • توانایی تشخیص اینکه هوش مصنوعی آسیب‌پذیری اصلی و خطای منطق تجاری را از دست داده است، و اینکه یک بیانیه «ایمن» روان تضمینی نیست.
  • توانایی طبقه بندی یافته ها بر اساس سطح جدیت آنها و درک اینکه تایید نهایی و مسئولیت حرفه ای بر عهده حسابرس ذیصلاح است.

ممیزی امنیتی (بررسی سیستماتیک قرارداد هوشمند برای آسیب پذیری ها) مسئولیت پذیرترین کار Web3 است. یک خط از قلم افتاده توسط حسابرس می تواند میلیون ها دلار ضرر داشته باشد. در این بخش شما یاد خواهید گرفت که چگونه از هوش مصنوعی به عنوان دستیار حسابرسی استفاده کنید. ما از تولید سرنخ ها برای نوشتن طرح کلی یافته ها یاد خواهیم گرفت. اما مهم ترین جمله این است: هوش مصنوعی کنترل نمی کند. دستیار است که چشم حسابرس را تیز می کند. تایید نهایی با حسابرس ذیصلاح است که مسئولیت حرفه ای را بر عهده می گیرد.

چرا حسابرسی از نظر امنیتی بسیار مهم است

گزارش حسابرسی به پروژه و سرمایه گذاران اطمینان می دهد که "این کد بررسی شده است." اگر این اطمینان نادرست باشد، عواقب آن فاجعه بار است: پروتکل مورد بهره برداری، بودجه از دست رفته، پروژه از بین رفته است. بنابراین، استفاده از هوش مصنوعی در بازرسی دقیق ترین بخش این ماژول است. هوش مصنوعی دامنه حسابرس را گسترش می دهد (الگوهای بیشتری را به یاد می آورد، سریعتر می خواند) اما جایگزین حسابرس نمی شود.

چرا نمیگذره زیرا:

  • هوش مصنوعی نمی‌تواند آسیب‌پذیری منحصربه‌فرد/جدیدی را که در داده‌های آموزشی وجود ندارد، ببیند.
  • هوش مصنوعی اغلب نقص منطق تجاری پروتکل را از دست می دهد - اینکه کد از نظر فنی صحیح است اما از نظر اقتصادی قابل بهره برداری است.
  • هوش مصنوعی می‌تواند با گفتن «ایمن» به زبان روان، اطمینان کاذب به شما بدهد. این خطرناک ترین نتیجه است.

لایه های استفاده از هوش مصنوعی در کنترل

1. اسکن اولیه و یادآور الگو. هوش مصنوعی از طریق الگوهای آسیب پذیری شناخته شده مانند یک چک لیست عبور می کند: ورود مجدد، کنترل دسترسی، دستکاری اوراکل، اجرای اولیه. این تضمین می کند که حسابرس هیچ دسته ای را از دست نمی دهد.

2. توضیح کد. توضیح یک عملکرد پیچیده برای هوش مصنوعی به زبان ساده به حسابرس اجازه می دهد تا به سرعت منطق را درک کند. اما توضیحات همیشه با کد مقایسه می شود.

3. نوشتن پیش نویس یافته ها. هنگامی که حسابرس آسیب پذیری را پیدا می کند، هوش مصنوعی در زمان نوشتن پیش نویس گزارش (توضیح، تأثیر، راه حل پیشنهادی) صرفه جویی می کند.

4. ایجاد فرضیه متضاد. از هوش مصنوعی بپرسید "چگونه می توان از این عملکرد سوء استفاده کرد؟" "پرسیدن" دیدگاه تهاجمی را به ما یادآوری می کند.

توجه: فقط به این دلیل که هوش مصنوعی می گوید "من هیچ آسیب پذیری در این کد پیدا نکردم" به این معنی نیست که "این کد ایمن است". ادله غیبت فقدان دلیل نیست. این واقعیت که هوش مصنوعی نمی تواند چیزی را پیدا کند، بررسی آن ناحیه را برای حسابرس غیر ضروری نمی کند.

یافتن سطوح شدت

یافته های حسابرسی بر اساس سطح شدت آنها طبقه بندی می شوند. هوش مصنوعی هنگام ایجاد پیش نویس باید از این چارچوب استفاده کند:

سطح

معنی

مثال

انتقادی

از دست دادن وجه / قفل به طور مستقیم امکان پذیر است

برداشت وجه با ورود مجدد

بالا

تاثیر جدی در شرایط خاص

چاپ غیر مجاز (ضرابخانه)

متوسط

تاثیر محدود یا شرایط دشوار

ضرر کوچک با انحراف اوراکل

پایین

خطر جزئی، نقض رویه خوب

پخش رویداد از دست رفته

اطلاعات

غیر امنیتی، خوانایی

عدم وجود NatSpec

اعلان ضعیف / اعلان قوی

اعلان ضعیف:

آیا این قرارداد امن است؟

این سوال هوش مصنوعی را مجبور می‌کند تا قضاوت مطلق و غیرقابل توجیهی مانند «بله/نه» داشته باشد - دقیقاً همان چیزی که ما نمی‌خواهیم.

اعلان قدرتمند:

نقش شما: دستیار حسابرس ارشد قرارداد هوشمند. قرارداد زیر را برای امنیت اسکن کنید. دسته‌های زیر را یکی یکی مرور کنید: ورود مجدد، کنترل دسترسی، عملیات اعداد صحیح، اعتبارسنجی ورودی، داده‌های اوراکل/خارجی، پیش‌رو، محدودیت گاز. برای هر یافته: (1) خط کد مربوطه، (2) ایجاد خطر، (3) شدت تخمینی (بحران/بالا/متوسط/پایین)، (4) پیشنهاد راه حل. اینها فرضیه هایی هستند که باید تایید شوند. حکم "ایمن" ندهید. مناطقی را که مطمئن نیستید مشخص کنید و بگویید "اجازه دهید حسابرس تایید کند".

چهار قالب قابل کپی

1) مرور بر اساس دسته:

این قرارداد را برای دسته‌های زیر اسکن کنید: ورود مجدد، کنترل دسترسی، سرریز اعداد صحیح، اعتبارسنجی ورودی، وابستگی اوراکل، پیش‌رو، DoS/gas. برای هر دسته، بگویید "خطری وجود ندارد/مطمئن نیستم" و توجیه خود را به خط موجود در کد متصل کنید. قضاوت نهایی نکنید

2) فرضیه متضاد از دیدگاه مهاجم:

مانند یک مهاجم فکر کنید: راه های سوء استفاده از این عملکرد چیست؟ هر سناریو را مرحله به مرحله بنویسید و شرایط مورد نیاز را مشخص کنید. این سناریوها فرضیه هایی هستند که باید آزمایش شوند. کد اکسپلویت واقعی تولید نکنید، فقط ریسک را توصیف کنید.

3) پیش نویس گزارش یافته ها:

یافته‌های تأیید شده زیر را به زبان حسابرسی رسمی گزارش کنید: عنوان، شدت، توصیف، تأثیر، کد تحت تأثیر، مراحل بازتولید، راه‌حل پیشنهادی. از زبان سنجیده و فنی استفاده کنید. اغراق فرض کنید که این یافته توسط حسابرس تأیید شده است، یافته جدیدی ایجاد نکنید.

4) تأیید صحت:

در زیر یک آسیب پذیری و اصلاح اعمال شده توسط توسعه دهنده آمده است. بررسی کنید که آیا تعمیر واقعاً آسیب‌پذیری را می‌بندد یا خیر. علامت گذاری کنید که آیا یک عارضه جانبی یا آسیب پذیری جدید ایجاد می کند. مطمئناً نگویید "بسته"؛ پایان با "باید با آزمایش تایید شود".

سه کیف کوچک (به تعداد)

مورد 1 - هوش مصنوعی از پرش دسته جلوگیری کرد. حسابرس قصد داشت روی قرارداد 400 خطی تمرکز کند و از دسته اوراکل بگذرد. اسکن دسته‌بندی هوش مصنوعی هشدار داد که «داده‌های قیمت از یک منبع منفرد و قابل دستکاری هستند». حسابرس آن را مورد بررسی قرار داد و دریافت که در واقع یک ریسک متوسط ​​است. درس: هوش مصنوعی نظم و انضباط پوشش را حفظ می کند.

مورد 2 - اطمینان نادرست "ایمن". تیم دیگری از هوش مصنوعی پرسید: "آیا این امن است؟" او پرسید؛ هوش مصنوعی گفت: "به نظر نمی رسد مشکل مهمی وجود داشته باشد." بازرسی خدمه سبک بود. سپس حسابرس مستقل یک نقص منطق تجاری پیدا کرد: محاسبه‌ای که از نظر فنی درست بود اما انگیزه‌های آن قابل بهره‌برداری بود. درس: هوش مصنوعی خطای منطق تجاری را از دست می دهد. نمی توان به او اعتماد کرد که بگوید "ایمن".

مورد 3 - در تهیه پیش نویس گزارش 3 ساعت صرفه جویی شد. حسابرس نیمی از روز را صرف گزارش دستی 8 یافته می کرد. هنگامی که یافته های تایید شده را به هوش مصنوعی دادم و پیش نویس رسمی را چاپ کردم، زمان 3 ساعت کاهش یافت. حسابرس زمانی را به تعمیق کردن اختصاص داد. درس: هوش مصنوعی در گزارش دهی ایمن و کارآمد است زیرا یافته ها قبلاً به صورت انسانی تأیید شده اند.

آسیب پذیری منطق کسب و کار: نقطه کور هوش مصنوعی

گران‌ترین آسیب‌پذیری‌ها اغلب نه از یک خطای فنی در کد، بلکه از قابلیت بهره‌برداری منطق کسب‌وکار ناشی می‌شوند: گرد کردن بهره‌برداری از حساب پاداش، ربودن وام فوری از یک رأی، دستکاری آنی قیمت. اینها مواردی هستند که کد "درست" کار می کند اما پروتکل را می توان از نظر اقتصادی فریب داد. هوش مصنوعی احتمالاً چنین خطاهایی را از دست می دهد - به ویژه خطاهای مربوط به پروتکل. بنابراین، بررسی منطق کسب‌وکار، پرمشغله‌ترین حوزه حسابرس و کمترین متکی به هوش مصنوعی است.

نکته: از هوش مصنوعی بپرسید "چگونه می توان از انگیزه های اقتصادی این پروتکل بهره برداری کرد؟" و از سناریوهایی که مطرح می شوند به عنوان نقطه شروع استفاده کنید - اما به یاد داشته باشید که شما و تیمتان باید تحلیل واقعی را انجام دهید.

اشتباهات رایج

  • از هوش مصنوعی بپرسید "ایمن است؟" پرسیدن و اعتماد به بله شما. قضاوت مطلق لازم نیست.
  • توقف بررسی زمانی که هوش مصنوعی می‌گوید «نتوانستم آن را پیدا کنم». غیبت دلیل نیست.
  • واگذاری بررسی منطق کسب و کار به هوش مصنوعی. این بزرگترین نقطه کور اوست.
  • عدم استفاده از ابزار مستقل (Slither و غیره). هوش مصنوعی به تنهایی کافی نیست.
  • قرار دادن یافته های ایجاد شده توسط هوش مصنوعی بدون تأیید آن در گزارش. خطر توهم.
  • تلاش برای قرار دادن مسئولیت کنترل بر روی هوش مصنوعی. مسئولیت بر عهده کارشناس است.

به طور خلاصه

  • حسابرسی ایمنی بسیار مهم است. هوش مصنوعی دامنه حسابرس را گسترش می دهد اما جایگزین آن نمی شود.
  • هوش مصنوعی آسیب پذیری اصلی و باگ منطق تجاری را از دست می دهد. گفتن "ایمن" اطمینان نیست.
  • یافته ها بر اساس سطح شدت طبقه بندی می شوند. هوش مصنوعی در تولید پیش نویس مفید است.
  • فرضیه های متضاد و غربالگری دسته بندی، نظم و انضباط گنجاندن را حفظ می کنند.
  • تایید نهایی و مسئولیت حرفه ای همیشه بر عهده حسابرس ذیصلاح است.

وظیفه کاربردی

نمونه قراردادی را پیدا کنید که حاوی آسیب‌پذیری شناخته شده باشد (برای اهداف آموزشی، نمونه‌هایی از «قراردادهای آسیب‌پذیر» در منبع باز موجود است). اعلان «اسکن بر اساس دسته» را روی هوش مصنوعی اعمال کنید. توجه داشته باشید که آیا هوش مصنوعی: (1) آسیب‌پذیری واقعی را پیدا کرد، (2) یافته‌های ساختگی/کاذب را تولید کرد، (3) قضاوت‌های مطلقی مانند «ایمن» انجام داد. سپس آن را با یک ابزار تجزیه و تحلیل استاتیک مقایسه کنید.

چک لیست

  • [ ] از هوش مصنوعی بپرسید "ایمن است؟" در عوض، من یک اسکن مبتنی بر دسته داشتم.
  • [ ] من هر یافته را به عنوان یک فرضیه در نظر گرفتم.
  • [ ] من خودم/تیم بازبینی منطق تجاری را انجام دادم.
  • [ ] من آن را با یک ابزار تجزیه و تحلیل استاتیک مستقل تأیید کردم.
  • [ ] من تأیید کرده ام که هوش مصنوعی یافته ها را جعل نمی کند.
  • [ ] من یافته ها را بر اساس سطح شدت طبقه بندی کردم.
  • [ ] پذیرفتم که تایید نهایی با حسابرس ذیصلاح است.