فرض کنید یک تیم برای یک پروتکل مالی روی بلاکچین قرارداد هوشمند نوشته است. این قرارداد پس از استقرار دیگر بهسادگی عوض نمیشود و ممکن است میلیونها واحد ارزش را نگه دارد. تیم میخواهد پیش از انتشار، کسی غیر از نویسندگان کد، با نگاه یک مهاجم آن را بخواند. این کسی ممیز امنیتی (auditor) است.
ممیز در عمل چه میکند؟
پروژههای ممیزی در جزئیات فرق دارند، اما مراحل کلی همه شبیه هم است. مستندات پلتفرم Cantina برای فرایند بررسی امنیتی مراحلی مثل هماهنگی اولیه با مشتری، جمعآوری اطلاعات و تعیین دامنه، بررسی امنیتی، دورهی اصلاح، جلسهی جمعبندی و گزارش نهایی را فهرست کرده است. میتوان کار روزمره را اینگونه نوشت:
- تعیین دامنه (scoping): کدام قراردادها و کدام نسخهی کد بررسی میشود، چه مستنداتی هست و چه مدت زمان در اختیار است.
- خواندن کد و ساختن مدل ذهنی: قرارداد چه کاری میکند، پول از کجا میآید و به کجا میرود، چه کسی چه اختیاری دارد.
- مدلسازی تهدید (threat modelling): اگر مهاجم بخواهد از این سیستم سود ببرد، از کدام راهها میتواند وارد شود؟
- آزمون و fuzzing: نوشتن تست و ورودیهای تصادفی برای شکستن فرضهای برنامهنویس. ابزار Foundry برای همین کار پشتیبانی از fuzz test دارد.
- گزارش با درجهی شدت (severity): هر یافته با توضیح روشن، راه تکرار و پیشنهاد اصلاح نوشته میشود و شدتش مشخص میشود.
- بازبینی اصلاحات (fix review): پس از آنکه تیم کد را اصلاح کرد، ممیز بررسی میکند اصلاح درست انجام شده و مشکل تازهای نیاورده باشد.
بخش بزرگی از کار، خواندن دقیق و صبورانهی کد و نوشتن روشن است، نه «هک دیدنی».
ممیزها کجا کار میکنند؟
شرکتهای ممیزی. تیمی از ممیزها برای مشتریها پروژهی ممیزی انجام میدهند. معمولاً کار تیمی است و با مشتری گفتوگوی مداوم دارد.
ممیزی رقابتی (competitive audit). در این قالب، یک پروژه کد خود را برای مدتی در اختیار تعداد زیادی پژوهشگر مستقل میگذارد. چند نمونه از پلتفرمها:
- Code4rena: طبق مستندات خودش، نقشها سهتاست: «وارد» (warden) که پژوهشگر است، «اسپانسر» که استخر جایزه میگذارد و «داور» که اعتبار و شدت یافتهها را تعیین میکند. به گفتهی مستندات، یافتههای تکراری سهم یکدیگر را کم میکنند.
- Sherlock: هم ممیزی رقابتی داشته و هم سامانهای به نام Audit Engine. مستندات Sherlock این دو را «دو سامانهی کاملاً متفاوت» مینامد. در Audit Engine هر یافته «پذیرفته»، «ردشده» یا «خنثی» داوری میشود و نسبت یافتههای پذیرفتهشده بر پرداخت و دعوتهای بعدی اثر دارد.
- Cantina: مستندات پژوهشگران آن، شرکت در مسابقه و برنامههای باگبانتی (bug bounty) را توضیح میدهد. برای دریافت پاداش، ثبت هویت (KYC) و ثبت نشانی پرداخت لازم است.
قواعد هر پلتفرم، از شیوهی امتیازدهی تا هویت، پرداخت و محدودیتهای جغرافیایی و تحریمی، فرق میکند و ممکن است عوض شود. پیش از ثبتنام، قوانین همان پلتفرم را خودتان بخوانید.
نکتهی صادقانه: درآمد رقابتی تضمینشده نیست. پاداش به یافتههای معتبر داده میشود و طبق مستندات Code4rena و Cantina، یافتهی تکراری سهم کمتری میگیرد؛ پس نتیجه برای هر شرکتکننده نامطمئن است. در این نوشته هیچ رقم درآمدی نیامده، چون رقم قابلاتکا و پایدار برای همه وجود ندارد و بازار هم عوض میشود.
باگبانتی. پروژهها برای گزارش آسیبپذیریهای واقعی پاداش تعیین میکنند. فقط در چارچوب قوانین همان برنامه کار کنید؛ حمله به قرارداد واقعی بدون مجوز غیرقانونی است.
چه مهارتهایی لازم است؟
- تسلط بر سالیدیتی (Solidity): بدون خواندن روان کد، هیچ چیز دیگر ممکن نیست.
- فهم EVM: ماشین مجازی اتریوم چگونه حافظه، ذخیرهسازی و فراخوانی بین قراردادها را مدیریت میکند.
- ردههای آسیبپذیری شناختهشده: بازورودی (reentrancy)، کنترل دسترسی، دستکاری قیمت، خطاهای حسابداری و مانند آن.
- ابزار: Foundry (شامل forge برای تست و anvil برای شبکهی محلی) و ابزارهای تحلیل ایستا مثل Slither.
- ارتباط و نوشتن: یافتهای که بد نوشته شود، حتی اگر درست باشد، پذیرفته یا اصلاح نمیشود. گزارش کوتاه، دقیق و قابلاثبات (با PoC) ارزش دارد.
- حوصله و نظم: ساعتها کد خواندن، یادداشتبرداری و پذیرفتن اینکه ممکن است چیزی پیدا نکنید.
دشواری و زمان لازم
این حرفه آسان نیست. باید هم برنامهنویس باشید، هم مثل مهاجم فکر کنید، هم خوب بنویسید. زمان دقیق ثابتی وجود ندارد و به پیشینهی شما بستگی دارد. برای نمونه، برنامهی پیشنهادی همین دورههای سایت از سالیدیتی تا سطح ممیز رقابتی روی هم چند ماه است، و آن هم فقط شروع کار است. هیچ دورهای شغل یا درآمد را تضمین نمیکند و بازار این حرفه همیشه در حال تغییر است.
یک مسیر مرحلهای
- سالیدیتی را یاد بگیرید. بنویسید و تست کنید، نه فقط ببینید.
- مبانی امنیت را بیاموزید. هر آسیبپذیری رایج را با کد حمله و کد اصلاح ببینید.
- گزارشهای عمومی را بخوانید. گزارش ممیزیها و تحلیل هکهای واقعی را با دقت و خط به خط دنبال کنید.
- روی چالشهای عمومی تمرین کنید. دو نمونهی شناختهشده: Ethernaut از OpenZeppelin، یک بازی سالیدیتی که هر مرحلهاش یک قرارداد برای شکستن است؛ و Damn Vulnerable DeFi از The Red Guild برای تمرین امنیت DeFi. اگر این سایتها از ایران باز نشد، هر دو مخزن متنباز دارند و میتوان اجرایشان را روی رایانهی خود امتحان کرد.
- به ممیزی رقابتی بروید. با یافتههای اندک و قانونمند شروع کنید و از داوریها یاد بگیرید.
- به یک شرکت بپیوندید. پرتفوی یافتهها، گزارشها و توان ارتباط شما همینجا به کار میآید.
دورههای سایت در این مسیر
ترتیب این مسیر در دورههای سایت این است: B1 مبانی سالیدیتی ← B2 توسعه dApp ← A1 مبانی امنیت قرارداد هوشمند ← A2 آدیتور حرفهای ← A3 Lead Auditor / Contest Researcher.
- B1: سالیدیتی از پایه.
- B2: ساختن dApp و تست با Foundry؛ پیشنیاز A1.
- A1: آسیبپذیریهای رایج با حملهی عملی روی شبکهی محلی، ابزارهایی مثل Slither و گزارش نهایی.
- A2: متدولوژی کامل ممیزی، fuzz و invariant، مدل تهدید و گزارش حرفهای.
- A3: کار در مسابقه، راهبرد زمان، نوشتن یافتهی رقابتی و ممیزی یک مسابقهی گذشته بهعنوان پرتفوی.
همهی این دورهها در فهرست انتظارند و ادعای شغل یا درآمد ندارند.
خلاصه
- ممیز امنیتی کد را پیش از استقرار میخواند، تهدیدها را مدل میکند، تست مینویسد، گزارش میدهد و اصلاحات را بازبینی میکند.
- جاهای کار: شرکتهای ممیزی، ممیزی رقابتی (مثل Code4rena، Sherlock و Cantina) و برنامههای باگبانتی.
- مهارتهای اصلی: سالیدیتی، EVM، آسیبپذیریهای شناختهشده، ابزار (مثل Foundry) و نوشتن روشن.
- این مسیر دشوار است، درآمد تضمینشده ندارد و بازارش تغییر میکند.
- مسیر پیشنهادی: سالیدیتی، مبانی امنیت، خواندن گزارشها، تمرین روی چالشهای عمومی، ممیزی رقابتی، شرکت.
گام بعد
برای دیدن کل مسیر یکجا و برنامهریزی زمان، «نقشهی راه برنامهنویس قرارداد هوشمند» را از بخش ابزارهای رایگان سایت بگیرید. اگر میخواهید با ساختار دورهها شروع کنید، با B1 مبانی سالیدیتی آغاز کنید. برای خبر شدن از انتشار دورهها، ثبتنام فهرست انتظار را انجام دهید.
منابع
- Code4rena Docs — Introduction (wardens, sponsors, judges) — https://docs.code4rena.com/
- Code4rena Docs — Awarding (severity, duplicates and shares) — https://docs.code4rena.com/awarding.md
- Sherlock Docs — Audit Engine, for participants — https://docs.sherlock.xyz/audit-engine/for-participants.md
- Sherlock Docs — Fix review process (audit contests) — https://docs.sherlock.xyz/audit-contests-deprecated-replaced-by-audit-engine/watsons/fix-review-process.md
- Cantina Docs — Security review process — https://docs.cantina.security/researchers/participation/security-review-process.md
- Cantina Docs — Competition participation (points, duplicates, KYC and payment address) — https://docs.cantina.security/researchers/participation/competitions.md
- Cantina Docs — Documentation index (competitions and bug bounties for researchers) — https://docs.cantina.security/llms.txt
- Ethernaut (OpenZeppelin) — project repository and README — https://github.com/OpenZeppelin/ethernaut
- Damn Vulnerable DeFi — official site — https://www.damnvulnerabledefi.xyz/
- Foundry — official site (forge, cast, anvil, chisel; fuzz testing) — https://getfoundry.sh/
آخرین بازبینی دقت: ۱۴۰۵/۰۸/۰۶

