مسمومیت کلیپبورد، موضوعی که در آن یک وبگاه آنچه که فکر میکنید در حافظهی کلیپبورد وجود دارد را با چیز دیگری جایگزین میکند.هرچند شاید در نگاه اول فکر کنید که این موضوع پیشپا افتاده و ناچیزی است، ولی مسئلهای است که پیامدهای جدی در پی دارد.با وجود این مسئله و مشکل، احتمال این وجود دارد که کد مخربی روی سیستم قربانی اجرا شود. به عبارت دیگر ممکن است کد مخرب مهاجم بر روی سامانهی شما بدون اینکه هیچ اطلاعی از آن داشته باشید، اجرا شود.هنگامی که کد مخرب بر روی سامانهی قربانی اجرا شد، میتواند فرآیندهای دیگری را بارگیری و نصب کرده و در لحظهای Mac شما pwned شود.(powend به عبارتی معادل همان owend است. یعنی مهاجم سامانهی شما را صاحب شود.)
کلید اصلی این مسئله در کدی که کاربر از یک وبگاه کپی میکند نهفته است. سپس این کد در جایی دیگر کپی شده و منجر میشود که کد موردنظر اجرا گردد. این مسئله ممکن است زمانی که کد شل در ترمینال چسبانده میشود نیز رخ دهد.
بطور مثال، کد زیر را در نظر بگیرید که بهطور معمول کدی است که برای نشان دادن پروندههای مخفی در Mac مورد استفاده قرار میگیرد.
اگر شما در گوگل نحوهی نمایش پروندههای مخفی در Mac را جستجو کنید با وبگاههای بیشماری روبرو خواهید شد که حالتهای مختلفی از این دستور را نمایش دادهاند و تمایل شما بر این خواهد بود که طولانیترین دستور را کپی کرده و در ترمینال اجرا کنید.
در حقیقت برخی وبگاهها با صراحت به شما میگویند که کد مورد نظر را اجرا کنید. همچنین شما فکر میکنید اگر دستور را تایپ کنید و غلط املائی در آن وجود داشته باشد، بد است و ترجیح میدهید که دستور را کپی کرده و در ترمینال بچسبانید.
هر چند این راه روش سالم و امنی نیست. Dylan Ayrey کسی است که راهی پیدا کرده تا کدهای جاوا اسکریپت حاوی کدهای مخرب را از طریق دستورات شل کپی شده، تزریق کرد. در این وبگاه، نشان داده شده است که کپی کردن کد زیر و چسباندن آن در ترمینال، نتیجهای کامل متفاوت خواهد داشت:
در این مثال مهم است که توجه کنید، برای اجرای این دستور کلید return زده نمیشود و این دستور خود به خود پس از چسباندن در ترمینال اجرا میشود.
چگونه ممکن است؟ بخش اول شامل جایگزین کردن چیزی که کپی کردهاید با چیز دیگر است. در صفحهی Ayrey’s از یک کد جاوا اسکریپت استفاده شده است که اندکی بعد از فشره شدن Keypress (همچون Ctrl+C) محتوای حافظهی کلیپبورد را تنظیم میکند. خوشبختانه این رویه در مرورگر Sofari درست کار نمیکند ولی در مرورگرهای Chrome و FireFox به درستی عمل میکند.
مرحلهی بعدی نیازمند این است که در پروندهی متنی کاراکتر خط جدید وجود داشته باشد که به حافظهی کلیپبورد اضافه شود. زمانی که دستور در ترمینال چسبانده میشود، این کاراکتر خط جدید همانند فشردن کلید return عمل میکند.
خیلی آسان است که بتوان دید که این سوءاستفاده به بدترین نحو ممکن میتواند مورد بهرهبرداری قرار گیرد. مثال زیر را در نظر بگیرید:
این دنباله از دستورات ممکن است چیزی که کاربر فکر میکند کپی کرده است را جابجا کند. در نتیجه همهی این دستورات همانی خواهد بود که کپی شده ولی یکی از این دستورات بهطور خودکار اجرا خواهد شد. ابتدا یک پوشهی جدید در پوشههای کاربر ایجاد شده و یک پرونده در آن بارگیری میشود. این پرونده در ادامه از حالت فشرده خارج شده و در پسزمینه اجرا خواهد شد.
در ادامه محتوای پنجرهی ترمینال برای اینکه هیچ مدرکی از دستورات اجرا شده باقی نماند پاک شده و آخرین دستور در پنجره نمایش داده میشود که منتظر کاربر است تا کلید return را فشار دهد.
نویسندهی این پست این مسئله را با پروندهی سادهی زیپ تست کرده است و نتیجه این بوده که به سختی ردی از اجرای دستورات ناخواسته در ترمینال قابل رؤیت بوده است. تنها نکتهی مشکوکی که وجود داشته این بوده که پنجرهی ترمینال پاک شده که این قضیه برای کسی که خیلی حرفهای نیست، مشکوک نخواهد بود.
خوشبختانه کد جاوا اسکریپت Ayrey’s در مرورگر Safari کار نمیکند. ولی خیالتان خیلی راحت نشود. Ayrey’s به یک بهرهبرداری قدیمی که میتوان با HTML و CSS انجام داد، اشاره میکند. این حقه از استایلهای ویژهای استفاده میکند که برای مخفی کردن تکهای از متن در داخل متن دستور شل استفاده میشود. این حقه به خوبی کد جاوا اسکریپت Ayrey میتواند مورد استفاده قرار گیرد. متأسفانه این حقه هنوز زنده است و به خوبی کار میکند و علاوه بر Chrome و FireFox در مرورگر Safari نیز به خوبی مورد بهرهبرداری قرار میگیرد.
حال این مسئله برای کابران Mac به چه معنی است؟ در درجهی اول مهم است که به این درک برسید که کپی کردن یک دستور شل و چسباندن آن در ترمینال، اصلاً روش امن و سالمی نیست. همانطور که در این پست مشاهده کردید، انجام اینکار بسیار خطرناک است و ممکن است منجر به آلودگی سامانهی شما به بدافزار شود. حتی اگر به یک وبگاه اعتماد دارید، هنوز تضمینی وجود ندارد که آن وبگاه هک نشده باشد.
خوشبختانه یک راهحل برای حفاظت از سامانه برای زمانی که میخواهید دستور شل را کپی کرده و در ترمینال بچسبانید وجود دارد. به راحتی قبل از چسباندن دستور مورد نظر آن را چک کنید که آیا مطابق با آن چیزی که انتظار دارید هست یا نه. این کار را به راحتی با چسباندن دستور شل در یک ویرایشگر متنی میتوانید انجام دهید و یا اینکه گزینهی نمایش کلیپبورد را از Finder انتخاب کنید.
Ayrey همچنین گفته که از iTerm به عنوان جایگزینی برای ترمینال استفاده کنید. این ابزار زمانی که در انتهای دستور شل، کاراکتر جط جدید وجود داشته باشد، هشدار میدهد. هرچند که نسخهی کنونی iTerm برای حالتهایی مثل مثال بالا، زمانی که مجموعه دستورات طولانی وجود داشته باشد، کارساز نخواد بود.
اطلاع دقیقی از بهرهبرداری از این مسئله در دنیای واقعی وجود ندارد ولی این موضوع شدنی است. بهویژه الان که در وبلاهای امنیتی از این مسئله صحبت شده و توجه عموم به سمت آن جلب شده است. خیلی جای تعجب وجود ندارد که در آینده شاهد مثالهایی از بهرهبرداری با استفاده از این مشکل باشیم.
ثبت نظر