CVE-2026-19513
WysokieCVSS 8.1Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 41 - wyżej niż 41% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Podatność może umożliwić zdalne wykonanie kodu na serwerze, co prowadzi do pełnej kompromitacji witryny WordPress, lub w przypadku XSS – do kradzieży danych użytkowników.
Rekomendacja
Zaktualizuj plugin Gravity Forms do najnowszej wersji, a jeśli to niemożliwe, wyłącz opcję wielu plików w formularzach publicznych lub zastosuj dodatkowe zabezpieczenia, takie jak blokowanie wykonywania PHP w katalogu tymczasowym.
Inne podatności w Gravity Forms
Zobacz wszystkie- 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-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-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 Arbitrary File Upload in all versions up to, and including, 3.0.2. This is due to insufficient validation of multi-file upload chunk state in the `GFAsyncUpload::upload()` function, where public form state URL hashes can be reused as chunk continuation hashes and attacker-controlled temporary filenames are accepted before sanitization. This makes it possible for unauthenticated attackers, when a public form contains a File Upload field with Multiple Files enabled, to upload a valid PNG/PDF polyglot to an attacker-selected public `.php` or `.html` filename in the Gravity Forms temporary upload directory. This can lead to remote code execution on WordPress systems that use NGINX or other non `.htaccess` respecting web servers. NOTE: During installation and activation, the Gravity Forms plugin places a `.htaccess` file in this directory, which prevents this vulnerability from being exploited despite the PHP file being written to the temporary upload directory. In these cases where PHP execution is blocked, attacker-written HTML can result in stored same-origin cross-site scripting if a victim visits the generated file URL.

