چگونه Chrome DevTools به دفاع در برابر حملات self-XSS کمک می کند

ولفگانگ بیر
Wolfgang Beyer

حملات self-XSS چیست؟

Self-XSS یا اسکریپت نویسی بین سایتی خود، نوعی حمله مهندسی اجتماعی است که شما را فریب می دهد تا کدهای مخرب را در مرورگر وب خود اجرا کنید. برخلاف حملات معمولی XSS ، که بر آسیب‌پذیری‌های برنامه‌های وب متکی هستند که به مهاجمان اجازه می‌دهد کد مخرب را تزریق کنند، حملات خود-XSS به اقدامات بالقوه اجرای کد شما متکی هستند.

حملات Self-XSS معمولاً شامل فریب مهاجم شما برای کپی و چسباندن کدهای مخرب در DevTools Console مرورگر شما می‌شود. مهاجم معمولاً با وعده دادن نوعی پاداش به این امر دست می یابد. این ممکن است:

  • به شما قول می دهد که کد به شما امکان دسترسی به ویژگی های مخفی یا جوایز مجازی را می دهد.
  • تظاهر به اینکه کد یک تست امنیتی یا رفع اشکال است.
  • قول دادن به این که کد به شما اجازه هک کردن یک وب سایت را می دهد.

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

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

چگونه Chrome DevTools برای کاهش حملات self-XSS تلاش می کند؟

اجازه دادن به کاربران برای چسباندن کد در DevTools و سپس اجرای آن ذاتاً خطرناک است. اما این یکی از ویژگی های اصلی Chrome DevTools نیز می باشد. بنابراین باید تعادلی بین کاهش حملات بالقوه self-XSS و عدم دخالت در کار توسعه دهندگانی که فقط می خواهند وب سایت ها را اشکال زدایی کنند، پیدا می کردیم.

توسعه‌دهندگان معمولاً کدی را که در جایی از وب پیدا می‌کنند کپی نمی‌کنند، آن را در DevTools قرار می‌دهند و اجرا نمی‌کنند، بدون اینکه ابتدا نگاهی گذرا به عملکرد کد داشته باشند. اکثر توسعه دهندگان از خطرات امنیتی اجرای کدهایی که در گوشه ای از وب پیدا کرده اند بسیار آگاه هستند.

Chrome DevTools به توسعه دهندگان اعتماد می کند تا بدانند چه کاری انجام می دهند. وقتی در حال کپی و چسباندن کد هستند، نمی‌خواهیم سرعت آنها را کاهش دهیم یا حواسشان را پرت کنیم.

ما فکر می کنیم که غیر توسعه دهندگان در معرض خطر بسیار بالاتری برای قربانی شدن یک حمله self-XSS هستند. به منظور محافظت از شما، ما بر این باوریم که زمانی که در حال انجام کاری بالقوه خطرناک هستید، قطع رابطه با شما قابل قبول و سودمند است. هنگامی که Chrome DevTools تشخیص دهد که یک کاربر بی تجربه در حال تلاش برای جایگذاری کد در DevTools است، متوقف می شود و یک هشدار نشان می دهد.

DevTools چه زمانی هشدارهای self-XSS را نشان می دهد؟

DevTools از یک اکتشافی بسیار ساده برای تصمیم گیری در مورد نمایش هشدارهای self-XSS استفاده می کند: این بر اساس سابقه کنسول نمایه کاربری شما است.

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

اخطارهای self-XSS چگونه هستند؟

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

هشدار self-XSS در کنسول.

می‌توانید این هشدار را لغو کنید و جای‌گذاری را فعال کنید، اما برای این کار باید «Allow Pasting» را تایپ کنید.

وقتی یک کاربر بی تجربه کد را در ویرایشگر کد DevTools (به عنوان مثال، پنل Sources ) قرار می دهد، تجربه کاربر بسیار شبیه است. به جای اخطار، یک گفتگوی مودال را مشاهده خواهید کرد.

گفتگوی مودال self-XSS در پانل منابع.

و باز هم، بستن این گفتگو به تنهایی برای فعال کردن چسباندن کافی نیست. برای لغو اخطار، باید "Allow Pasting" را در قسمت ورودی تایپ کنید.

آیا این تنظیم یک بار مصرف است؟

بله، هنگامی که تصمیم به چسباندن مجاز می‌کنید، دیگر با هشدارهای self-XSS اذیت نخواهید شد.

ما امیدواریم که این به یک مبادله خوب بین سودمندی و مزاحمت دست یابد. با افزودن اصطکاک، احتمال خواندن اخطار را افزایش می‌دهیم و در نتیجه احتمال حمله موفقیت‌آمیز self-XSS را کاهش می‌دهیم.

Chrome DevTools پرچمی را نگه می‌دارد که مشخص می‌کند هشدارهای خود-XSS را در نمایه Chrome شما نشان دهد یا خیر. بنابراین اگر یک نمایه جدید ایجاد کنید و بلافاصله شروع به چسباندن کد در DevTools کنید، چسباندن مسدود می شود و به جای آن هشدارهای self-XSS نشان داده می شود.

آیا می توانید آن را برای اتوماسیون تست غیرفعال کنید؟

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

برای دور زدن این مشکل یکی از موارد زیر را انجام دهید:

  • از Chrome for Testing استفاده کنید، انواع کروم که به طور خاص برای آزمایش و اتوماسیون طراحی شده است. هشدارهای Self-XSS خاموش هستند.

  • برای سایر کانال‌های انتشار Chrome، پرچم خط فرمان --unsafely-disable-devtools-self-xss-warnings به Chrome ارسال کنید تا گفتگوی هشدار self-xss به طور کامل غیرفعال شود.

نتیجه گیری

نظر شما در مورد این استراتژی برای کاهش حملات self-XSS چیست؟ اگر نظر یا پیشنهادی دارید، یک نظر به این اشکال اضافه کنید یا با استفاده از یکی از روش‌های زیر تماس بگیرید.

به‌ویژه اگر روی وب‌سایتی کار می‌کنید که در مورد حملات self-XSS از طریق گزارش‌های کنسول هشدار می‌دهد، مایلیم در مورد همسو کردن تلاش‌های خود یا اندازه‌گیری تأثیر اقدامات کاهش self-XSS صحبت کنیم.

کانال های پیش نمایش را دانلود کنید

استفاده از Chrome Canary ، Dev یا Beta را به عنوان مرورگر توسعه پیش‌فرض خود در نظر بگیرید. این کانال‌های پیش‌نمایش به شما امکان دسترسی به جدیدترین ویژگی‌های DevTools را می‌دهند، به شما اجازه می‌دهند APIهای پلتفرم وب پیشرفته را آزمایش کنید و به شما کمک می‌کنند تا قبل از کاربران، مشکلات سایت خود را پیدا کنید!

با تیم Chrome DevTools در تماس باشید

از گزینه‌های زیر برای بحث در مورد ویژگی‌های جدید، به‌روزرسانی‌ها یا هر چیز دیگری مربوط به DevTools استفاده کنید.