Strona główna / Blog / Sigma Forms: vulnerable by default

Blog · case study

Critical RCE nie wymaga nawet złej konfiguracji — podatne ustawienie przychodzi w gotowych template’ach: Sigma Forms Pro i problem „vulnerable by default”

W Vulnerability Management często spotykamy podatności opisane jako Requires specific configuration. Taki warunek zwykle obniża priorytet: affected version + unusual configuration = mniejsza exploitable population. CVE-2026-14494 w Sigma Forms Pro pokazuje jednak, że zdanie „wymaga konfiguracji” bywa bardzo mylące.

Podatność rzeczywiście zależy od tego, czy pole uploadu ma skonfigurowane allowed_file_types. Problem: kilka gotowych template'ów dostarczanych przez plugin ma upload bez takich ograniczeń. Wordfence wymienia m.in. Job Application, Support Ticket i Wholesale Application. Użytkownik nie musi więc tworzyć egzotycznej, błędnej konfiguracji — może wybrać gotowy template przygotowany przez producenta, a attack path staje się dostępny by default / by template design.

Co dokładnie dzieje się w pluginie?

Affected: Sigma Forms Pro <= 1.4.5.
CVSS 3.1: 9.8 Critical — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H.
CWE-434: Unrestricted Upload of File with Dangerous Type.
Fixed: 1.4.6.

Według Wordfence plugin podczas submission dynamicznie nadaje możliwość unfiltered_upload i omija właściwą kontrolę MIME, jeżeli allowed_file_types nie jest skonfigurowane. W rezultacie nieuwierzytelniony atakujący może przesłać plik wykonywalny i doprowadzić do RCE na serwerze.

„Requires configuration” — ale czyją?

Warunek techniczny brzmi allowed_file_types is not configured. Risk engine może pomyśleć „configuration required → reduce exploitability”. Ale dodajmy kontekst: vendor ships pre-built templates with upload fields without file type restrictions. Wtedy nie mówimy „admin made an insecure customization”, tylko „admin used a normal vendor-supplied template”. To zupełnie inny probability model.

Configuration-specific nie zawsze znaczy „rzadkie”

Istnieją co najmniej cztery klasy preconditions:

1. Exotic configuration → likelihood: low 2. Common optional feature → likelihood: medium/high 3. Default configuration → likelihood: very high 4. Vendor template / recommended config → likelihood: high (+ trust implication)

Sigma Forms Pro pasuje do czwartej kategorii.

Scanner wersyjny nie odpowiada na całe pytanie

Skaner wykryje Sigma Forms Pro 1.4.5 → CVE-2026-14494 — to prawidłowy finding. Ale do dokładnej oceny przydałaby się informacja: czy istnieje formularz oparty o template z uploadem bez allowed_file_types? Jeśli tak — EXPLOITABLE CONFIG PRESENT; jeśli nie — AFFECTED VERSION BUT REQUIRED FORM CONFIG NOT FOUND. Uwaga: brak exploitable config nie powinien oznaczać „False Positive”. Jeśli dziś każdy formularz ma restrykcyjną listę typów, lepszy status to NOT_EXPLOITABLE_CURRENT_CONFIG — bo jutro administrator utworzy formularz z template'u Job Application i attack path pojawi się bez zmiany wersji pluginu. Zamknięcie jako „False Positive” może sprawić, że system nigdy nie otworzy findingu ponownie.

Potrzebujemy triggerów re-evaluation

status: not_exploitable_current_config recheck_on: - form_created - form_template_changed - file_upload_field_added - allowed_file_types_removed

To szczególnie ważne dla aplikacji, w których konfiguracja jest dynamiczna i zmienia się bez deploymentu kodu.

„vulnerable by default” powinno być sygnałem w risk engine

Wiele systemów VM uwzględnia CVSS, EPSS, KEV i Internet exposure. Znacznie rzadziej posiada metadane vulnerable_default, vendor_template_exposes_path, feature_enabled_by_default. A to bardzo użyteczne dane. Dwa CVE o identycznym CVSS i tych samych technical preconditions — A: feature disabled by default, wymaga 7 kroków; B: vendor's standard template włącza warunek — mają inne realne prawdopodobieństwo w populacji klientów.

