CVE-2026-103039
KrytyczneCVSS 9.8Streszczenie
Wtyczka Gravity Forms dla WordPressa w wersjach do 3.1.2 włącznie jest podatna na wstrzyknięcie obiektu PHP poprzez pole niestandardowe wpisu typu List. Wartość pola jest przekazywana do globalnej funkcji maybe_unserialize() bez ograniczeń zamiast do utwardzonej GFCommon::maybe_unserialize(), co pozwala nieuwierzytelnionemu atakującemu wstrzyknąć obiekt PHP do metadanych wpisu. Jeśli w innym pluginie lub motywie istnieje łańcuch gadgetów, może to prowadzić do zdalnego wykonania kodu.
Ocena ryzyka
W przypadku obecności łańcucha gadgetów w dodatkowych wtyczkach lub motywach atakujący może uzyskać zdalne wykonanie kodu, a w scenariuszu z mapowaniem pola na _wp_page_template WordPress sam dostarcza łańcuch prowadzący do RCE na niektórych hostach.
Rekomendacja
Zaktualizuj wtyczkę Gravity Forms do wersji nowszej niż 3.1.2 i przejrzyj inne wtyczki oraz motywy pod kątem znanych łańcuchów gadgetów PHP.
Inne podatności w Gravity Forms
Zobacz wszystkie- CVE-2026-97645Wysokie
Wtyczka Gravity Forms dla WordPressa w wersjach do 3.1.2 włącznie jest podatna na przechowywane cross-site scripting poprzez pole List z powodu niewystarczającej sanityzacji danych wejściowych i escapowania danych wyjściowych. Nieuwierzytelniony atakujący może wstrzyknąć dowolne skrypty do stron, które wykonają się, gdy użytkownik odwiedzi zainfekowaną stronę. Skuteczne wykorzystanie wymaga kliknięcia przez administratora wstrzykniętego linku w widoku szczegółów wpisu i potwierdzenia okna dialogowego.
- CVE-2026-90437Wysokie
Wtyczka Gravity Forms dla WordPressa w wersjach do 3.1.1 włącznie jest podatna na przechowywane cross-site scripting poprzez wartości pól Post Excerpt, Post Custom Field oraz Rich-Text Paragraph z powodu niewystarczającej sanityzacji i escapowania. Nieuwierzytelniony atakujący może wstrzyknąć dowolne skrypty do stron, które wykonają się przy ich odwiedzeniu. Pola te pozwalają na przesyłanie surowego HTML przez allow_html(), a encja zakodowana w atrybucie data-dialog-confirm omija wp_kses_post() przy zapisie, ale jest dekodowana do wykonywalnego znacznika przez insertAdjacentHTML() w JavaScriptzie administratora.
- CVE-2026-84434Krytyczne
Wtyczka Gravity Forms dla WordPressa (wersje do 3.1.0.4 włącznie) pozwala na dowolne przesyłanie plików przez funkcję upload_file. Rozbieżność między walidacją a zapisem plików pozwala ukrytym polom przesyłania ominąć walidację rozszerzeń. Nieuwierzytelniony atakujący może przesłać pliki wykonywalne, co umożliwia zdalne wykonanie kodu.
- CVE-2026-48866Krytyczne
Podatność na Path Traversal w Gravity Forms od Rocketgenius Inc. pozwala na dostęp do plików poza dozwolonym katalogiem. Problem dotyczy wersji do 2.10.0.1 włącznie.
- CVE-2026-97296Wysokie
Wtyczka Gravity Forms firmy Rocketgenius, Inc. jest podatna na deserializację niezaufanych danych, co umożliwia wstrzyknięcie obiektu. Problem dotyczy wersji przed 3.1.1.
- CVE-2026-16649Wysokie
Wtyczka Gravity Forms dla WordPressa jest podatna na przechowywany atak XSS przez wartość pola treści wpisu we wszystkich wersjach do 2.10.5 włącznie, z powodu niewystarczającej sanityzacji wejścia i ucieczki wyjścia. Umożliwia to nieuwierzytelnionym atakującym wstrzyknięcie dowolnych skryptów internetowych na strony, które wykonają się, gdy użytkownik uzyska dostęp do zainfekowanej strony. Exploit przetrwa sanityzację przy zapisie, ponieważ wp_kses_post pozwala na wymagane tagi i atrybuty HTML, a skrypt tooltip po stronie klienta ponownie analizuje wartość aria-label zdekodowaną przez przeglądarkę jako innerHTML, usuwając tylko elementy script, pozostawiając atrybuty onerror i inne procedury obsługi zdarzeń w pełni nienaruszone i wykonywalne.
- CVE-2026-19513Wysokie
Podatność na dowolne przesyłanie plików w pluginie Gravity Forms dla WordPressa (wersje do 3.0.2 włącznie). Niewystarczająca walidacja stanu fragmentów przesyłania wieloplikowego w funkcji GFAsyncUpload::upload() pozwala nieuwierzytelnionym atakującym, gdy formularz publiczny zawiera pole przesyłania plików z włączoną opcją wielu plików, na przesłanie pliku polyglot PNG/PDF pod wybraną przez atakującego publiczną nazwę .php lub .html w katalogu tymczasowym Gravity Forms. Może to prowadzić do zdalnego wykonania kodu na serwerach NGINX lub innych nie respektujących .htaccess. W przypadku zablokowania wykonywania PHP, atakujący może wykorzystać HTML do przechowywanego XSS.
- CVE-2026-12997Wysokie
Wtyczka Gravity Forms dla WordPressa jest podatna na Directory Traversal we wszystkich wersjach do 2.10.4 włącznie poprzez parametr 'gform_uploaded_files'. Niezalogowani atakujący mogą odczytać dowolne pliki na serwerze, co może ujawnić wrażliwe informacje.
- CVE-2026-4406Średnie
Wtyczka Gravity Forms dla WordPress w wersjach do 2.9.30 włącznie jest podatna na Reflected XSS przez parametr `form_ids` w akcji AJAX `gform_get_config`. Wynika to z metody `GFCommon::send_json()`, która wypisuje dane JSON w komentarzach HTML z nagłówkiem `Content-Type: text/html` zamiast `application/json`. Funkcja `wp_json_encode()` nie koduje znaków < i > w wartościach JSON, co pozwala na wstrzyknięcie znaczników HTML/script. Nonce `config_nonce` jest generowany z `wp_create_nonce('gform_config_ajax')` i jest publicznie osadzony na każdej stronie z formularzem Gravity Forms, co czyni go identycznym dla wszystkich nieuwierzytelnionych odwiedzających w ciągu 12-godzinnego ticka nonce. Umożliwia to nieuwierzytelnionym atakującym wstrzyknięcie dowolnych skryptów webowych na stronach, jeśli uda im się nakłonić użytkownika do kliknięcia linku. Podatność nie działa przeciwko uwierzytelnionym użytkownikom.
- CVE-2026-4394Średnie
Wtyczka Gravity Forms dla WordPress do wersji 2.9.30 włącznie ma podatność na Stored XSS w polu karty kredytowej (podpole 'Card Type'). Metoda get_value_entry_detail() wyświetla wartość bez eskejpowania, a get_value_save_entry() akceptuje niesanitowane dane wejściowe. Pole Card Type nie jest renderowane na froncie, ale backend akceptuje je z żądania POST. Nieuwierzytelnieni atakujący mogą wstrzyknąć dowolne skrypty, które wykonują się podczas przeglądania wpisu w panelu administratora.
Oryginalny opis (angielski, źródło NVD)
The Gravity Forms plugin for WordPress is vulnerable to PHP Object Injection in all versions up to, and including, 3.1.2 via a Post Custom Field whose input type is List. This is due to GFFormsModel::create_post() passing the submitted value to WordPress' unrestricted global maybe_unserialize() rather than the plugin's own hardened GFCommon::maybe_unserialize(), which was added in 3.1.1 and passes allowed_classes => false precisely to prevent object instantiation. Where the field has a content template enabled, the submitted row reaches that call verbatim. This makes it possible for unauthenticated attackers to inject a PHP object into post meta. No PHP Object Injection gadget chain is present in the plugin itself; however, if a gadget chain is present via an additional plugin or theme, it could allow the attacker to perform actions such as remote code execution. Where the custom field is mapped to the protected _wp_page_template meta key, WordPress itself supplies the chain: validate_file() accepts non-scalars, WP_Theme::__toString() then resolves an attacker-controlled path, and on hosts with a readable PEAR install and register_argc_argv enabled this yields remote code execution.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

