آیا تا به حال شده آدرس وب سایتی را اشتباه تایپ كرده باشید و پیغام Error – Page name could not be found یا The page you requested does not exist را دریافت كرده باشید؟ حتماً این اتفاق برای شما نیز افتاده است، اما شما چه برخوردی كرده اید؟ آیا به سادگی آدرس را اصلاح كرده و یا به یك وب سایت مشابه رفته اید؟ این اتفاق یك مسئله رایج در اینترنت است. همواره تعداد زیادی از لینك های غیرفعال وجود دارند و یا لینكهایی كه آدرس آنها بسیار شبیه هم است. به هر حال هر گاه كه با پیغام خطایی مانند موارد فوق مواجه شوید، در حال مشاهده یك سرقت اطلاعات بالقوه هستید البته نه لزوماً بر علیه وب سایت بلكه مستقیماً بر علیه شما.
فرض كنید كه آدرس اینترنتی معتبر زیر را در نوار آدرس وارد كرده اید:http://www.example.com/FILENAME.html
در صورتی كه فایل FILENAME.html وجود نداشته باشد، وب سایت مذكور پیغام خطای زیر را بر می گرداند:
404 page does not exist: FILENAME.html
….
دقت داشته باشید كه FILENAME.html رشته ای است كه شما وارد كرده اید و وب سایت آن را در صفحه ای كه به شما بر گردانده قرار داده است. این مسئله به نظر بی ضرر می رسد ولی حالا تصور كنید كه در حال مشاهده یك وب سایت حراجی هستید. اجازه دهید آن را auctions.example.com بنامیم. شما به یك سری از چیزهایی علاقمند می شوید كه یكی از اعضا برای فروش گذاشته است و به همین دلیل می خواهید اشیای دیگری را كه وی برای فروش قرار داده نیز مشاهده كنید. فرض كنید این فرد یكی از خرابكاران باشد و خود را با نام BG12345 معرفی كرده است. شما بر روی وب سایت BG12345 كلیك كرده و لیستی از اشیای حراج شده را مشاهده می كنید. شما بر روی یكی از این اشیا كلیك می كنید و به صفحه ای در auctions.example.com باز می گردید كه شئ مذكور را نمایش می دهد. در همین لحظه وب سایت auctions از شما نام كاربری و رمز عبور را می خواهد. شما نیز همه اطلاعات مورد نظر را وارد می كنید و دكمه submit را كلیك می كنید. همه چیز به نظر عادی و خوب می رسد ولی در حقیقت اطلاعاتی را كه شما submit كرده اید به همان BG12345 باز می گردد. چگونه این اتفاق می افتد؟ جواب این است كه auction.example.com دارای یك آسیب پذیری است كه cross-site scripting یا CSS نامیده می شود. یك آسیب پذیری CSS به دلیل شكست یك وب سایت در اعتبارسنجی اطلاعات وارد شده توسط كاربر، قبل از بازگرداندن آن به مرورگر كلاینت، اتفاق می افتد. در Cross-site scripting یك نفوذگر باعث می شود تا یك وب سرور معتبر صفحه وبی را كه حاوی اسكریپت های خرابكار است برای مرورگر قربانی ارسال كند. متأسفانه این اسكریپت خرابكار با اولویت یك اسكریپت قانونی كه از یك وب سرور معتبر آمده است، اجرا می شود. دو خطایی كه در اول مطلب به آن اشاره شده است می توانند مثالهایی از حالت مذكور باشند. در صورتی كه شما به جای نام صفحه، شما یك كد HTML یا اسكریپت را وارد كنید، سرور كماكان همان كد را به مرورگر شما باز می گرداند و مرورگر نیز فرض می كند كه HTML یا اسكریپت از auctions.example.com آمده است و آن را با همان اولویت وب سایت معتبر example.com اجرا می كند و زمانی كه به وب سایت نگاه می كنید همه چیز عادی به نظر می رسد. خرابكار BG12345 نیز از روشی مشابه برای فریب دادن شما استفاده كرده است. زمانی كه شما بر روی حراجی BG12345 كلیك می كنید، لینك مذكور در واقع به یك صفحه نامعتبر اشاره می كند. این لینك ممكن است حاوی چیزی شبیه مثال زیر باشد كه از HTML و اسكریپت های صفحه اصلی تقلید كرده است. زمانی كه بر روی submit كلیك می كنید اطلاعات موجود در فرم به BG12345 باز میگردد. حال این فرد خرابكار می تواند به اطلاعات حساب كاربریتان دسترسی پیدا كند، چیزهایی را با استفاده از حساب شما به مزایده بگذارد و یا اطلاعات شما را تغییر بدهد. وی همچنین قادر است رمز عبور شما را تغییر دهد و از شما را از دسترسی به حساب كاربری خود محروم سازد. از همه بدتر این شخص می تواند شماره حساب كاربری شما را كه با آن رجیستر كرده اید مشاهده كند. اما BG12345 دقیقاً چه می كند؟ وب سایت وی یك لینك را به auction.example.com پیشنهاد داده است كه چیزی شبیه لینك زیر است:
Click Here
در واقع FILENAME.html كه در auction.example.com ثبت شده عبارت است از:
وب سایت auction.example.com سپس از قوانین معمول خود استفاده می كند تا یك صفحه خطا مانند آنچه قبلاً دیدیم تولید كند:
404 page not found: alert(‘hello’)
….
در نتیجه BG12345 توانسته است یك برنامه جاوااسكریپت را در صفحه ای كه توسط auction.example.com به شما بازگردانده شده است، “تزریق” كند. این كد جاوااسكریپت با همان اولویت و تنظیمات وب سایت auction.example.com اجرا می شود و بنابراین می تواند حتی رویدادها را پردازش كند. با این روش می توان از آسیب پذیری CSS جهت شنود اطلاعات حساس مورد سوءاستفاده كرد و اطلاعاتی همچون رمزهای عبور، شماره كارت های اعتباری و هر اطلاعات دیگری كه به عنوان ورودی وارد وب سایت كنید را سرقت كرد. انواع مختلفی از این مشكل مشاهده می شود. برای مثال احتمال دارد كه در وب سایت bank.example.com چنین آسیب پذیری وجود داشته باشد، آن وقت است كه آقای خرابكار BG12345 به راحتی می تواند به حساب بانكی شما دسترسی پیدا كرده و با روشی مشابه به انتقال وجه از حساب شما به حساب دیگری بپردازد.
روش مقابله با اینگونه حملات چیست؟
بهترین راه مقابله، غیر فعال كردن امكان اسكریپت در صورت عدم نیاز به آن است هر چند كه این روش نیز از تزریق HTML خرابكار جلوگیری به عمل نمی آورد. شما نیز باید از اطلاعات حساس خود مراقبت لازم را به عمل آورید و به صفحات حساس مستقیماً مراجعه كرده و از دنبال كردن لینك های ناشناس و سایت های غیر قابل اطمینان بپرهیزید. برای مثال به لینك وب سایت بانكتان در یك ایمیل اطمینان نكنید. اگر نیاز دارید كه به وب سایت بانك دسترسی داشته باشید، مستقیماً به آن مراجعه كنید. همواره در دادن اطلاعات شخصی جوانب احتیاط را رعایت كنید.
مدیران وب سایتها نیز می توانند كمك خوبی در این زمینه باشند. آنها می توانند اطمینان حاصل كنند كه هیچ كدام از صفحاتشان اطلاعات كاربر را بدون تأیید باز نمی گردانند. آنها همچنین می توانند كاربران را تشویق به غیر فعال كردن اسكریپت كنند.
راه حل دیگر استفاده از signed scripting است. در این صورت اسكریپت هایی كه امضای نامعتبر یا غیر قابل اطمینان دارند به صورت اتوماتیك اجرا نخواهند شد. البته استفاده از این پیشنهاد نیاز به تغییراتی در استانداردها و مشخصات اینترنت در حال حاضر دارد.
در صورتی كه نمونه ای از Cross-site scripting را مشاهده كردید به مدیر وب سایت مربوطه اطلاع دهید.
متأسفانه امنیت همواره قربانی قابلیت اجرایی شده است. ولی در صورتی كه شما اینترنت را با فعال بودن امكان اسكریپت مرور كنید با احتمال كمی می توانید از اطلاعات شخصی خود محافظت به عمل آورید. حملات Cross-site scripting به راحتی قابل پیشگیری هستند ولی در عین حال منجر به خسارات زیادی نیز می شوند. مثلا معلوم نیست كه شماره كارت اعتباری و رمز عبور شما برای چه مقاصدی مورد استفاده قرار گیرد.
منبع: مرکز ماهر