مغز متفکر این هک، هکر شناخته شده آلبرت گونزالس بود. این هک به یکی از نمونههای به یادماندنی خرابکاریهایی تبدیل شد که ممکن است در نتیجه نفوذپذیریهای معمولی که در همه کامپیوترهای سرور وجود دارد، اتفاق بیفتد. متخصصان امنیت نرمافزارهای وب مدتها است که درباره هزینهای که این باگها میتوانند برای کسبوکارها بهوجود آورند، هشدار میدهند اما انگار در بیشتر مواقع این هشدارها نادیده گرفته میشوند. با این حال، پس از هک هارتلند، هیچکس نمیتوانست اهمیت کنترل این باگها و میزان خسارت ناشی از آنها را انکار کند. علاوهبر میلیونها دلاری که این حمله به هارتلند ضرر زد، شرکت با از دست دادن اعتبارش در میان مشتریان و سرمایهگذاران نیز زیان قابل ملاحظهای را تجربه کرد.
این حادثه به هیچ وجه رخدادی استثنایی یا غیرمعمول نیست. در سالهای بعد از آن، سایتهای کوچک و بزرگ زیادی در دام چنین حملههایی که ناشی از SQL Injection، Cross-site Scripting و دیگر باگها بودند، گرفتار شدند. این حفرههای کوچک به نفوذکنندگان اجازه میدهد که کدهای مخرب خود را در مرورگر یک کاربر نهایی تزریق کرده یا کل یک وب سرور را در اختیار بگیرند. در ژانویه 2013، حملهکنندگان سایت خبرنگاران بدون مرز را دراختیار گرفته و توانستند بهصورتی مخفیانه بدافزارهایی را روی کامپیوترهای بازدیدکنندگان نصب کنند. حملههایی که از این نفوذپذیریهای ساده استفاده کرده و به مجرمان اجازه آلودهکردن بازدیدکنندگان را میداد به حدی معمول شدهاند که اصطلاح «حملههای راه آب» (watering hole attack) برای آنها مورد استفاده گرفت. این اصطلاح به این دلیل سر زبانها افتاد که هکرها درست مانند شکارچیانی رفتار میکنند که بر سر آبگیرها کمین کرده و منتظر صیدهای تشنهای میمانند که به دنبال چیزی برای نوشیدن میگردند.
احتمالات این است . . .
تمام اینها تنها یک معنی دارد: اگر به تازگی گروهی از متخصصان امنیت سایت شما را بررسی نکردهاند، به احتمال زیاد سایت شما هم میتواند به منبعی برای گسترش آلودگی تبدیل شود. براساس ردهبندی 10 نفوذپذیری مخرب که به تازگی توسط پروژه امنیت نرمافزارهای وب باز OWASP (سرنام Open Web Application Security Project) منتشر شده است، تهدیدهایی که بیش از بقیه سایتها را تهدید میکنند به شرح زیر است:
1- تزریق (Injection)
این نفوذپذیریها زمانی اتفاق میافتند که نرمافزارهای تحت وب ورودیهای کاربر را به همراه سایر دادههای غیرقابل اعتماد برای یک مفسر (Interpreter) مانند یک پایگاه داده SQL ارسال میکنند. حملهکنندگانی نظیر هکرهایی که برای گونزالس کار میکردند، این باگها را به کمک اسکنرهایی یافته و از آنها برای سرقت جدولهای گذرواژهها یا دادههای حساس استفاده میکنند. از این آسیبپذیریها میتوان برای حملههای «رد دسترسی» یا Denial of access یا حتی دراختیارگرفتن کنترل کامل وبسرور استفاده کرد. چنین نفوذپذیریهایی ممکن است آنقدر متعدد باشند که درست همانند علفهای هرز یک باغ ریشهکن کردنشان ناممکن باشد. بهترین روش برای از بین بردن این راههای نفوذ، تکیه بر برنامههای وبی است که ورودیهای کاربر را پیش از ارسال به سرور کنترل و اصلاح کنند. راه مورد علاقه OWASP برای جلوگیری از حملههای تزریقی این است که «از یک API استفاده شود که در کل از مفسر استفاده نمیکند یا نوعی اینترفیس پارامتری برای مفسر بهوجود میآورد.»
2- اسکریپتهای بینسایتی (Cross-site Scripting)
این نوع حملات که به اختصار XSS نامیده میشوند زمانی اتفاق میافتند که برنامههای وب دادههای کاربر را بدون اعتبارسنجی یا حتی صرفنظر از آن دادهها به یک مرورگر ارسال میکنند. حملهکنندگان از این نفوذپذیری استفاده کرده و قطعهکدهای جاوااسکریپتی را ارسال میکنند که کوکیهای مرورگر را میدزدند. کوکیهایی که برای اعتبارسنجی کاربر نهایی برای ورود به حساب کاربری ایمیل یا سایر سرویسهای نیازمند رمزعبور مورد استفاده قرار میگیرند. از این حفرهها میتوان برای دیفیس کردن سایتها نیز استفاده کرده و کاربران را به دیگر سایتها هدایت کرد یا حتی از بدافزارها برای دراختیارگرفتن کنترل مرورگر کاربر کمک گرفت. تنها زمانی میتوان نگرانی از باگهای XSS را فراموش کرد که مطمئن باشیم که تمام دادههایی که کاربر وارد میکند مورد ارزیابی قرار میگیرند یا از آنها صرفنظر میشود و در نتیجه دیگر خطرناک نیستند.
3- اعتبارسنجی از کار افتاده و مدیریت نشست (Broken Authentication and Session Management)
این خطاها بهطور معمول، در برنامههایی وجود دارند که کارشان وارد کردن (Login) کاربر به بخشهای با دسترسی محدود سایت (مثلاً حسابهای ایمیل) است. معمولاً این خطاها در برنامههایی یافت میشوند که بهصورت اختصاصی توسعه داده شدهاند و در آنها اشتباههای حیاتی و خطرناک وجود دارد. مثلاً ممکن است شماره نشست (Session ID) مورد استفاده بهسادگی قابل حدس زدن باشد یا در URL سایت دیده شود. همانطور که نام این دسته نشان میدهد پیامد چنین اشتباهاتی این است که این الگوهای اعتبارسنجی آنطوری که ما فکر میکنیم کار نمیکنند و در نتیجه به حملهکنندگان اجازه میدهند بدون اعتبارسنجی کنترل حسابهای کاربری را دراختیار گرفته و کارهایی را انجام دهند که درواقع یک کاربر مجاز میتواند انجام دهد. مثلاً حملهکننده میتواند دادههای حساس یا ایمیلهای کاربر را پاک کند. بهترین راه در امان ماندن از چنین حفرههایی این است که از الگوها و برنامههایی که بهصورت اختصاصی توسعه مییابند پرهیز کرده و در عوض به برنامههایی روی آورد که قبلاً به صورت کامل امتحان شدهاند
4- ارجاع مستقیم به شئ ناامن (Insecure Direct Object Reference)
این حفرهها ریشه در برنامههای وبی دارند که در هنگام تولید یک صفحه وب از نام واقعی یا کلید یک شئ در URL صفحه استفاده میکنند. در برخی موارد حملهکنندهها میتوانند با استفاده از این رخنهها و تنها با تغییر دادن متن یک URL مجوزهای قدرتمند مدیر سیستم را دراختیار بگیرند. برای جلوگیری از این خطاها سایتها باید از ارجاعهای غیرمستقیم به اشیا یا ارجاعهای جداگانه برای هر کاربر استفاده کنند، زیرا این ارجاعها قابل دستکاری نیستند.
5- جعل درخواست بینسایتی (Cross-site Request Forgery)
حفرههای CSRF از سایتهای تقلبی برای تولید درخواستهای HTTP جعلی استفاده میکنند تا به کاربرانی که از سایتهای نفوذپذیر بازدید میکنند، حمله کنند. حملهکنندهها از این حفرهها استفاده میکنند تا کاربر نهایی را وادار کنند که در سایتی که در آن وارد شده کارهای ناخواستهای را به اجبار انجام دهد. این آسیبپذیریها میتوانند قربانی را مجبور کنند تا سهواً ایمیلی را پاک کند یا کار دیگری را انجام دهد که انجام آن توسط هکر نیازمند تأیید هویت است. این حملهها بهویژه زمانی که کاربر قربانی مجوزهای مدیریت سیستم را دراختیار داشته باشد، میتوانند بسیار مخرب باشند. برای بستن حفرههای مربوط به CSRF برنامههای وب باید از توکنهای غیرقابل پیشبینی در بدنه (BODY) یا URL هر یک از درخواستهای HTTP استفاده کنند و این توکنها باید در هر نشست کاربر و هر درخواست منحصربهفرد باشند.