Skip to content

Menu

  • English
  • فارسی

Archives

  • اکتبر 2021
  • فوریه 2021
  • سپتامبر 2020
  • آگوست 2020
  • جولای 2020
  • مارس 2020
  • ژانویه 2020

Categories

  • امنیت
  • برنامه نویسی
  • بهینه سازی کد
  • جاوااسکریپت
  • رمزنگاری
  • گنو/لینوکس

Copyright جعفر آخوندعلی 2022 | Theme by ThemeinProgress | Proudly powered by WordPress

جعفر آخوندعلییه برنامه نویس دیگه

PasteJacking – چرا نباید از وبسایت ها چیزی رو مستقیم به ترمینال کپی کنیم؟

امنیت . برنامه نویسی . جاوااسکریپت . گنو/لینوکسOn 2021-02-27 by Jafar
زمان مطالعه: 2 دقیقه

اگر نمیدونی مشکل چیه، کافیه این متن رو کپی کنی و توی ترمینال (یا هرجای دیگه) 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 کردن، شانس خودش رو برای اجرا یک حمله افزایش بده.

چطوری دربرابر این حمله امن بمونیم؟

  1. ساده ترین راه اینه که بجای paste کردن مستقیم در محیط ترمینال، کد رو توی یک محیط متنی paste کنیم، و بعد دوباره از اونجا کپی کنیم و به ترمینال ببریم. برای راحتی، میتنید از شورتکات alt+d استفاده کنید و متن رو توی آدرس بار مرورگر وارد کنید و دوباره با ctrl+a ctrl+c متن رو کپی کنید (ببخشید خیلی بدیهی بود 😐)
  2. راه بعد اینکه بجای شل های مرسوم مثل bash، از zsh استفاده کنید. با اینکار استفاده دستورات بطور خودکار اجرا نمیشن و نیازمند زدن enter از سمت شما هستن.
  3. و در نهایت، بجای استفاده از سایت های غیر رسمی، برای نصب کتابخونه ها به سایت های نسبتا معتبرتر مثل خود pipy، npm و یا گیت(هاب|لب) مراجعه کنین.
  4. فعلا روش دیگه ای به ذهنم نرسید، اگر ایده ای دارید شما بفرمایید.

در آخر، حمله ای که توی سال ۲۰۱۶ انجام شده بود چندروز پیش یه آپدیت جدید خورد و کلی صدا کرد که میتونید مقاله اش رو اینجا بخونید.

6

مثل این مطلب:

کد ریویو - قسمت دوم | بهینه سازی معماری پروژه (Express)NodeJs
داستان اولین مشارکت من در کرنل لینوکس
رمزنگاری چیست، که بود و چه کرد؟

پاسخ ها

randomgeneratedusername 2021-02-27 at 21:11 - پاسخ

بعضی از ترمینال ها (‌مثل ترمینال xfce) وقتی که کارکتر newline یا sudo توی متنی که میخواید کپی کنید باشه، قبلش یه هشدار میده.

    Jafar 2021-02-28 at 01:36 - پاسخ

    جالب بود، ممنون

آرمان 2021-03-02 at 12:01 - پاسخ

سلام ، میشه ازمقالتون با ذکر منبع استفاده کرد؟

    Jafar 2021-03-02 at 12:44 - پاسخ

    سلام. بله چرا نشه !

نظرت چیه؟ لغو پاسخ

نشانی ایمیل شما منتشر نخواهد شد.

این سایت توسط reCAPTCHA و گوگل محافظت می‌شود حریم خصوصی و شرایط استفاده از خدمات اعمال.

It’s Me

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

  • twitter
  • twitter
  • linkedin
  • github
  • telegram
  • telegram
Preloaded shit
  • فارسیفارسی
  • EnglishEnglish

دسته‌ها

  • امنیت (5)
    • رمزنگاری (3)
  • برنامه نویسی (8)
    • بهینه سازی کد (2)
    • جاوااسکریپت (2)
  • گنو/لینوکس (3)