270 мянган төсөлд ашигласан зангилаа сүлжээний NPM багц дахь эмзэг байдал

Долоо хоногт 3 сая орчим таталттай, GitHub дээрх 270 мянга гаруй төслөөс хамааралтай байдлаар ашиглагддаг node-netmask NPM багц нь сүлжээний маск ашигладаг шалгалтыг давах боломжийг олгодог эмзэг талтай (CVE-2021-28918) хаягийн мужид тохиолдсон тохиолдлыг тодорхойлох эсвэл шүүх. Node-netmask 2.0.0 хувилбарыг гаргахад асуудал шийдэгдсэн.

Энэ эмзэг байдал нь гадаад IP хаягийг дотоод сүлжээний хаяг гэж үзэх, мөн эсрэгээр нь зангилааны сүлжээний модулийг ашиглан SSRF (Сервер талын хүсэлтийг хуурамчаар үйлдэх), RFI хийх тодорхой логикоор ашиглах боломжийг олгодог. (Алсын файл оруулах) ба LFI (Local File Inclusion) халдлагууд ) дотоод сүлжээн дэх нөөцөд хандах, гадаад эсвэл дотоод файлуудыг гүйцэтгэх гинжин хэлхээнд оруулах. Асуудал нь тодорхойлолтын дагуу тэгээр эхэлсэн хаягийн мөрийн утгуудыг наймны тоо гэж тайлбарлах ёстой боловч зангилааны сүлжээний маск модуль үүнийг анхаарч үздэггүй бөгөөд тэдгээрийг аравтын тоо гэж үздэг.

Жишээлбэл, халдагчид "0177.0.0.1"-д тохирох "127.0.0.1" утгыг зааж өгснөөр локал нөөцийг хүсэх боломжтой боловч "зангилаа-сүлжээний маск" модуль нь null утгыг устгаж, 0177.0.0.1"-г " гэж үзэх болно. 177.0.0.1" гэж заасан бөгөөд энэ нь програмд ​​нэвтрэх дүрмийг үнэлэхдээ "127.0.0.1"-ээр танихыг тодорхойлох боломжгүй юм. Үүний нэгэн адил халдагчид "0127.0.0.1" хаягийг зааж өгч болох бөгөөд энэ нь "87.0.0.1"-тэй ижил байх ёстой боловч "зангилаа-сүлжээний маск" модульд "127.0.0.1" гэж тооцогдоно. Үүний нэгэн адил та "012.0.0.1" ("10.0.0.1"-тэй дүйцэхүйц) зэрэг утгыг зааж өгснөөр дотоод сүлжээний хаяг руу нэвтрэх шалгалтыг хуурч болно, гэхдээ шалгалтын явцад 12.0.0.1 гэж боловсруулагдана).

Асуудлыг тодорхойлсон судлаачид энэ асуудлыг сүйрлийн гэж нэрлэж, хэд хэдэн халдлагын хувилбаруудыг санал болгодог боловч ихэнх нь таамаглалтай харагдаж байна. Жишээлбэл, энэ нь оролтын хүсэлтийн параметрүүд эсвэл өгөгдөлд тулгуурлан эх сурвалжийг хүсэх гадаад холболтыг бий болгодог Node.js-д суурилсан програм руу халдах боломжийн талаар ярьдаг боловч програмыг тусгайлан нэрлэсэн эсвэл дэлгэрэнгүй заагаагүй байна. Оруулсан IP хаягууд дээр тулгуурлан нөөцийг ачаалдаг программуудыг олж мэдсэн ч дотоод сүлжээнд холбогдохгүйгээр, эсвэл "толь" IP хаягуудыг хянахгүйгээр энэ эмзэг байдлыг бодит байдалд хэрхэн ашиглах нь тодорхойгүй байна.

Судлаачид зөвхөн 87.0.0.1 (Telecom Italia) болон 0177.0.0.1 (Brasil Telecom) эзэмшигчид 127.0.0.1 хүртэлх хандалтын хязгаарлалтыг тойрч гарах боломжтой гэж таамаглаж байна. Илүү бодитой хувилбар бол янз бүрийн програмын талын блокийн жагсаалтыг тойрч гарахын тулд эмзэг байдлыг ашиглах явдал юм. Энэ асуудлыг NPM модулийн "private-ip" дахь дотоод сүлжээний хүрээний тодорхойлолтыг хуваалцахад ашиглаж болно.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх