ملاحظات امنیتی بر سایر ملاحظات در نرم افزار به طور کلی و بلاکچین به طور خاص غلبه دارد. اگر امنیت از بین برود ، هیچ چیز دیگری مهم نیست. بلاکچین ثابت می کند که معاملات غیرمتمرکز و غیر قابل اعتماد کار می کنند ، اما با این وجود بسیاری از نقاط ضعف امنیتی بلاکچین همچنان باقی مانده اند.

بهره برداری های امنیتی در سطح طراحی و معماری ، در مرحله کدگذاری و در مرحله عملیاتی وجود دارد. و در صورت تعجب ، بله ، بلاکچین می تواند هک شود.

آسیب پذیری های امنیتی بلاکچین – از اینجا تا ابدیت

الماس برای همیشه ماندگار است و قراردادهای هوشمند تا زمانی ادامه دارد که از زنجیره بلوکی که در آن مستقر شده اند استفاده شود. در نتیجه ، تمام اشکالات و آسیب پذیری های امنیتی بلاکچین نیز تا زمانی که قرارداد ادامه دارد ، زندگی می کنند.

به طور معمول ، هر بلاکچین زبان برنامه نویسی خود را برای اجرای قراردادهای هوشمند فراهم می کند. بیایید نگاهی دقیق تر بیندازیم.

زبان های قرارداد هوشمند

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

به عنوان مثال پلت فرم Ethereum شامل زبان Solidid برای نوشتن قراردادهای هوشمند است. سازندگان Solidity را به زبان کامل تورینگ طراحی کردند.

یک زبان کامل تورینگ اساساً به برنامه نویس این امکان را می دهد تا هر چیزی را که سیستم اساسی قادر به اجرای آن است ، پیاده سازی کند. در نتیجه ، این به برنامه نویسان توانایی هایی مانند پیاده سازی حلقه ها در کد را می دهد ، که به طور بالقوه می تواند آسیب پذیری های امنیتی بلاکچین را ایجاد کند.

کامل بودن تورینگ

زبانهای کامل تورینگ ذاتاً دارای پیچیدگی هستند و پیچیدگی ها اشکالات و آسیب پذیری ها را به شما دعوت می کند.

شبکه بیت کوین همچنین یک زبان برنامه نویسی دارد که آن را Script می نامد. اسکریپت عمداً برای افزایش امنیت تورینگ کامل نیست.

هرچه گزینه های کمتری به یک برنامه نویس داده می شود ، احتمال ورود آسیب پذیری های امنیتی بلاکچین به سیستم کمتر است.

برای به حداقل رساندن خطر انتشار کد معیوب در طبیعت ، برنامه نویسان باید مشکلات و ضد الگوهای رایج ذاتی برنامه نویسی قرارداد هوشمند را درک کنند. (ضد الگوها نشان دهنده روشهای بد برنامه نویسی است).

هک کردن DAO: مشکل بازپرداخت

تصویر آسیب پذیری های امنیتی بلاکچین

هک DAO

مشکل بازپرداخت احتمالاً بالاترین رتبه را در میان برنامه نویسان آسیب پذیری امنیتی بلاکچین دارد که در قراردادهای هوشمند رمزگذاری شده اند. بازپرداخت یک حساب را از طریق هزینه های متعدد برای همان معامله تخلیه می کند. موارد استفاده از بازپرداخت پردازش ، خود را به سود این بهره می رساند ، اما اگر در مرحله طراحی و کدگذاری رفع نشود ، این نقص بر هر نوع معامله تأثیر می گذارد..

در یکی از بدنام ترین حملات رمزنگاری تاکنون ، هکرهای DAO از ورود مجدد کالا بهره برداری کردند. هیچ رهبر سازمانی نحوه اداره DAO (یا سازمان خودمختار غیرمتمرکز) را تعیین نکرده و DAO پیشنهاد داده است که به کاربران دارای توانایی رأی دادن به پروژه های سرمایه گذاری در آنها توانمند سازی کند..

در ماه اول بیش از 150 میلیون دلار بودجه جمع آوری کرد. در 17 ژوئن 2016 ، هکرها 50 میلیون دلار از سازمان به دلیل نقص بازپرداخت دریافت کردند. هارد فورک از Ethereum Classic (ETC) به Ethereum (ETH) منجر به تلاش برای حل مشکلات این هک شد.

