Π ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π½Π° Π΅Π·ΠΈΡΠΈΡΠ΅ Rust ΠΈ Go ΡΠ° ΠΎΡΠΊΡΠΈΡΠΈ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ Π½Π΅ΠΊΠΎΡΠ΅ΠΊΡΠ½Π°ΡΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° IP Π°Π΄ΡΠ΅ΡΠΈ Ρ ΠΎΡΠΌΠΈΡΠ½ΠΈ ΡΠΈΡΡΠΈ Π² ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ Π·Π° Π°Π½Π°Π»ΠΈΠ· Π½Π° Π°Π΄ΡΠ΅ΡΠ°. Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π·Π°ΠΎΠ±ΠΈΠΊΠ°Π»ΡΠ½Π΅ Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈΡΠ΅ Π·Π° Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΈΡΠ΅ Π°Π΄ΡΠ΅ΡΠΈ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π°Π΄ΡΠ΅ΡΠΈΡΠ΅ Π½Π° loopback ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° (127.x.x.x) ΠΈΠ»ΠΈ ΠΈΠ½ΡΡΠ°Π½Π΅Ρ ΠΏΠΎΠ΄ΡΠ΅ΡΠΈΡΠ΅ ΠΏΡΠΈ ΠΈΠ·Π²ΡΡΡΠ²Π°Π½Π΅ Π½Π° Π°ΡΠ°ΠΊΠΈ SSRF (ΡΡΡΠ²ΡΡΠ½Π° Π·Π°ΡΠ²ΠΊΠ° Π·Π° ΡΠ°Π»ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ). Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈΡΠ΅ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π°Ρ ΡΠΈΠΊΡΠ»Π° ΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ, ΠΏΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°Π½ΠΈ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈΡΠ΅ 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.

Π Π΅Π·ΠΈΠΊΠ° 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.


ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
