Composer

تولیدکنندگان Composer که نوعی مدیر بسته برای PHP است، یک به‌روزرسانی را برای رفع یک آسیب‌پذیری مهم منتشر کرده‌اند که می‌تواند به یک مهاجم اجازه دهد دستورات خودسرانه و یک درب پشتی را در هر بسته PHP اجرا کند و درنتیجه به یک حمله‌ی زنجیره تأمین منجر شود.

این مشکل امنیتی با کد CVE-2021-29472 توسط محققان SonarSource در ۲۲ آوریل ۲۰۲۱ کشف و گزارش شد[۱] و در پی رفع مشکل سریع آن در کمتر از ۱۲ ساعت بعد وصله موردنظر منتشر شد.

منتشرکنندگان این وصله در یادداشت‌های خود[۲] برای نسخه‌های ۲٫۰٫۱۳ و ۱٫۱۰٫۲۲ دراین‌باره گفتند[۳]: “آسیب‌پذیری تزریق دستور در HgDriver/HgDownloader و سایر درایورها و بارگیری کنندگان VCS برطرف شده است و تا آنجایی که ما اطلاع داریم از این آسیب‌پذیری بهره‌برداری نشده است.”

Composer به‌عنوان ابزاری برای مدیریت dependency در PHP معرفی می‌شود[۴] و نصب آسان بسته‌های مربوط به یک پروژه را امکان‌پذیر می‌کند. همچنین به کاربران این امکان را می‌دهد که برنامه‌های PHP موجود در Packagist را نصب کنند[۵]، مخزنی که همه بسته‌های PHP عمومی قابل‌نصب با Composer را جمع می‌کند.

طبق ادعای SonarSource، این آسیب‌پذیری که از نحوه مدیریت URL های بارگیری منبع بسته ناشی می‌شود، به‌طور بالقوه منجر به سناریویی می‌شود که یک دشمن بتواند تزریق دستور از راه دور را آغاز کند. به‌عنوان اثبات این رفتار، محققان از نقص تزریق استدلال[۶] برای تهیه یک URL مخرب مخزن Mercurial استفاده کردند که از گزینه alias برای اجرای یک دستور shell به انتخاب مهاجم استفاده می‌کند[۷].

SonarSource دراین‌باره گفت: “یک آسیب‌پذیری در یک جزء اصلی، ارائه‌دهنده‌ی بیش از ۱۰۰ میلیون درخواست metadata در هر ماه است و تأثیر زیادی دارد زیرا می‌توان از این دسترسی برای سرقت اطلاعات نگه‌دارنده‌ها یا هدایت بارگیری بسته‌ها به سرورهای شخص ثالث که وابستگی‌های درب پشتی را ارائه می‌دهند، استفاده کرد.”

این شرکت امنیتی دراین‌باره گفت که یکی از اشکالات در نوامبر ۲۰۱۱ معرفی شد[۸]، به این معنی که این کد آسیب‌پذیر از زمان توسعه‌ی این Composer یعنی ۱۰ سال پیش در آن مخفی بوده است. اولین نسخه آلفای Composer در ۳ جولای ۲۰۱۳ منتشر شد.

Jordi Boggiano یکی از توسعه‌دهندگان اصلی این Composer دراین‌باره گفت[۹]: “تأثیر مستقیم روی کاربران محدود است زیرا فایل composer.json معمولاً تحت کنترل خود آن‌هاست[۱۰] و آدرس‌های URL بارگیری منبع فقط می‌تواند از مخازن Composer شخص ثالث که صریحاً به بارگیری و اجرای کد منبع از آن‌ها اعتماد دارند، به‌عنوان‌مثال افزونه‌های Composer، تأمین شود.”

 

منابع

[۱] https://blog.sonarsource.com/php-supply-chain-attack-on-composer

[۲] https://getcomposer.org/changelog/2.0.13

[۳] https://blog.packagist.com/composer-command-injection-vulnerability

[۴] https://en.wikipedia.org/wiki/Composer_(software)

[۵] https://packagist.org

[۶] https://cwe.mitre.org/data/definitions/141.html

[۷] https://www.mercurial-scm.org/doc/hgrc.5.html#alias

[۸]https://github.com/composer/composer/blame/ee4d4ee3fae26b87dbfca2b9fba8146dd1f04a50/src/Composer/Repository/Vcs/HgDriver.php#L182

[۹] https://github.com/composer/composer/security/advisories/GHSA-h5h8-pc6h-jvvx

[۱۰] https://getcomposer.org/doc/01-basic-usage.md

[۱۱] https://thehackernews.com/2021/04/a-new-php-composer-bug-could-enable.html