Co oznacza RCE w WordPressie?

Arbitrary file upload może umieścić wykonywalny plik PHP w lokalizacji dostępnej przez web server; jeśli da się go wywołać, atakujący uzyskuje execution w kontekście procesu PHP/web servera. Dalszy blast radius zależy od hostingu (uprawnienia filesystemu, dostęp do wp-config.php, DB credentials, cloud metadata, współdzielony hosting), prowadząc do: WordPress compromise → database credentials → user/session theft → lateral movement. Wordfence używa mocnego sformułowania: wskazane pre-built templates czynią podatność immediately exploitable upon installation — nie trzeba custom codingu ani nietypowej integracji. Dlatego „requires configuration” nie powinno automatycznie obniżać priority.

Jak powinien działać Vulnerability Engineer?

  1. Inventory — znajdź Sigma Forms Pro <= 1.4.5.
  2. Patch — upgrade do 1.4.6+.
  3. Zanim patch wejdzie — przejrzyj formularze (zwłaszcza Job Application, Support Ticket, Wholesale Application i wszystkie file upload fields).
  4. Sprawdź allowed_file_types — brak restrykcji jest kluczowym sygnałem.
  5. Ogranicz lub wyłącz upload, jeśli patch nie może wejść natychmiast.
  6. Sprawdź historię uploadów (przy Internet-facing) pod kątem nietypowych rozszerzeń i plików wykonywalnych.

WAF może ograniczyć część eksploatacji (blokada niebezpiecznych rozszerzeń), ale trzeba uważać na alternate extensions, MIME confusion i różne sposoby wykonywania plików — to compensating control, nie permanent fix, i wymaga technicznej weryfikacji.

Configuration provenance to nowe ważne pole

Warto wiedzieć nie tylko „jaka konfiguracja istnieje?”, ale „skąd się wzięła?” — czy admin stworzył ją sam, vendor ustawił domyślnie, template wprowadził, migration zachowała stare ustawienie, IaC ją wymusza. To daje kontekst do prawdopodobieństwa w skali floty. Modelujmy więc precondition nie jako configuration_required: true, lecz z typem, configuration_origin.vendor_template i likelihood_modifier.vulnerable_by_default_workflow. Jeżeli plugin jest podatny wersyjnie, ale żaden formularz nie ma podatnego uploadu, realny attack path może dziś nie istnieć (niższy emergency priority) — permanent remediation nadal to upgrade to 1.4.6+, bo konfiguracja może się zmienić, a risk acceptance oparty na „currently no vulnerable form” musi mieć trigger ponownej oceny.

Wniosek

Zdanie „requires specific configuration” jest niekompletne. VE powinien natychmiast zapytać: czy ta konfiguracja jest rzadka, czy jest dostarczana przez producenta jako normalny template? Jeżeli podatny stan przychodzi z produktem, „configuration-dependent” oznacza w praktyce vulnerable by normal use. Dojrzały VM powinien rozróżniać rare custom configuration, common optional configuration, default configuration i vendor-supplied vulnerable template. CVE-2026-14494 to przykład ostatniej kategorii — Critical RCE nie wymaga tu kreatywnego błędu administratora; wystarczy normalnie skorzystać z gotowego workflow producenta.

Powiązane na blogu

Źródła

  • Wordfence — Sigma Forms Pro <= 1.4.5: Unauthenticated Arbitrary File Upload → RCE via Pre-built Template File Upload Field (28.08.2026) — wordfence.com
  • CVE-2026-14494 — cve.org

Nota redakcyjna: stan informacji 30 sierpnia 2026, 10:21 CEST. CVE-2026-14494 dotyczy Sigma Forms Pro do 1.4.5 włącznie i jest naprawione w 1.4.6. Wordfence wskazuje pre-built templates Job Application, Support Ticket i Wholesale Application jako zawierające file upload fields bez ograniczeń typów plików z założenia, co może czynić podatność exploitable bez niestandardowej konfiguracji administratora.

Zapamiętaj jedno

Nie każda precondition obniża ryzyko tak samo. Pytaj: czy ta konfiguracja jest rzadka, czy producent dostarcza ją jako normalny template? „Configuration-dependent” bywa równoznaczne z „vulnerable by normal use”.