Kerentanan dalam NPM yang menyebabkan penimpaan file pada sistem

GitHub telah mengungkapkan rincian tujuh kerentanan dalam paket tar dan @npmcli/arborist, yang menyediakan fungsi untuk bekerja dengan arsip tar dan menghitung pohon ketergantungan di Node.js. Kerentanan memungkinkan, ketika membongkar arsip yang dirancang khusus, untuk menimpa file di luar direktori root tempat pembongkaran dilakukan, sejauh hak akses saat ini memungkinkan. Masalah memungkinkan untuk mengatur eksekusi kode arbitrer pada sistem, misalnya, dengan menambahkan perintah ke ~/.bashrc atau ~/.profile ketika operasi dilakukan oleh pengguna yang tidak memiliki hak istimewa, atau dengan mengganti file sistem saat dijalankan sebagai akar.

Bahaya kerentanan diperparah oleh fakta bahwa kode bermasalah digunakan di manajer paket npm saat melakukan operasi dengan paket npm, yang memungkinkan untuk mengatur serangan terhadap pengguna dengan menempatkan paket npm yang dirancang khusus di repositori, pemrosesan yang akan mengeksekusi kode penyerang pada sistem. Serangan ini mungkin terjadi bahkan ketika paket diinstal dalam mode "-ignore-scripts", yang menonaktifkan eksekusi skrip bawaan. Secara total, npm memengaruhi empat kerentanan (CVE-2021-32804, CVE-2021-37713, CVE-2021-39134 dan CVE-2021-39135) dari tujuh kerentanan. Dua masalah pertama berkaitan dengan paket tar, dan dua masalah lainnya berkaitan dengan paket @npmcli/arborist.

Kerentanan paling berbahaya, CVE-2021-32804, disebabkan oleh fakta bahwa ketika menghapus jalur absolut yang ditentukan dalam arsip tar, karakter β€œ/” berulang diproses secara tidak benarβ€”hanya karakter pertama yang dihapus, sedangkan sisanya dibiarkan. Misalnya, jalur "/home/user/.bashrc" akan diubah menjadi "home/user/.bashrc" dan jalur "//home/user/.bashrc" menjadi "/home/user/.bashrc". Kerentanan kedua, CVE-2021-37713, hanya muncul di platform Windows dan dikaitkan dengan pembersihan jalur relatif yang salah yang mencakup karakter drive yang tidak dibatasi (β€œC:some\path”) dan urutan untuk kembali ke direktori sebelumnya ( β€œC:../foo”) .

Kerentanan CVE-2021-39134 dan CVE-2021-39135 khusus untuk modul @npmcli/arborist. Masalah pertama hanya muncul pada sistem yang tidak membedakan huruf besar-kecil dalam sistem file (macOS dan Windows), dan memungkinkan Anda untuk menulis file ke bagian mana pun dari sistem file dengan menentukan dua modul '"foo" di antara dependensi : "file:/some/path"' dan ' FOO: "file:foo.tgz"', pemrosesan yang akan menyebabkan penghapusan konten direktori /some/path dan menulis konten foo.tgz ke dalamnya. Masalah kedua memungkinkan file ditimpa melalui manipulasi tautan simbolik.

Kerentanan telah diatasi dalam rilis Node.js 12.22.6 dan 14.17.6, npm CLI 6.14.15 dan 7.21.0, dan rilis paket tar individual 4.4.19, 5.0.11, dan 6.1.10. Setelah menerima informasi tentang masalah tersebut sebagai bagian dari inisiatif β€œbug bounty”, GitHub membayar para peneliti sebesar $14500 dan memindai isi repositori, yang tidak mengungkapkan upaya untuk mengeksploitasi kerentanan. Untuk melindungi dari masalah ini, GitHub juga telah melarang penerbitan paket NPM yang menyertakan tautan simbolik, tautan keras, dan jalur absolut ke repositori.

Sumber: opennet.ru

Tambah komentar