ضد الگو آسیب پذیر در برابر ورود مجدد

منطق بازگشت پذیر آسیب پذیر برای کد به صورت زیر است:

تابع پردازش پرداخت () {

(1) اعتبار معامله ، گیرنده و مانده حساب را بررسی کنید.

(2) پردازش معامله ؛

(3) وضعیت سیستم را به روز کنید تا نشان دهد پردازش انجام شده است.

}

در نگاه اول ، منطق درست و کامل به نظر می رسد ، اما نقص مربوط به مرحله انجام مرحله 2 قبل از مرحله 3 است.

در حالی که اولین تماس با عملکرد پردازش مرحله 2 را ادامه می دهد ، تماس دیگری برای همان معامله می تواند عملکرد را وارد کند. از آنجا که اطلاعات دولت در حالت اولیه خود باقی مانده و هنوز در مرحله 3 پردازش نشده است ، تماس دوم به عنوان یک معامله معتبر برای پردازش بررسی می شود.

در نتیجه ، سیستم برای دومین بار برای همان تعهد ارز هزینه می کند. هکرها قبل از اینکه دولت به درستی تنظیم شود ، چندین معامله را به سرعت به عملکرد خود می رسانند.

درمان بازگشت مجدد

این تغییر در الگوریتم مشکل فوق را اصلاح می کند:

تابع پردازش پرداخت () {

(1) اعتبار معامله ، گیرنده و مانده حساب را بررسی کنید.

(2) وضعیت سیستم را به روز کنید تا نشان دهد پردازش انجام شده است.

(3) پردازش معامله ؛

}

این کد باید شامل همه موارد استثنایی لازم باشد و همچنین باید تمام وابستگی های منطقی را نیز دربر داشته باشد.

سرریز

سرریز یکی دیگر از ایرادات رایج امنیتی است که برنامه نویسان باید از آن آگاه باشند.

برخی از زبان های برنامه نویسی تایپ قوی را ارائه می دهند و برخی دیگر تایپ ضعیف را ارائه می دهند. به عنوان مثال زبانهای کاملاً تایپ شده اجازه نمی دهند برنامه نویسان داده های رشته ای را به یک متغیر عددی اختصاص دهند و زبان های تایپ شده ضعیف این اقدامات را مجاز می دانند.

زبانهای بسیار تایپ شده محدودیت های دامنه را اعمال می کنند. اگر یک آرایه ده عنصر باشد ، برنامه نویسان نمی توانند به عنصر یازدهم دسترسی پیدا کنند. زبان های تایپ شده ضعیف چنین رفتاری را مجاز می دانند ، اما نتیجه خرابی است. اگر حداکثر مقدار مجاز یک متغیر 99 باشد و مقدار 100 را به آن اختصاص دهید ، هنگام اجرا خرابی آن را تماشا کنید!

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

در برنامه های وب ، هکرها معمولاً حافظه را با کد مخرب خود پر می کنند ، بنابراین هنگامی که برنامه خراب می شود و به نقطه ای از حافظه می رود ، کد مخرب اجرا می شود.

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

هیدرا خیلی سر

تصویر آسیب پذیری های امنیتی بلاکچین

انبوهی از مسائل امنیتی جهان نرم افزار را آزار می دهد. با ظهور فناوری جدید ، تهدیدهای جدید ظاهر می شوند. علاوه بر سو explo استفاده هایی که در بالا ذکر شد ، این نقایص قابل توجه تنها نمایانگر چند آسیب پذیری امنیتی دیگر بلاکچین است.

رمزنگاری بد سردردهای زیادی ایجاد می کند. رمزنگاری حریم خصوصی را تضمین می کند و وقتی حریم خصوصی شکسته می شود ، همه چیز خراب می شود. تیم IOTA اشتباهی نوشت که کتابخانه رمزنگاری خود را از ابتدا در نسخه اولیه محصول خود نوشت. مشکلی که در راه انداختن رمزنگاری شخصی شما وجود دارد این است که تمام نرم افزارهای پیچیده حاوی اشکال هستند ، بنابراین شما دارای رمزنگاری باگی هستید.

