Pakiet traceroute (node-traceroute) w wersji do 1.0.0 włącznie dla Node.js umożliwia zdalne wstrzyknięcie poleceń systemowych poprzez parametr host. Podatność ma ocenę CVSS 10.0, co czyni ją krytycznym zagrożeniem dla aplikacji korzystających z tego pakietu.
▸ Pokaż oryginał (EN)
The traceroute (aka node-traceroute) package through 1.0.0 for Node.js allows remote command injection via the host parameter. This occurs because the Child.exec() method, which is considered to be not entirely safe, is used. In particular, an OS command can be placed after a newline character.
Pakiet używa metody Child.exec() do wykonywania poleceń systemowych, która jest uznawana za niebezpieczną, gdy przekazywane są do niej dane wejściowe od użytkownika bez odpowiedniej sanityzacji. Atakujący może przekazać w parametrze host specjalnie spreparowaną wartość zawierającą znak nowej linii, po którym umieszczane jest dowolne polecenie systemu operacyjnego. Polecenie to zostaje następnie wykonane przez system z uprawnieniami procesu Node.js.
Atakujący zdalny, nieuwierzytelniony może wykonać dowolne polecenia systemu operacyjnego na serwerze (RCE), co prowadzi do pełnego przejęcia kontroli nad systemem, wycieku danych oraz potencjalnego naruszenia integralności środowiska.
Należy zaktualizować pakiet do wersji zawierającej poprawkę dostępną w repozytorium projektu (commit b99ee024a01a40d3d20a92ad3769cc78a3f6386f). W przypadku braku możliwości natychmiastowej aktualizacji należy ograniczyć dostęp do funkcjonalności korzystającej z tego pakietu oraz rygorystycznie walidować i sanityzować parametr host przed przekazaniem go do biblioteki.
Pakiet traceroute (node-traceroute) dla Node.js w wersjach do 1.0.0 włącznie
Podatność została opisana publicznie w artykule na platformie Medium, co zwiększa ryzyko jej wykorzystania. Wektor ataku jest w pełni zdalny, nie wymaga uwierzytelnienia ani interakcji użytkownika.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:LTraceroute Project Traceroute
APPTraceroute Project≤ 1.0.0