PasteJacking – چرا نباید از وبسایت ها چیزی رو مستقیم به ترمینال کپی کنیم؟
اگر نمیدونی مشکل چیه، کافیه این متن رو کپی کنی و توی ترمینال (یا هرجای دیگه) paste کنی.
echo "Why?"
وات؟
یه حمله خیلی سادهِ قدیمیِ شهرستانی اما کمتر شناخته شده وجود داره معروف به Pastejacking. قضیه از این قرارِ که با جاوا اسکریپت این امکان وجود داره که محتویات clipboard رو تغییر بدیم. برای مثال، توی این صفحه ای که الان دارین میخونین، این کد جاوا اسکریپت اضافه شده:
<script> document.addEventListener('copy', function(e){ //.. e.clipboardData.setData('text/plain', 'echo "That\'s why"\r\n'); //... }); </script>
که باعث میشه محتویات متنی که شما در این صفحه کپی کردین، تبدیل به یک متن دیگه + کاراکتر های پایان خط تبدیل بشه که نتیجه اش ممکنه منجر به اجرای یک فرزند ناخواسته در سیستم مبارکتون بشه.
خب، حالا اگر کمی این تکنیک ساده با مهندسی اجتماعی ترکیب بشه چه اتفاقی میفته؟
سال ۲۰۱۶، یک حمله خلاقانه ساده انجام شد که اومدن اسم های یک سری پکیج پر استفاده رو با غلط املائی (مثل جابجا نوشتن حروف) به مخازن کتابخونه ها اضافه کردن. مثلا کتابخونه معروف requests رو با اسم reqeusts صورت به pypi اضافه کردن و علاوه بر استفاده از کپی کل کتابخونه اصلی، بهش یکی سری کد مخرب هم استفاده کردن.
همچنین بنظر ذهن ما برای خوندن کلمات بیشتر به اول و آخر اونها توجه میکنه:
Aoccdrnig to a rscheearch at Cmabrigde Uinervtisy, it deosn’t mttaer in waht oredr the ltteers in a wrod are, the olny iprmoetnt tihng is taht the frist and lsat ltteer be at the rghit pclae. The rset can be a toatl mses and you can sitll raed it wouthit porbelm. Tihs is bcuseae the huamn mnid deos not raed ervey lteter by istlef, but the wrod as a wlohe.
پس یک مهاجم میتونه با ترکیب این ۳ روش: با نوشتن یک پست آموزشی برای کار کردن با یک کتابخونه، و جابجایی حروف در وسط کلمه بعد از copy کردن، شانس خودش رو برای اجرا یک حمله افزایش بده.
چطوری دربرابر این حمله امن بمونیم؟
- ساده ترین راه اینه که بجای paste کردن مستقیم در محیط ترمینال، کد رو توی یک محیط متنی paste کنیم، و بعد دوباره از اونجا کپی کنیم و به ترمینال ببریم. برای راحتی، میتنید از شورتکات alt+d استفاده کنید و متن رو توی آدرس بار مرورگر وارد کنید و دوباره با ctrl+a ctrl+c متن رو کپی کنید (ببخشید خیلی بدیهی بود
)
- راه بعد اینکه بجای شل های مرسوم مثل bash، از zsh استفاده کنید. با اینکار استفاده دستورات بطور خودکار اجرا نمیشن و نیازمند زدن enter از سمت شما هستن.
- و در نهایت، بجای استفاده از سایت های غیر رسمی، برای نصب کتابخونه ها به سایت های نسبتا معتبرتر مثل خود pipy، npm و یا گیت(هاب|لب) مراجعه کنین.
- فعلا روش دیگه ای به ذهنم نرسید، اگر ایده ای دارید شما بفرمایید.
در آخر، حمله ای که توی سال ۲۰۱۶ انجام شده بود چندروز پیش یه آپدیت جدید خورد و کلی صدا کرد که میتونید مقاله اش رو اینجا بخونید.
6
پاسخ ها