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