Уязвимост Π² ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½Π° Π΅Π·ΠΈΡ†ΠΈΡ‚Π΅ Rust and Go, която Π²ΠΈ позволява Π΄Π° Π·Π°ΠΎΠ±ΠΈΠΊΠΎΠ»ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°Ρ‚Π° Π½Π° IP адрСс

Π’ стандартнитС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½Π° Π΅Π·ΠΈΡ†ΠΈΡ‚Π΅ Rust and Go са ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½ΠΈ уязвимости, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° IP адрСси с осмични Ρ†ΠΈΡ„Ρ€ΠΈ във Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ Π·Π° Π°Π½Π°Π»ΠΈΠ· Π½Π° адрСси. УязвимоститС позволяват Π΄Π° сС заобиколят ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈΡ‚Π΅ Π·Π° Π²Π°Π»ΠΈΠ΄Π½ΠΈ адрСси Π² прилоТСнията, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π° Π΄Π° сС ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ адрСси Π½Π° loopback интСрфСйс (127.xxx) ΠΈΠ»ΠΈ ΠΈΠ½Ρ‚Ρ€Π°Π½Π΅Ρ‚ ΠΏΠΎΠ΄ΠΌΡ€Π΅ΠΆΠΈ ΠΏΡ€ΠΈ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° SSRF (Server-side request forgery) Π°Ρ‚Π°ΠΊΠΈ. УязвимоститС ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π°Ρ‚ Ρ†ΠΈΠΊΡŠΠ»Π° ΠΎΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½ΠΈ ΠΏΠΎ-Ρ€Π°Π½ΠΎ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈΡ‚Π΅ node-netmask (JavaScript, CVE-2021-28918, CVE-2021-29418), private-ip (JavaScript, CVE-2020-28360), ipaddress (Python, CVE- 2021-29921), Data::Validate::IP (Perl, CVE-2021-29662) ΠΈ Net::Netmask (Perl, CVE-2021-29424).

Π‘ΠΏΠΎΡ€Π΅Π΄ спСцификацията стойноститС Π½Π° Π½ΠΈΠ·Π° Π½Π° IP адрСс, Π·Π°ΠΏΠΎΡ‡Π²Π°Ρ‰ΠΈ с Π½ΡƒΠ»Π°, трябва Π΄Π° сС ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€Π°Ρ‚ ΠΊΠ°Ρ‚ΠΎ осмични числа, Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½Π΅ Π²Π·Π΅ΠΌΠ°Ρ‚ Ρ‚ΠΎΠ²Π° ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ ΠΈ просто ΠΈΠ·Ρ…Π²ΡŠΡ€Π»ΡΡ‚ Π½ΡƒΠ»Π°Ρ‚Π°, Ρ‚Ρ€Π΅Ρ‚ΠΈΡ€Π°ΠΉΠΊΠΈ стойността ΠΊΠ°Ρ‚ΠΎ дСсСтично число. НапримСр числото 0177 Π² осмична систСма Π΅ Ρ€Π°Π²Π½ΠΎ Π½Π° 127 Π² дСсСтична систСма. НападатСлят ΠΌΠΎΠΆΠ΅ Π΄Π° поиска рСсурс, ΠΊΠ°Ρ‚ΠΎ посочи стойността "0177.0.0.1", която Π² дСсСтична систСма ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π° Π½Π° "127.0.0.1". Ако сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Π°Ρ‚Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ няма Π΄Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ΅, Ρ‡Π΅ Π°Π΄Ρ€Π΅ΡΡŠΡ‚ 0177.0.0.1 Π΅ Π² ΠΏΠΎΠ΄ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° 127.0.0.1/8, Π½ΠΎ Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ ΠΏΡ€ΠΈ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π½Π° заявка ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈ Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ адрСса β€ž0177.0.0.1β€œ, ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‰Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‚ ΠΊΠ°Ρ‚ΠΎ 127.0.0.1. По ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π°Ρ‡ΠΈΠ½ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΌΠ°ΠΌΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°Ρ‚Π° Π½Π° Π΄ΠΎΡΡ‚ΡŠΠΏΠ° Π΄ΠΎ ΠΈΠ½Ρ‚Ρ€Π°Π½Π΅Ρ‚ адрСси, ΠΊΠ°Ρ‚ΠΎ посочитС стойности ΠΊΠ°Ρ‚ΠΎ β€ž012.0.0.1β€œ (Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½ΠΎ Π½Π° β€ž10.0.0.1β€œ).

