Уязвимост Π² NPM ΠΏΠ°ΠΊΠ΅Ρ‚Π° node-netmask, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π² 270 хиляди ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

ΠŸΠ°ΠΊΠ΅Ρ‚ΡŠΡ‚ node-netmask NPM, ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠΌΠ° ΠΎΠΊΠΎΠ»ΠΎ 3 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° изтСгляния Π½Π° сСдмица ΠΈ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ°Ρ‚ΠΎ зависимост ΠΎΡ‚ ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ 270 хиляди ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π° GitHub, ΠΈΠΌΠ° уязвимост (CVE-2021-28918), която ΠΌΡƒ позволява Π΄Π° Π·Π°ΠΎΠ±ΠΈΠΊΠΎΠ»ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΌΡ€Π΅ΠΆΠΎΠ²Π°Ρ‚Π° маска Π·Π° опрСдСлянС Π½Π° Π²ΡŠΠ·Π½ΠΈΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° адрСсни Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΈ ΠΈΠ»ΠΈ Π·Π° Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Π½Π΅. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ Π΅ Ρ€Π΅ΡˆΠ΅Π½ Π² ΠΈΠ·Π΄Π°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° node-netmask 2.0.0.

Уязвимостта позволява Π΄Π° сС Ρ‚Ρ€Π΅Ρ‚ΠΈΡ€Π° външСн IP адрСс ΠΊΠ°Ρ‚ΠΎ адрСс ΠΎΡ‚ Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° ΠΌΡ€Π΅ΠΆΠ° ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ, ΠΈ с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° Π»ΠΎΠ³ΠΈΠΊΠ° Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΌΠΎΠ΄ΡƒΠ»Π° node-netmask Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π·Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° SSRF (Server-side request forgery), RFI (ΠžΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅) ΠΈ LFI (Π°Ρ‚Π°ΠΊΠΈ Π·Π° Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π½Π° Π»ΠΎΠΊΠ°Π»Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅) Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ рСсурси във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° ΠΌΡ€Π΅ΠΆΠ° ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π½Π° външни ΠΈΠ»ΠΈ Π»ΠΎΠΊΠ°Π»Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ във Π²Π΅Ρ€ΠΈΠ³Π°Ρ‚Π° Π·Π° изпълнСниС. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ Π΅, Ρ‡Π΅ спорСд спСцификацията, стойноститС Π½Π° адрСсния Π½ΠΈΠ·, Π·Π°ΠΏΠΎΡ‡Π²Π°Ρ‰ΠΈ с Π½ΡƒΠ»Π°, трябва Π΄Π° сС ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€Π°Ρ‚ ΠΊΠ°Ρ‚ΠΎ осмични числа, Π½ΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŠΡ‚ Π·Π° ΠΌΡ€Π΅ΠΆΠΎΠ²Π° маска Π½Π° възСл Π½Π΅ Π²Π·Π΅ΠΌΠ° Ρ‚ΠΎΠ²Π° ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ ΠΈ Π³ΠΈ Ρ‚Ρ€Π΅Ρ‚ΠΈΡ€Π° ΠΊΠ°Ρ‚ΠΎ дСсСтични числа.

НапримСр, Π°Ρ‚Π°ΠΊΡƒΠ²Π°Ρ‰ ΠΌΠΎΠΆΠ΅ Π΄Π° поиска Π»ΠΎΠΊΠ°Π»Π΅Π½ рСсурс, ΠΊΠ°Ρ‚ΠΎ посочи стойността "0177.0.0.1", която ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π° Π½Π° "127.0.0.1", Π½ΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŠΡ‚ "node-netmask" Ρ‰Π΅ ΠΎΡ‚Ρ…Π²ΡŠΡ€Π»ΠΈ Π½ΡƒΠ»Π°Ρ‚Π° ΠΈ Ρ‰Π΅ Ρ‚Ρ€Π΅Ρ‚ΠΈΡ€Π° 0177.0.0.1β€³ ΠΊΠ°Ρ‚ΠΎ " 177.0.0.1", ΠΊΠΎΠ΅Ρ‚ΠΎ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС оцСняват ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ, няма Π΄Π° Π΅ възмоТно Π΄Π° сС ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈ идСнтичността с β€ž127.0.0.1". По ΡΡŠΡ‰ΠΈΡ Π½Π°Ρ‡ΠΈΠ½ атакуващият ΠΌΠΎΠΆΠ΅ Π΄Π° посочи адрСса β€ž0127.0.0.1β€œ, ΠΊΠΎΠΉΡ‚ΠΎ трябва Π΄Π° бъдС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π΅Π½ с β€ž87.0.0.1β€œ, Π½ΠΎ Ρ‰Π΅ бъдС Ρ‚Ρ€Π΅Ρ‚ΠΈΡ€Π°Π½ ΠΊΠ°Ρ‚ΠΎ β€ž127.0.0.1β€œ Π² ΠΌΠΎΠ΄ΡƒΠ»Π° β€žnode-netmaskβ€œ. По ΡΡŠΡ‰ΠΈΡ Π½Π°Ρ‡ΠΈΠ½ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΌΠ°ΠΌΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°Ρ‚Π° Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ ΠΈΠ½Ρ‚Ρ€Π°Π½Π΅Ρ‚ адрСси, ΠΊΠ°Ρ‚ΠΎ посочитС стойности ΠΊΠ°Ρ‚ΠΎ β€ž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

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€