سود:
- امکان شناسایی الگوهای آسیب پذیری رایج مانند ورود مجدد، کنترل دسترسی، دستکاری اوراکل و پیشروی و اسکن آنها با ابزار تحلیل استاتیک + هوش مصنوعی + انسان
- توانایی تمایز بین نقاط قوت هوش مصنوعی در توضیح خروجی ابزار و اولویت بندی نقاط ضعف و مثبت کاذب در MEV و منطق تجاری
- بدانید که "اسکن تمیز" یک گواهی امنیتی نیست، که اسکن فقط یک لایه کنترل است
رشته حسابرسی کل نگر را در واحد قبلی دیدیم. در این واحد، ما بر روی موضوع فنی تر تمرکز می کنیم: اسکن آسیب پذیری - جستجوی سیستماتیک برای الگوهای آسیب پذیری شناخته شده در کد. در اینجا ما از هوش مصنوعی، همراه با ابزارهای تحلیل استاتیک، به عنوان دستیار استفاده می کنیم که الگوهای آسیب پذیری شناخته شده را اسکن و توصیف می کند. هدف: شناخت عمیق رایجترین آسیبپذیریها و تشخیص اینکه هوش مصنوعی در کجا قابل اعتماد است و کجا در اسکن آنها ناکافی است.
اسکن استاتیک و پویا
اسکن دو نوع است. تجزیه و تحلیل استاتیک - بررسی کد بدون اجرای آن: ابزارهایی مانند Slither و Mythril کد قرارداد را اسکن کرده و الگوهای شناخته شده را پرچم گذاری می کنند. تجزیه و تحلیل دینامیک/ نمادین (اجرای کد با ورودی های مختلف یا کاوش ریاضی آن): فازبندی (بمباران با ورودی تصادفی) و اجرای نمادین (کاوش در تمام مسیرهای ممکن) در این گروه قرار می گیرند.
هوش مصنوعی جایگزین این ابزارها نمی شود، بلکه آنها را تکمیل می کند: وقتی وسیله نقلیه اخطاری صادر می کند، هوش مصنوعی هشدار را به زبان ساده توضیح می دهد. هوش مصنوعی می تواند زمانی را یادآوری کند که ابزار یک الگو را از دست می دهد. اما هوش مصنوعی به تنهایی نمی تواند میزان اسکن آن را تضمین کند. گردش کار مناسب: ابزار + هوش مصنوعی + انسان.
نکته: خروجی یک ابزار تجزیه و تحلیل ایستا (به عنوان مثال گزارش Slither) را به هوش مصنوعی بدهید و بپرسید «هر هشدار را به زبان ساده توضیح دهید، کدام خطر واقعی است و کدام یک می تواند مثبت کاذب باشد؟» بپرسید هوش مصنوعی در قابل فهم و اولویت بندی کردن خروجی ابزار خام برای انسان بسیار ارزشمند است.
رایج ترین الگوهای آسیب پذیری
1. ورود مجدد اگر تابعی یک قرارداد خارجی را بدون بهروزرسانی وضعیت خود فراخوانی کند، قرارداد فراخوانی شده میتواند به عقب برگردد، همان تابع را دوباره فعال کند و چندین بار صندوق را برداشت کند. راه حل: چک ها-اثرات-برنامه های متقابل و نگهبان ورود مجدد.
2. عدم کنترل دسترسی. یک عملکرد مهم (خروج، برداشت، ارتقا) به طور تصادفی عمومی می شود. این یکی از رایج ترین و گران ترین اشتباهات است.
3. دستکاری اوراکل. اتکای کور قرارداد به منبع قیمت خارجی (اوراکل). مهاجم فوراً قیمت را دستکاری می کند و پروتکل را فریب می دهد. راه حل: قیمت میانگین وزن شده با زمان (TWAP)، چند منبع.
4. سرریز/زیاد عدد صحیح. زمانی که یک عدد از حداکثر مقدار مجاز بیشتر شود و به ابتدا برگردد. Solidity مدرن بیشتر آن را به طور خودکار می گیرد، اما خطر در کدهای سطح پایین (مونتاژ) باقی می ماند.
5. جلو ران. تراکنشها قبل از تأیید در استخر عمومی (mempool) ظاهر میشوند. مهاجم می تواند تراکنش شما را ببیند و تراکنش خود را در مقابل آن درج کند. MEV (Maximal Extractable Value - مقدار استخراج شده از دنباله تراکنش) نام کلی این موضوع است.
6. انکار سرویس (DoS). یک حلقه خیلی گران می شود و عملکرد را غیرقابل استفاده می کند، یا وابستگی به یک آدرس قفل می شود.
7. خطرات را ارتقا دهید. برخورد ذخیره سازی و سوء استفاده از اختیارات در قراردادهای قابل ارتقا.
آسیب پذیری
اعتماد اسکن هوش مصنوعی
چرا
ورود مجدد
بالا
الگوی شناخته شده و واضح
کنترل دسترسی
بالا
قالب را می توان اسکن کرد
عملیات عدد صحیح
بالا
کنترل استاندارد
دستکاری اوراکل
متوسط
نیاز به زمینه دارد
جلو در حال اجرا / MEV
متوسط - کم
پروتکل خاص
خطای منطق تجاری
پایین
معتبر، متنی
اعلان ضعیف / اعلان قوی
اعلان ضعیف:
آیا خللی در این کد وجود دارد؟
اعلان قدرتمند:
نقش شما: دستیار غربالگری امنیتی. قرارداد زیر را برای الگوهای شناخته شده زیر اسکن کنید و برای هر کدام "در معرض خطر/بدون/ مطمئن نیستم": ورود مجدد، کنترل دسترسی، عملیات اعداد صحیح، وابستگی به اوراکل، اجرای اولیه، DoS، امنیت ارتقاء. هر تعیین را به خط مربوطه پیوند دهید و توضیح دهید که چرا خطر وجود دارد. اینها فرضیه هایی هستند که با ابزار تحلیل ایستا و حسابرس تأیید می شوند. توجه داشته باشید که ممکن است مثبت کاذب وجود داشته باشد.
چهار قالب قابل کپی
1) توضیحات خروجی ابزار:
در زیر گزارش یک ابزار تحلیل استاتیک (Slither) آمده است. هر هشدار را به زبان ساده توضیح دهید: به چه معناست، آیا یک خطر واقعی است یا یک مثبت کاذب احتمالی، اولویت آن چیست؟ تصمیم قاطع نگیرید؛ برای تایید حسابرس اولویت بندی کنید.
2) غربالگری متمرکز بر ورود مجدد:
همه عملکردهایی که تماس های خارجی را در این قرارداد برقرار می کنند را بیابید. بررسی کنید که آیا ترتیب چک-اثر-تعامل برای هر یک از آنها رعایت می شود و آیا نگهبانی برای ورود مجدد وجود دارد یا خیر. ریسک ها را با خط نشان دهید. اگر مطمئن نیستید علامت بزنید؛ تولید کد اکسپلویت
3) نقشه کنترل دسترسی:
تمام عملکردهای خارجی/عمومی را در این قرارداد فهرست کنید و "چه کسی می تواند تماس بگیرد" (همه/مالک/نقش) را برای هر کدام مشخص کنید. عملیات حیاتی (برداشت، چاپ، ارتقا) را انجام دهید و آنهایی را که کنترل دسترسی ضعیفی دارند علامت گذاری کنید. آن را با جدول ارائه دهید.
4) حذف مثبت کاذب:
در نظر بگیرید که چرا این هشدار اسکن ممکن است یک خطر واقعی نباشد (مثبت نادرست): چه زمینه یا شرایط کد این هشدار را باطل می کند؟ اما نگویید "مطمئناً هیچ مشکلی وجود ندارد". نکاتی را که نیاز به تایید دارند فهرست کنید.
سه کیف کوچک (به تعداد)
مورد 1 - خودرو + هوش مصنوعی کارایی را دو برابر کرد. یک تیم Slither را در یک پروژه 12 قراردادی اجرا کرد و 140 اخطار دریافت کرد. هنگامی که هوش مصنوعی را توضیح داد و هشدارها را اولویت بندی کرد، معلوم شد که 95 مورد از 140 هشدار مثبت کاذب بوده است. تمرکز تیم بر روی 45 نامزد واقعی بود. زمان تریاژ از 2 روز به 5 ساعت کاهش یافت. درس: هوش مصنوعی در انسانی کردن خروجی خودرو قدرتمند است.
مورد 2 - هوش مصنوعی MEV را ربود. در یک قرارداد DEX (مبادله غیرمتمرکز)، هوش مصنوعی الگوهای استاندارد را تمیز یافت اما نتوانست آسیبپذیری پیش رو را شناسایی کند. زیرا این مخصوص ترتیب عملیات پروتکل بود. حسابرس انسانی و شبیه سازی گرفته شده است. درس: خطرات خاص پروتکل مانند MEV/Front-running حوزه ضعیف هوش مصنوعی هستند.
مورد 3 - از اتلاف وقت برای مثبت کاذب خودداری کنید. وقتی هوش مصنوعی توضیح داد که یک هشدار ورود مجدد در واقع مثبت کاذب است (عملکرد قبلاً محافظت شده بود) تیم از بازنویسی غیرضروری در امان ماند. اما تیم همچنان با یک آزمایش آن را تایید کرد. درس: هوش مصنوعی اولویت بندی می کند. تایید دوباره با آزمایش می آید.
محدودیت های اسکن
اسکن الگوهای شناخته شده را پیدا می کند. نه ابزار و نه هوش مصنوعی تضمینی برای شناسایی آسیب پذیری جدید، منحصر به فرد یا پروتکل خاص نیستند. بنابراین، غربالگری بخشی از ممیزی است. نه خودش این ایده که "اسکن تمیز است، پس به این معنی است که ایمن است" یکی از خطرناک ترین تصورات غلط در این زمینه است. لایروبی میوه کم آویزان را می گیرد. برای خطرات عمیق و منحصر به فرد، تخصص انسانی، آزمایش، فازی کردن و حسابرسی رسمی ضروری است.
احتیاط: گزارش "تمیز" ابزار اسکن یا هوش مصنوعی یک گواهی امنیتی نیست. ارائه آن به این شکل - به ویژه برای سرمایه گذاران - گمراه کننده و غیراخلاقی است.
اشتباهات رایج
- جایگزینی غربالگری برای بازرسی اسکن یک لایه است نه کل.
- استفاده از هوش مصنوعی بدون ابزار تجزیه و تحلیل استاتیک + هوش مصنوعی + انسان با هم کار می کنند.
- حذف مثبت کاذب بدون تایید. هر صفحه نمایش آزمایش می شود/تأیید شده توسط انسان.
- دور زدن خطرات خاص پروتکل (MEV) با تکیه بر هوش مصنوعی. منطقه ضعیف هوش مصنوعی
- فکر کردن به "اسکن پاک" = "ایمن". نمی تواند ناشناخته را پیدا کند.
- تولید کد اکسپلویت فقط توصیف ریسک دفاعی مشروع است.
به طور خلاصه
- اسکن آسیب پذیری به دنبال الگوهای آسیب پذیری شناخته شده با وسیله نقلیه + هوش مصنوعی + انسان است.
- هوش مصنوعی در توضیح و اولویت بندی خروجی ابزار تحلیل استاتیک قدرتمند است.
- قابل اعتماد در الگوهای واضح مانند ورود مجدد و کنترل دسترسی. ضعیف در MEV و منطق تجاری.
- حتی حذف موارد مثبت کاذب نیاز به تایید دارد.
- "اسکن تمیز" یک گواهی امنیتی نیست. جایگزینی برای نظارت نیست.
وظیفه کاربردی
یک ابزار تجزیه و تحلیل استاتیک را بر روی یک قرارداد نمونه (در صورت امکان) اجرا کنید یا یک گزارش Slither آماده پیدا کنید. اعلان "Tool output description" را روی هوش مصنوعی اعمال کنید. ارزیابی کنید که آیا هوش مصنوعی: (1) هشدارها را به درستی توضیح می دهد، (2) در تمایز بین موارد مثبت کاذب منطقی است، و (3) یک خطر خاص پروتکل را از دست می دهد. ستونهای «خودرو پیدا شد / هوش مصنوعی توضیح داده شد / تأیید شده توسط انسان» را در جدول پر کنید.
چک لیست
- [ ] من دریچه را به عنوان یک لایه کنترل قرار دادم.
- [ ] من از ابزار تحلیل استاتیک + هوش مصنوعی + انسان با هم استفاده کردم.
- [ ] من دسته بر اساس دسته بندی الگوهای شناخته شده را جستجو کردم.
- [ ] من مثبت کاذب را با تایید حذف کردم.
- [ ] من در زمینه های ضعیف مانند MEV/منطق کسب و کار به انسان تکیه کردم.
- [ ] من «پاکسازی» را به عنوان تضمین ارائه نکردم.
- [ ] من فقط برای اهداف دفاعی کار می کردم. من اکسپلویت ایجاد نکردم.