Π ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°Ρ ΡΠ·ΡΠΊΠΎΠ² Rust ΠΈ Go Π²ΡΡΠ²Π»Π΅Π½Ρ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ IP-Π°Π΄ΡΠ΅ΡΠΎΠ² Ρ Π²ΠΎΡΡΠΌΠΈΡΠΈΡΠ½ΡΠΌΠΈ ΡΠΈΡΡΠ°ΠΌΠΈ Π² ΡΡΠ½ΠΊΡΠΈΡΡ ΡΠ°Π·Π±ΠΎΡΠ° Π°Π΄ΡΠ΅ΡΠ°. Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΎΠ±ΠΎΠΉΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΡ Π°Π΄ΡΠ΅ΡΠΎΠ² Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ , Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ Π°Π΄ΡΠ΅ΡΠ°ΠΌ loopback-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° (127.x.x.x) ΠΈΠ»ΠΈ ΠΈΠ½ΡΡΠ°Π½Π΅Ρ-ΠΏΠΎΠ΄ΡΠ΅ΡΡΠΌ ΠΏΡΠΈ ΡΠΎΠ²Π΅ΡΡΠ΅Π½ΠΈΠΈ Π°ΡΠ°ΠΊ 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 (Server-side request forgery), RFI (Remote File Inclusion) ΠΈ LFI (Local File Inclusion). Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡΡ ΡΡΡΡΠ°Π½Π΅Π½Π° Π² Π²Π΅ΡΠΊΠ΅ 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