Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ Π² NPM-ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ node-netmask, примСняСмом Π² 270 тысячах ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…

Π’ NPM-ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ node-netmask, Π½Π°ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌ ΠΎΠΊΠΎΠ»ΠΎ 3 ΠΌΠ»Π½ Π·Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ Π² нСдСлю ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΌ Π² качСствС зависимости Ρƒ Π±ΠΎΠ»Π΅Π΅ 270 тысяч ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π½Π° GitHub, выявлСна ΡƒΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ (CVE-2021-28918), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… сСтСвая маска ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для опрСдСлСния вхоТдСния Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ адрСсов ΠΈΠ»ΠΈ для Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° устранСна Π² выпускС node-netmask 2.0.0.

Π£ΡΠ·Π²ΠΈΠΌΠΎΡΡ‚ΡŒ позволяСт Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ внСшнСго IP-адрСса ΠΊΠ°ΠΊ адрСса ΠΈΠ· Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ сСти ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, Π° ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠ΅ использования модуля node-netmask Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΡΠΎΠ²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ Π°Ρ‚Π°ΠΊΠΈ SSRF (Server-side request forgery),RFI (Remote File Inclusion) ΠΈ LFI (Local File Inclusion) для обращСния ΠΊ рСсурсам Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ сСти ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π² Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ выполнСния Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΈΠ»ΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ². ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² соотвСтствии со спСцификациСй строковыС значСния адрСсов, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅ΡΡ с нуля, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π²ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½Ρ‹Π΅ числа, Π½ΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ «node-netmask» Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ Π΄Π°Π½Π½ΡƒΡŽ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΈΡ… ΠΊΠ°ΠΊ дСсятичныС числа.

НапримСр, Π°Ρ‚Π°ΠΊΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ рСсурс, ΡƒΠΊΠ°Π·Π°Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ «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», Π½ΠΎ Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ «node-netmask» Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½ ΠΊΠ°ΠΊ «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