Serangan ketergantungan membolehkan pelaksanaan kod di PayPal, Microsoft, Apple, Netflix, Uber dan 30 syarikat lain

Beberapa hari yang lalu kaedah yang sangat mudah dikeluarkan yang membolehkan kebergantungan menyerang dalam aplikasi yang dibangunkan menggunakan repositori pakej dalaman. Penyelidik yang mengenal pasti masalah tersebut mereka dapat menjalankan kod anda pada pelayan dalaman 35 syarikat, termasuk PayPal, Microsoft, Apple, Netflix, Uber, Tesla, dan Shopify.

Peretasan dilakukan sebagai bagian dari program Bug Bounty, bekerjasama dengan syarikat yang diserang, dan pelaku telah menerima bonus $ 130.000 untuk mengenal pasti kelemahan.

Kaedah ini berdasarkan fakta bahawa banyak syarikat menggunakan pergantungan repositori standard NPM, PyPI dan RubyGems dalam aplikasi dalaman mereka, serta pergantungan dalaman yang tidak diedarkan atau dimuat turun secara terbuka dari repositori mereka sendiri.

Masalahnya ialah pengurus pakej seperti npm, pip dan permata mereka cuba memuat turun pergantungan dalaman syarikat, bahkan dari repositori awam. Untuk serangan, hanya tentukan nama pakej dengan pergantungan dalaman dan buat pakej anda sendiri dengan nama yang sama di repositori awam NPM, PyPI dan RubyGems.

Masalahnya tidak khusus untuk NPM, PyPI, dan RubyGems, dan ia juga menampakkan dirinya pada sistem lain seperti NuGet, Maven, dan Yarn.

Idea untuk kaedah yang dicadangkan muncul setelah penyelidik secara tidak sengaja menyedari bahawa dalam kod yang tersedia untuk umum yang disiarkan di GitHub, banyak syarikat tidak membuang penyebutan pergantungan tambahan dari fail manifes mereka digunakan dalam projek dalaman atau semasa melaksanakan fungsi yang diperluas. Jejak serupa telah dijumpai dalam kod JavaScript untuk perkhidmatan web, dan juga di projek Node.JS, Python, dan Ruby banyak syarikat.

Kebocoran utama berkaitan dengan penyisipan kandungan dari fail package.json dalam kod JavaScript yang tersedia untuk umum semasa proses pembuatan, serta dengan penggunaan elemen jalan sebenarnya dalam panggilan memerlukan (), yang dapat digunakan untuk menilai nama ketergantungan.

Mengimbas beberapa juta domain korporat menunjukkan beberapa ribu nama pakej JavaScript yang tidak ada di repositori NPM. Setelah menyusun pangkalan data nama pakej dalaman, penyelidik memutuskan untuk melakukan eksperimen untuk menggodam infrastruktur syarikat yang mengambil bahagian dalam program Bug Bounty. Hasilnya sangat berkesan dan penyelidik dapat menjalankan kodnya pada banyak komputer dan pelayan pembangunan yang bertanggungjawab membina atau menguji berdasarkan sistem integrasi berterusan.

Semasa memuat turun kebergantungan, pengurus pakej npm, pip, dan permata terutamanya memasang pakej dari repositori awam utama NPM, PyPI, dan RubyGems, yang dianggap sebagai keutamaan yang lebih tinggi.

Kehadiran pakej serupa dengan nama yang sama di repositori syarikat swasta tidak diendahkan tanpa menunjukkan amaran atau menyebabkan kemalangan yang boleh menarik perhatian pentadbir. Dalam PyPI, keutamaan muat turun dipengaruhi oleh nombor versi (tanpa mengira repositori, versi pakej yang paling baru dimuat turun). Di NPM dan RubyGems, keutamaan hanya bergantung pada repositori.

Pengkaji telah meletakkan pakej di repositori NPM, PyPI, dan RubyGems yang bersilang dengan nama-nama kebergantungan dalaman yang dijumpai, menambahkan kod pada skrip yang berjalan sebelum pemasangan (dipasang sebelumnya di NPM) untuk mengumpulkan maklumat mengenai sistem dan menyerahkan maklumat diterima ke host luaran.

Untuk menyampaikan maklumat mengenai kejayaan penggodaman, firewall pintasan yang menyekat lalu lintas luaran, kaedah mengatur komunikasi saluran rahsia melalui protokol DNS. Kod yang dijalankan menyelesaikan hos di domain penyerang di bawah kendali domain penyerang, yang memungkinkan untuk mengumpulkan informasi tentang operasi yang berjaya di pelayan DNS. Maklumat mengenai hos, nama pengguna dan laluan semasa dilalui.

75% daripada semua pelaksanaan kod yang direkodkan dikaitkan dengan muat turun pakej NPM, terutamanya disebabkan oleh fakta bahawa terdapat lebih banyak nama modul dalaman dalam JavaScript daripada nama pergantungan di Python dan Ruby.

Fuente: https://medium.com/


Tinggalkan komen anda

Alamat email anda tidak akan disiarkan. Ruangan yang diperlukan ditanda dengan *

*

*

  1. Bertanggungjawab atas data: Miguel Ángel Gatón
  2. Tujuan data: Mengendalikan SPAM, pengurusan komen.
  3. Perundangan: Persetujuan anda
  4. Komunikasi data: Data tidak akan disampaikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Pangkalan data yang dihoskan oleh Occentus Networks (EU)
  6. Hak: Pada bila-bila masa anda boleh menghadkan, memulihkan dan menghapus maklumat anda.