Π’ Rust стандартната Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° β€žstd::netβ€œ бСшС засСгната ΠΎΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ (CVE-2021-29922). ΠΠ½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Π½Π° IP адрСси Π½Π° Ρ‚Π°Π·ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΎΡ‚Ρ…Π²ΡŠΡ€Π»ΠΈ Π½ΡƒΠ»Π° ΠΏΡ€Π΅Π΄ΠΈ стойноститС Π² адрСса, Π½ΠΎ само Π°ΠΊΠΎ бяха посочСни Π½Π΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ Ρ‚Ρ€ΠΈ Ρ†ΠΈΡ„Ρ€ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ β€ž0177.0.0.1β€œ Ρ‰Π΅ сС Π²ΡŠΠ·ΠΏΡ€ΠΈΠ΅ΠΌΠ΅ ΠΊΠ°Ρ‚ΠΎ Π½Π΅Π²Π°Π»ΠΈΠ΄Π½Π° стойност ΠΈ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»Π΅Π½ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Ρ‰Π΅ бъдС Π²ΡŠΡ€Π½Π°Ρ‚ Π² ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ Π½Π° 010.8.8.8 ΠΈ 127.0.026.1. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ‚Π°, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ std::net::IpAddr, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚ ΡƒΠΊΠ°Π·Π°Π½ΠΈ ΠΎΡ‚ потрСбитСля адрСси, са ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π½ΠΎ ΠΏΠΎΠ΄Π°Ρ‚Π»ΠΈΠ²ΠΈ Π½Π° SSRF (Ρ„Π°Π»ΡˆΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π΅ Π½Π° заявка ΠΎΡ‚ страна Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π°), RFI (Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ Ρ„Π°ΠΉΠ») ΠΈ LFI (Π²ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π½Π° Π»ΠΎΠΊΠ°Π»Π΅Π½ Ρ„Π°ΠΉΠ») Π°Ρ‚Π°ΠΊΠΈ. Уязвимостта бСшС ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½Π° Π² ΠΊΠ»ΠΎΠ½Π° Rust 1.53.0.

Уязвимост Π² ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½Π° Π΅Π·ΠΈΡ†ΠΈΡ‚Π΅ Rust and Go, която Π²ΠΈ позволява Π΄Π° Π·Π°ΠΎΠ±ΠΈΠΊΠΎΠ»ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°Ρ‚Π° Π½Π° IP адрСс

Π’ Go стандартната Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° β€žnetβ€œ Π΅ засСгната (CVE-2021-29923). Π’Π³Ρ€Π°Π΄Π΅Π½Π°Ρ‚Π° функция net.ParseCIDR пропуска Π²ΠΎΠ΄Π΅Ρ‰ΠΈΡ‚Π΅ Π½ΡƒΠ»ΠΈ ΠΏΡ€Π΅Π΄ΠΈ осмичнитС числа, вмСсто Π΄Π° Π³ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°. НапримСр, Π°Ρ‚Π°ΠΊΡƒΠ²Π°Ρ‰ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡ€Π΅Π΄Π°Π΄Π΅ стойността 00000177.0.0.1, която, ΠΊΠΎΠ³Π°Ρ‚ΠΎ бъдС ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π° във функцията net.ParseCIDR(00000177.0.0.1/24), Ρ‰Π΅ бъдС Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° ΠΊΠ°Ρ‚ΠΎ 177.0.0.1/24, Π° Π½Π΅ 127.0.0.1/24. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ сС проявява ΠΈ Π² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Kubernetes. Уязвимостта Π΅ ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½Π° Π² Go вСрсия 1.16.3 ΠΈ Π±Π΅Ρ‚Π° 1.17.

Уязвимост Π² ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½Π° Π΅Π·ΠΈΡ†ΠΈΡ‚Π΅ Rust and Go, която Π²ΠΈ позволява Π΄Π° Π·Π°ΠΎΠ±ΠΈΠΊΠΎΠ»ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°Ρ‚Π° Π½Π° IP адрСс


Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

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