CVE-2026-54612
WysokieCVSS 8.8Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 41 - wyżej niż 41% wszystkich znanych CVE
Streszczenie
W systemie CMS Vvveb od wersji 1.0.0 do 1.0.8.5 funkcja saveGlobalElements() łączy kontrolowaną przez atakującego część ścieżki z katalogiem motywu, co pozwala na path traversal. Uwierzytelniony użytkownik z domyślną rolą Editor może zapisać dowolną treść PHP poza katalogiem motywu, co umożliwia umieszczenie trwałego webshella.
Ocena ryzyka
Atakujący może uzyskać zdalne wykonanie kodu w kontekście serwera WWW, co prowadzi do naruszenia poufności, integralności i dostępności aplikacji. Możliwe jest trwałe przejęcie kontroli nad systemem.
Rekomendacja
Zaktualizuj Vvveb do wersji 1.0.8.5 lub nowszej. Ogranicz uprawnienia edytorów i zweryfikuj, czy w katalogach aplikacji nie ma nieautoryzowanych plików PHP.
Inne podatności w Vvveb
Zobacz wszystkie- CVE-2026-112905Krytyczne
W Vvveb przed wersją 1.0.8.7 uwierzytelniony IDOR na endpoincie admin/auth-token pozwala dowolnemu administratorowi odczytać i nadpisać tokeny API innego administratora. Podatność została załatana w wersji 1.0.8.7.
- CVE-2026-110799Krytyczne
W Vvveb przed wersją 1.0.8.7 funkcjonalność resetowania hasła jest podatna na ominięcie uwierzytelniania z powodu niewystarczającej walidacji parametrów GET user i token. Podatność została załatana w wersji 1.0.8.7.
- CVE-2026-41930Krytyczne
Vvveb przed wersją 1.0.8.2 zawiera podatność na twardo zakodowane dane uwierzytelniające w konfiguracji docker-compose-apache.yaml, co pozwala nieautoryzowanym atakującym uzyskać dostęp do kontenera phpMyAdmin z prekonfigurowanymi danymi bazy danych.
- CVE-2026-39918Krytyczne
Vvveb przed wersją 1.0.8.1 zawiera podatność na wstrzykiwanie kodu w punkcie końcowym instalacji, gdzie parametr POST subdir jest zapisywany bez oczyszczania do pliku konfiguracyjnego env.php. Atakujący mogą wstrzyknąć dowolny kod PHP, wychodząc z kontekstu ciągu znaków w instrukcji define, co umożliwia nieuwierzytelnione zdalne wykonanie kodu jako użytkownik serwera WWW.
- CVE-2026-112904Wysokie
Vvveb w wersjach 1.0.8.6 i wcześniejszych ma funkcje nextRestore() i nextBackup() w kontrolerze kopii zapasowych, które przyjmują parametr GET file i konkatenują go bezpośrednio do DIR_BACKUP bez wywołania sanitizeFileName(). Umożliwia to uwierzytelnionemu administratorowi odczyt dowolnych plików na serwerze oraz zapis zawartości zrzutu SQL w dowolnych lokalizacjach.
- CVE-2026-55232Wysokie
Vvveb przed wersją 1.0.8.6 zawiera podatność SSRF, ponieważ walidacja adresów IP obsługuje tylko IPv4, a nie IPv6. Uwierzytelniony użytkownik panelu administracyjnego może wykorzystać proxy oEmbed do odczytu wewnętrznych usług i metadanych chmury, w tym danych uwierzytelniających IAM.
- CVE-2026-55231Wysokie
Vvveb przed wersją 1.0.8.6 ma wadliwy mechanizm czyszczenia ścieżek, który pozwala uwierzytelnionemu użytkownikowi z uprawnieniami do kopii zapasowych na odczyt i usunięcie dowolnych plików na serwerze. Można odzyskać dane uwierzytelniające bazy danych, czytać pliki systemowe i usunąć config/db.php, co umożliwia pełne przejęcie strony.
- CVE-2026-55230Wysokie
Vvveb przed wersją 1.0.8.6 ma sanitizer HTML, który nie usuwa atrybutów obsługi zdarzeń, gdy tag zawiera znak większości w wartości atrybutu w cudzysłowie. Autor treści o niskich uprawnieniach może przechowywać złośliwy kod JavaScript, który wykonuje się w przeglądarkach odwiedzających i administratorów, co może prowadzić do przejęcia konta administratora.
- CVE-2026-54613Średnie
W Vvveb przed wersją 1.0.8.5 funkcja getThemeFolder() w admin/controller/editor/revisions.php zwraca kontrolowany przez atakującego parametr theme bez sanityzacji, a backupFolder() łączy go z DIR_THEMES przed operacjami editor/revisions/load lub editor/revisions/delete na nazwanym pliku .html. sanitizeBackupFileName() usuwa znaki przejścia tylko z osobnego parametru pliku i nie chroni składnika katalogu motywu. Uwierzytelniony użytkownik z domyślną rolą Editor i uprawnieniem editor/* może przesłać sekwencje przejścia, które przekierowują file_get_contents() lub unlink() do osiągalnego podkatalogu kopii zapasowej poza katalogiem głównym sieci.
- CVE-2026-54507Wysokie
W Vvveb przed wersją 1.0.8.5 handler oEmbedProxy() przyjmuje kontrolowany przez atakującego parametr url i przekazuje go do getUrl(), podczas gdy validateUrl() sprawdza tylko nazwę hosta, nie jego rozwiązane adresy. Uwierzytelniony użytkownik panelu admina może wywołać żądanie do adresów prywatnych, loopback, link-local lub zarezerwowanych.
Oryginalny opis (angielski, źródło NVD)
Vvveb is a powerful and easy to use CMS with page builder to build websites, blogs or ecommerce stores. From 1.0.0 until 1.0.8.5, saveGlobalElements() in admin/controller/editor/global-trait.php concatenates the attacker-controlled file portion of data-v-save-global to the active theme directory before loadHTMLFile() and file_put_contents() operate on it. An authenticated user with the default Editor role and editor/* permission can submit crafted HTML to module=editor/editor&action=save and traverse to an existing writable PHP file outside the theme directory. If the target is web-accessible, editor-controlled PHP content executes in the web server context; a shipped public/vadmin/index.php entrypoint can be used as an execution trampoline rather than requiring a test-only file. This can permit persistent webshell placement and compromise application confidentiality, integrity, and availability. This issue is fixed in version 1.0.8.5.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

