ApostropheCMS: token odpowiedzi CAPTCHA nie jest kodowany w formacie URL
Podsumowanie
Weryfikacja CAPTCHA formularzy i logowania interpoluje podany przez użytkownika token widżetu w postaci niezakodowanej do adresu URL/treści weryfikacji po stronie serwera. Pozwala to spreparowanemu tokenowi na wstrzyknięcie parametrów zapytania do żądania weryfikacji reCAPTCHA/hCaptcha.
Szczegóły
packages/form/lib/recaptcha.js:39—recaptchaUri = 'https://www.google.com/recaptcha/api/siteverify?secret=${recaptchaSecret}&response=${input.recaptcha}'packages/login-recaptcha/index.js:44— ten sam schemat przy logowaniupackages/login-hcaptcha/index.js:47—body: 'response=${token}&secret=${secret}'
PoC
input.recaptcha = 'attacker_token&secret=INJECTED_SECRET&something=1'
→ resulting verify URL:
https://www.google.com/recaptcha/api/siteverify?secret=<real>&response=attacker_token&secret=INJECTED_SECRET&something=1
# (replicated exactly from recaptcha.js:39)
Wpływ
Niski: spreparowany token przemyca dodatkowe pary key=value (secret, dodatkowe response) do wychodzącego wywołania weryfikacyjnego, wymuszając błędy weryfikacji (odmowa usługi dla bramki CAPTCHA oraz przepływów logowania i formularzy chronionych przez CAPTCHA) i umożliwiając zautomatyzowane testowanie obejścia; brak eksfiltracji poufnych danych.
Co trzeba zrobić
Buduj żądanie weryfikacji za pomocą URL + searchParams (lub encodeURIComponent na obu: secret i response), a przed użyciem zweryfikuj poprawność tokena względem ^[A-Za-z0-9._-]{1,2048}$.
Zaktualizuj podatne pakiety do wersji zawierających poprawkę:
@apostrophecms/form: wersja 1.5.5 lub nowsza@apostrophecms/login-hcaptcha: wersja 1.3.0 lub nowsza@apostrophecms/login-recaptcha: wersja 1.2.1 lub nowsza
Czego dotyczy
Kliknij technologię, aby zobaczyć wszystkie dotyczące jej podatności.
| Platforma | Paczka | Podatne wersje | Poprawka w wersji |
|---|---|---|---|
| Paczka npm | @apostrophecms/form | < 1.5.5 | 1.5.5 |
| Paczka npm | @apostrophecms/login-hcaptcha | < 1.3.0 | 1.3.0 |
| Paczka npm | @apostrophecms/login-recaptcha | < 1.2.1 | 1.2.1 |
Odnośniki
- https://github.com/apostrophecms/apostrophe/security/advisories/GHSA-44qr-rrjg-2cqq
- https://github.com/apostrophecms/apostrophe/commit/9500b8b0e1d630d5e07fbb5fd2c25ed0943845ce
- https://github.com/apostrophecms/apostrophe/commit/f84fd41cbf6c22eb8d0008fc9c25df1f7130b350
- https://github.com/apostrophecms/apostrophe
- https://github.com/apostrophecms/apostrophe/releases/tag/@apostrophecms/form@1.5.5
- Wektor CVSS
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N- Słabość (CWE)
CWE-116- Platforma
- npm
- Paczka
@apostrophecms/form, @apostrophecms/login-hcaptcha, @apostrophecms/login-recaptcha- Ujawniono
- 20.10.2026
- Aktualizacja
- 20.10.2026 21:25
Źródła i licencje · Redakcja lub tłumaczenie: DockRay. Zachowano prawa źródeł i obowiązujące licencje.
OSV / GitHub Advisory Database - GHSA-44qr-rrjg-2cqq - CC BY 4.0
Historia podatności: @apostrophecms/form
Wszystkie opisane podatności tej paczki (Paczka npm), od najnowszej. Widać, czy to jednorazowa wpadka, czy paczka, której trzeba pilnować.
- Wszystkich wpisów
- 2
- Pierwsza → ostatnia
- 10.2026 10.2026
- Bez poprawki
- 0
- Wykorzystywana w atakach
- 0
Rozkład istotności
- Średnia 2
Ujawnienia w latach
- 2026: 2
-
ApostropheCMS: token odpowiedzi CAPTCHA nie jest kodowany w formacie URL ten wpis
Dowiedz się, które podatności dotyczą Twojej aplikacji
Po podłączeniu integracji DockRay i włączeniu raportowania oprogramowania DockRay porównuje zgłoszone wersje komponentów ze znanymi podatnościami i powiadamia o potwierdzonych dopasowaniach. Zakres zależy od obsługiwanej technologii i dostępnych biuletynów.