Cacti przed wersją 1.2.27 zawiera podatność typu type juggling w funkcji weryfikacji hasła, umożliwiającą obejście uwierzytelnienia. Błąd wynika z użycia luźnego operatora porównania PHP (`==` zamiast `===`) przy sprawdzaniu skrótu MD5 hasła, co może pozwolić atakującemu na uzyskanie nieautoryzowanego dostępu do systemu.
▸ Pokaż oryginał (EN)
Cacti provides an operational monitoring and fault management framework. Prior to version 1.2.27, Cacti calls `compat_password_hash` when users set their password. `compat_password_hash` use `password_hash` if there is it, else use `md5`. When verifying password, it calls `compat_password_verify`. In `compat_password_verify`, `password_verify` is called if there is it, else use `md5`. `password_verify` and `password_hash` are supported on PHP < 5.5.0, following PHP manual. The vulnerability is in `compat_password_verify`. Md5-hashed user input is compared with correct password in database by `$md5 == $hash`. It is a loose comparison, not `===`. It is a type juggling vulnerability. Version 1.2.27 contains a patch for the issue.
W funkcji `compat_password_verify` skrót MD5 wprowadzonego przez użytkownika hasła jest porównywany z hasłem przechowywanym w bazie danych za pomocą luźnego operatora `==` zamiast ścisłego `===`. W PHP luźne porównanie ciągów znaków może prowadzić do nieoczekiwanych wyników, gdy wartości dają się zinterpretować jako liczby zmiennoprzecinkowe (np. ciągi w notacji naukowej typu `0e...` są porównywane jako zero). Atakujący może dostarczyć spreparowane hasło, którego skrót MD5 spełni warunek luźnego porównania z hasłem ofiary. Błąd dotyczy ścieżki weryfikacji używającej MD5, aktywowanej na PHP < 5.5.0.
Atakujący zdalny, nieuwierzytelniony może ominąć mechanizm logowania i uzyskać nieautoryzowany dostęp do konta użytkownika lub administratora w aplikacji Cacti, co prowadzi do naruszenia poufności i integralności danych.
Należy zaktualizować Cacti do wersji 1.2.27 lub nowszej, która zawiera patch eliminujący podatność poprzez zastąpienie luźnego porównania `==` ścisłym `===` w funkcji `compat_password_verify`
Cacti w wersjach przed 1.2.27 oraz pakiety Cacti dla Fedora i Debian korzystające z podatnych wersji
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:NCacti
APPCacti< 1.2.27Fedora Project Fedora
OSFedoraproject39
Powiązane podatności
PHP CGI argument injection – RCE na Windows przez mechanizm Best-Fit
Type Confusion w V8 (Google Chrome) — RCE przez spreparowaną stronę HTML
Type Confusion w silniku V8 Chrome — zdalne wykonanie kodu (RCE)
Use-after-free w Google Chrome Visuals umożliwiający ucieczkę z sandbox
Integer overflow w Skia w Google Chrome — sandbox escape