Według Cloudflare poprzedni tydzień przyniósł dwa ważne wydarzenia dla bezpieczeństwa internetu: kompromitację ośmiu certyfikatów pośrednich eMudhra, stwarzającą możliwość fałszowania certyfikatów i podszywania się pod serwery, oraz php2shell — poważne luki bezpieczeństwa w PHP. Firma informuje, że pracowała nad ochroną klientów, udostępniając aktualizacje klienta i środki mitygujące, dodając reguły WAF blokujące wykorzystywanie luk PHP oraz wprowadzając funkcję full transaction detection. Nowe możliwości udostępniono we wszystkich planach, także Free.
Cloudflare podkreśla, że ochrona przed takimi lukami jest procesem ciągłym. Powszechne wykorzystanie AI pozwala atakującym odkrywać nowe wektory z niebywałą szybkością i skutecznością, dlatego firma chce zbierać dane z rzeczywistych testów, weryfikować założenia i wzmacniać zabezpieczenia. W tym celu uruchamia wyzwanie w ramach programu Bug Bounty, zapraszając badaczy z HackerOne do próby ominięcia zabezpieczeń i przechwycenia flagi.
Wyzwanie koncentruje się na CVE-2026-109618 i CVE-2026-109619, czyli dwóch lukach PHP związanych z php2shell. Cel działa na standardowym PHP 8.5.11 ze standardowymi rozszerzeniami, Apache 2 przez mod_php i pustym pliku index.php w Cloudflare Container. Przed środowiskiem działają domyślne reguły ochrony WAF dla tych luk, a w piaskownicy znajduje się plik /flag. Piaskownica, wraz z plikiem flagi, jest resetowana co kilka minut.
Zadanie polega na ominięciu zabezpieczeń WAF, wykorzystaniu piaskownicy PHP i odzyskaniu zawartości /flag. Uczestnicy mogą korzystać z własnych narzędzi badawczych. Strona wyzwania zawiera szczegóły środowiska, zakres testów i formularz weryfikacji flagi.
Aby ubiegać się o nagrodę, trzeba założyć konto HackerOne, zapoznać się z warunkami HackerOne i zasadami programu Cloudflare, określanymi jako Bounty Terms, oraz je zaakceptować przed przystąpieniem do CTF. Należy wykazać kontrolowane przez atakującego wykonanie kodu PHP lub polecenia w piaskownicy za pomocą autoryzowanego żądania POST, a następnie wykorzystać to zdalne wykonanie kodu do odzyskania bieżącej zawartości /flag i pomyślnie zweryfikować flagę w interfejsie CTF. Weryfikacji należy dokonać przed resetem, a wynik zachować do późniejszej analizy.
Wymagany jest także prywatny raport do Cloudflare przez HackerOne z oznaczeniem PHP CTF w tytule. Ma zawierać endpoint, pełny ładunek i sekwencję żądań z zachowaniem istotnych nagłówków, kodowania i bajtów treści, surowe zrzuty żądań i odpowiedzi lub czytelny dowód koncepcji pozwalający odtworzyć cały łańcuch, a także wyjaśnienie obejścia WAF, wykonanego kodu lub polecenia i sposobu odzyskania flagi. Trzeba dołączyć identyfikator próby, wynik weryfikacji w UI, znaczniki czasu UTC wykorzystania luki i weryfikacji, wyjaśnić istotne odrębności metody oraz wskazać znane powiązane zgłoszenia. Flaga może zostać przekazana prywatnie, jeśli będzie potrzebna do weryfikacji.
Sama weryfikacja w interfejsie nie tworzy raportu HackerOne ani nie ustanawia pierwszeństwa zgłoszenia. Nie kwalifikują się ujawnienie pliku bez RCE, RCE bez pomyślnego odzyskania i zweryfikowania flagi, eksploity działające wyłącznie lokalnie, ponowne odkrycie znanych luk PHP ani różnice w wykrywaniu przez WAF lub niepełne łańcuchy bez osiągnięcia pełnego celu.
Nagroda wymaga istotnie odmiennej metody obejścia zapory WAF, nawet przy tej samej lukach PHP. Zgłoszenia wykorzystujące ten sam mechanizm obejścia są duplikatami niezależnie od różnic w eksploicie PHP, ładunku, technice RCE lub sposobie odzyskania flagi. Nowe flagi, resety, identyfikatory prób i zmiany kosmetyczne, w tym równoważne kodowanie, nie zapewniają unikalności. Brane pod uwagę jest tylko pierwsze kompletne i reprodukowalne zgłoszenie HackerOne, a ostateczne decyzje o duplikatach i nagrodach podejmuje Cloudflare.
Cloudflare rejestruje metadane prób i ładunki żądań na potrzeby analizy raportów, dlatego należy używać wyłącznie danych testowych i nie przesyłać poświadczeń, danych osobowych ani innych informacji, których nie chce się umieszczać w dokumentacji badawczej. Przed testowaniem należy zapoznać się z zasadami prywatności Cloudflare.
Testy są dozwolone tylko wobec chronionych przez WAF endpointów /php/* na hoście wyzwania i wyłącznie metodą POST. Poza zakresem pozostają inne usługi Cloudflare, bezpośredni dostęp do infrastruktury, projekt PHP i systemy osób trzecich. Zabronione są ataki typu denial of service, skanowanie o dużym natężeniu, utrwalanie dostępu, inżynieria społeczna i ataki na innych uczestników. Po otrzymaniu odpowiedzi 429 lub 503 trzeba ograniczyć aktywność.
W razie sprzeczności między wpisem a Bounty Terms pierwszeństwo mają Bounty Terms. Cloudflare zastrzega prawo do zawieszenia lub zakończenia wyzwania w dowolnym momencie. Usunięcie konkursu z HackerOne oznacza jego oficjalne zakończenie, więc aktualny status należy sprawdzać na stronie programu Cloudflare w HackerOne.
Cloudflare zaznacza również, że WAF nie zastępuje naprawy podatnego oprogramowania. Blokowanie odpowiedzi może uniemożliwić dotarcie ujawnionych danych do atakującego, ale nie cofa działań wykonanych już na serwerze źródłowym. Użytkownicy PHP powinni śledzić najnowsze komunikaty bezpieczeństwa PHP i instalować odpowiednie aktualizacje. Osoby chcące wziąć udział w wyzwaniu mogą przejść do php-rce.cloudflare.app.