کتابخانه های رمزنگاری تاسیس شده از تأیید دانشگاهیان زنده مانده و با گذشت زمان در زندگی وحشی قابل اعتماد هستند.

در دنیای کیف پول ها ، تولید اعداد تصادفی باید واقعاً تصادفی باشد. به خصوص در روزهای ابتدایی ارز رمزنگاری شده ، برخی از کیف پول ها این نیاز را ندارند.

آدرس های ارز رمزنگاری شده به آدرس هایی نیاز دارند که باید منحصر به فرد باشند. منحصر به فرد از یک مولد اعداد تصادفی ناشی می شود و مولد اعداد تصادفی برای شروع فرآیند به یک دانه نیاز دارد. اگر بذر واقعاً تصادفی نباشد ، سیستم از کار می افتد.

یک نتیجه از تصادفی بد به این معنی است که آدرس یکسانی چندین بار ایجاد می شود. سناریویی را نشان دهید که در آن کیف پول آدرس X را به شخص A اختصاص می دهد و سپس مدتی بعد آدرس X را به شخص B اختصاص می دهد. وقتی پرداخت به آدرس X می رود ، فقط به یک شخص می رسد. کدام شخص پول می گیرد?

یک مشکل دیگر در مورد تصادف بد زمانی بوجود می آید که یک هکر الگوریتم مورد استفاده برای ایجاد بذر را کشف کند. هکر دانه را برای خود بازسازی می کند و مالک سیستم است.

جاده برای همیشه ادامه دارد و مهمانی هرگز پایان نمی یابد

امنیت نبردی پایان ناپذیر است و حتی اگر برنامه نویسان ، معماران و آزمایش کنندگان تمام آسیب پذیری ها را از کد حذف کنند ، آسیب پذیری های عملیاتی همچنان باقی می مانند.

در محیط اثبات کار ، اگر بازیگران بد 51٪ از شبکه را کنترل کنند ، یکپارچگی از بین می رود. تئوری بازی تخفیف برای این حمله را فراهم می کند. ارز رمزنگاری شده جدید با شبکه کوچک بیشترین خطر را در معرض این حمله قرار می دهد. اما یک حمله 51٪ ارزش پول را از بین می برد ، بنابراین مهاجمان فقط به خود آسیب می رسانند.

بلاکچین ها در اینترنت زندگی می کنند و در مقایسه با اینترنت در معرض هکرها قرار دارند. به عنوان مثال ، فرض کنید شما از صرافی در وب سایت سکه می خرید. حملات تزریق ، برنامه نویسی بین سایت ، حملات فیشینگ و سایر هک های وب سایت سنتی غالب است.

افکار نهایی

همانطور که برنامه نویسان از اشکالات محافظت می کنند ، برنامه نویسان نیز باید امنیت را در پیشرفت خود لحاظ کنند. برخی از ابزارها برای کمک به برنامه نویسان در این کار وجود دارد ، اما برنامه نویسان ابتدا باید آسیب پذیری های خود را درک کنند تا در برابر آنها محافظت نکنند.

پروژه امنیت برنامه غیرمتمرکز (DASP) آرزو دارد مخزنی از اطلاعات و منابع در مورد امنیت بلاکچین باشد. آنها تا حدودی خود را در مدل سازی می کنند پروژه امنیت برنامه وب باز (OWASP). 10 سالانه برتر OWASP به طور قطع آسیب پذیری های اولیه برنامه وب را که در حال حاضر وجود دارد ، لیست می کند. DASP Top 10 امیدوار است که منبع معادل بلاکچین را فراهم کند.

همه حملات از قبل شناخته شده نیستند. یک سوit استفاده روز صفر ، سو an استفاده ای را که هکرها قبل از هر کس دیگری در مورد آن می دانند تعریف می کند. بنابراین برنامه نویسان هنگام طراحی و پیاده سازی نرم افزار باید مانند مهاجمان فکر کنند. اگر آسیب پذیری ها را در کد خود پیدا نکردید ، انتظار داشته باشید هکری که به دنبال سود است ، آنها را پیدا کند.