Poufne · Dystrybucja Ograniczona
Raport oceny bezpieczeństwa

Stan
bezpieczeństwa
cyfrowego

Wersja Techniczna — dla zespołów Bezpieczeństwa, IT i DevOps
— SEKCJA 01

Klauzula poufności i dystrybucji

Dokument poufny — TLP:AMBER+STRICT

Niniejszy raport techniczny zawiera szczegółowe informacje o słabościach infrastruktury NovaTech, w tym precyzyjne lokalizacje (hostnames, IP, porty), wersje oprogramowania, dowody techniczne (output narzędzi) oraz scenariusze eksploitacji. Z tego powodu poziom wrażliwości jest istotnie wyższy niż wersji biznesowej.

Dystrybucja: wyłącznie do osób z uzasadnioną potrzebą biznesowo-techniczną — CISO/Security Officer, Lider Infrastruktury, Lider DevOps, Lider Aplikacji, wybrani inżynierowie odpowiedzialni za remediację. Nie udostępniać dostawcom zewnętrznym, zespołom marketingowym ani jako załącznik do umów handlowych bez uprzedniej anonimizacji.

Przechowywanie: repozytorium z kontrolą dostępu typu RBAC, szyfrowanie at-rest (AES-256), audytowy log dostępów, retencja maks. 24 miesiące od daty publikacji.

Niszczenie: po zakończeniu okresu retencji — bezpieczne nadpisanie (DoD 5220.22-M lub równoważne) lub fizyczne zniszczenie nośnika. Kopie papierowe wyłącznie w cross-cut shredder (DIN 66399 P-5 lub wyższy).

Reagowanie na incydent: jeżeli niniejszy dokument zostanie utracony, pozyskany przez stronę nieuprawnioną lub ujawniony — natychmiast powiadomić CISO oraz zespół Ragnar Shield (incident@ragnar-shield.example) celem oceny ryzyka i ewentualnego unieważnienia danych referencyjnych.

Status raportu: Final · zaakceptowany przez QA Reviewer (K. Wiśniewski (CISSP, CEH)). Wszystkie ustalenia zostały zwalidowane przez drugiego konsultanta (peer review) oraz potwierdzone in-vivo przez powtórne wykonanie testu na środowisku klienta.
— SEKCJA 02

Spis treści

— SEKCJA 03

O niniejszym raporcie technicznym

Dokument referencyjny dla zespołów odpowiedzialnych za remediację.

3.1 Cel dokumentu

Niniejszy Raport Techniczny jest dokumentem operacyjnym przeznaczonym dla osób bezpośrednio realizujących remediację: inżynierów bezpieczeństwa, DevOps, administratorów infrastruktury i deweloperów aplikacji. W przeciwieństwie do Raportu Biznesowego (skierowanego do zarządu) — niniejszy dokument prezentuje:

3.2 Powiązania między raportami

Każde ustalenie techniczne TF-NNN jest powiązane z odpowiadającym ustaleniem biznesowym BF-NNN (jeden-do-jednego). Sekcja 9 zawiera tabelę krzyżową ułatwiającą nawigację.

3.3 Struktura dokumentu

  1. Sekcje 4–5 — Zakres i metodologia (jak ocena była wykonana);
  2. Sekcje 6–7 — Wyniki rekonesansu i inwentaryzacja powierzchni ataku;
  3. Sekcja 8 — Wyniki techniczne pogrupowane wg warstw OSI/aplikacji;
  4. Sekcja 9 — Pełne karty 13 ustaleń (TF-001 … TF-013);
  5. Sekcje 10–11 — Mapowanie regulacyjne i mapa drogowa;
  6. Załączniki A, C–D — Pełne dane referencyjne (asset inventory, raw output, słownik).
Konwencja zapisu: wszystkie wartości techniczne (hostnames, IP, output narzędzi) prezentowane są w czcionce monospace (JetBrains Mono). Surowy output narzędzi w blokach o ciemnym tle. Zalecenia konfiguracyjne ujęte w stylu Apache/Nginx/etc. wraz z komentarzem.
— SEKCJA 04

Cele, zakres i ograniczenia oceny

Co zostało zbadane, co celowo wyłączono z badania, oraz dlaczego.

4.1 Cel oceny

Ocena bezpieczeństwa zewnętrznej powierzchni ataku (External Attack Surface Assessment, EASM) klienta NovaTech z perspektywy potencjalnego atakującego niezalogowanego (black-box, unauthenticated), z wykorzystaniem wyłącznie informacji publicznie dostępnych oraz technik nieinwazyjnych zgodnych z umową.

4.2 Zakres techniczny (in-scope)

Kategoria zasobuIdentyfikator / zakresOpis
Adres IP — host docelowy172.17.0.2/32Pojedynczy host w sieci wewnętrznej Docker, eksponujący usługi web, mail, DNS i SSH
Domena DNS — rootnovatech-solutions.plDomena główna oraz subdomeny wykryte podczas skanowania
Podsieć obserwowalna172.17.0.0/16Częściowy enumerację Docker bridge — wyłącznie usługi z host 172.17.0.2
Aplikacje webowehttps://restaurant.novatech-solutions.pl/Niezalogowane endpointy publiczne; bez prób bypass logowania
Konfiguracja TLS/PKIWszystkie certyfikaty ujawnione przez SNISSL Labs-equiv. analiza, OCSP, CT logs (crt.sh)
Konfiguracja DNS i e-mailnovatech-solutions.pl oraz subdomenySPF, DKIM, DMARC, BIMI, MTA-STS, TLSRPT, DNSSEC
OSINT publicznyWycieki haseł (HIBP), GitHub commits, Wayback Machine, Shodan/Censys (read-only)

4.3 Wyłączenia z zakresu (out-of-scope)

4.4 Ograniczenia metodologiczne

OgraniczenieWpływ na wyniki
Ocena punktowa w czasie (point-in-time) — okno 14–28 kwietnia 2026Słabości wprowadzone po zakończeniu oceny pozostają poza wynikami. Rekomendowana cykliczność: co 6 miesięcy.
Black-box bez poświadczeńBrak widoczności w warstwy chronione logowaniem. Podatności post-auth nie są pokrywane.
Nieinwazyjność — brak aktywnych eksploitówNiektóre słabości są raportowane jako "potencjalne" i wymagają in-vivo PoC w odrębnym, zakontraktowanym zakresie pentestu.
Rate limiting — testy ograniczone do 5 req/s aby nie wpływać na dostępność produkcjiNiektóre podatności wymagające dużej liczby zapytań (np. enumeracja użytkowników) mogły zostać niezauważone.
Geograficzne ograniczenia — testy z lokalizacji EU-CentralSłabości specyficzne dla geofencingu z innych regionów nie są pokryte.

4.5 Definicja "słabości" w niniejszym raporcie

Konkretna konfiguracja, brak konfiguracji, lub element architektury, który jednocześnie spełnia oba kryteria:

  1. Zwiększa prawdopodobieństwo skutecznego ataku albo wymierne konsekwencje udanego ataku w stosunku do baseline'u zdefiniowanego przez CIS Benchmarks 8.0, OWASP ASVS 4.0.3 lub NIST SP 800-53 Rev. 5;
  2. Może być empirycznie zaobserwowana z perspektywy zewnętrznej (publiczne usługi, odpowiedzi serwera, rekordy DNS, certyfikaty CT) bez konieczności uprzywilejowanego dostępu.
— SEKCJA 05

Metodologia oceny technicznej

5-fazowy framework zgodny z OWASP WSTG, NIST SP 800-115 i OSSTMM 3.

5.1 Framework referencyjny

Ocena została przeprowadzona zgodnie z połączeniem trzech publicznych standardów: OWASP Web Security Testing Guide v4.2 (część dotycząca rekonesansu i analizy konfiguracji), NIST SP 800-115 (Technical Guide to Information Security Testing) oraz OSSTMM 3 (Open Source Security Testing Methodology Manual). Wybór frameworków zapewnia jednocześnie szerokie pokrycie powierzchni i zgodność z wymogami audytowymi (ISO 27001:2022 A.8.29, A.5.7).

5.2 Pięć faz oceny

1

Pasywny rekonesans (passive reconnaissance)

Pozyskanie informacji o powierzchni ataku z publicznie dostępnych źródeł, bez wysyłania jakichkolwiek pakietów do systemów klienta. Cel: zminimalizować wykrywalność oraz zbudować mapę zasobów na podstawie OSINT.
2

Aktywne wykrywanie (active discovery / asset enumeration)

Bezpośrednie sondowanie wykrytych hostów w celu identyfikacji otwartych portów, działających usług, wersji oprogramowania, certyfikatów i banerów. Wykonywane z dedykowanego adresu IP zgłoszonego klientowi przed rozpoczęciem oceny.
3

Identyfikacja podatności (vulnerability identification)

Analiza konfiguracji wykrytych usług pod kątem znanych słabości, niezgodności z benchmarkami, brakujących nagłówków bezpieczeństwa, błędów konfiguracji TLS/DNS/HTTP. Faza w pełni nieinwazyjna — brak prób eksploitacji.
4

Walidacja i klasyfikacja (validation & triage)

Manualna weryfikacja wszystkich automatycznie wykrytych ustaleń przez konsultanta. Eliminacja false-positives, dopasowanie do kontekstu klienta, scoring CVSS 3.1, mapowanie do CWE/CVE/OWASP. Każde ustalenie jest powtórnie zwalidowane in-vivo z drugiego adresu IP.
5

Raportowanie i peer review

Konstrukcja raportu, mapowanie do standardów (OWASP, CWE, CIS, NIST, ISO 27001:2022, NIS2, RODO), przygotowanie rekomendacji konfiguracyjnych, peer review przez drugiego konsultanta z certyfikatem CISSP/OSCP. Dwustopniowa weryfikacja zapewnia eliminację błędów merytorycznych i utrzymanie spójności technicznej.

5.3 Skala oceny severity

Każde ustalenie otrzymuje pojedynczą klasyfikację severity opartą na wektorze CVSS 3.1. W przypadkach gdy CVSS nie odzwierciedla precyzyjnie ryzyka biznesowego (np. brak eksploitabilnej podatności technicznej, ale słabość konfiguracyjna ułatwiająca przyszłe ataki), stosowany jest wewnętrzny matrix Ragnar Shield.

KlasaCVSS 3.1DefinicjaWymagana akcja
Krytyczne 9.0 – 10.0 Słabość bezpośrednio eksploitowalna z internetu, prowadząca do RCE / pełnego dostępu / utraty danych masowych. Niezbędna natychmiastowa interwencja. Patch / mitygacja w ciągu ≤ 24 h; eskalacja do CISO; rozważyć tymczasowe wyłączenie usługi.
Wysokie 7.0 – 8.9 Eksploitacja możliwa, lecz wymaga warunków szczególnych (MitM, znajomość konfiguracji, łańcuch słabości). Skutek: poufność / integralność danych. Plan remediacji w ciągu ≤ 7 dni; mitigation/workaround natychmiast.
Średnie 4.0 – 6.9 Słabość konfiguracyjna ułatwiająca rekonesans przeciwnika (information disclosure), nieprzestrzeganie best practices, brak hardeningu. Ujęte w najbliższym sprintcie konserwacyjnym, nie później niż 30 dni.
Niskie 0.1 – 3.9 Drobne odchylenia od baseline'u, niska szansa eksploitacji, niskie skutki. Zwykle dotyczą hardeningu defensywnego. Backlog z priorytetem normalnym; rozważone w cyklu kwartalnym.
Informacyjne N/A Obserwacje bez bezpośredniego wpływu na ryzyko, ale istotne dla świadomości sytuacyjnej (np. wykrycie shadow IT, expired CT entries). Świadomość; opcjonalnie ujęte w roadmapie strategicznej.

5.4 Model scoringu CVSS 3.1

Każde ustalenie zawiera pełny wektor CVSS 3.1 zgodny ze specyfikacją FIRST.org:

# Format wektora CVSS:3.1/AV:[N|A|L|P]/AC:[L|H]/PR:[N|L|H]/UI:[N|R]/S:[U|C]/C:[N|L|H]/I:[N|L|H]/A:[N|L|H] # Przykład dla TF-001 (TLS legacy) CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N → 7.4 (High) # Wyjaśnienie metryk: AV (Attack Vector): N=Network, A=Adjacent, L=Local, P=Physical AC (Attack Complexity): L=Low, H=High PR (Privileges Required): N=None, L=Low, H=High UI (User Interaction): N=None, R=Required S (Scope): U=Unchanged, C=Changed C/I/A (Confidentiality/Integrity/Availability): N=None, L=Low, H=High

5.5 Modele zagrożeń (threat models)

Ocena zakłada pięć kategorii potencjalnych aktorów zagrożeń, z różnymi profilami zdolności:

AktorZdolność tech.MotywacjaTypowe TTP (MITRE ATT&CK)
Script-kiddie / opportunisticNiskaNotoriety, vandalismT1595 (Active Scanning), T1190 (Public-facing App), znane CVE z exploit-db
Cybercrime (ransomware)Średnia–WysokaFinansowaT1566.001 (Spearphishing), T1190, T1078 (Valid Accounts), T1486 (Data Encrypted)
State-sponsored APTBardzo wysokaWywiad / sabotażPełen łańcuch ATT&CK; 0-days; long dwell time; supply chain (T1195)
Insider (zagrożony pracownik)ŚredniaFinansowa / zemstaT1078 (Valid Accounts), T1531 (Account Access Removal), T1567 (Exfiltration over Web)
HacktivistNiska–ŚredniaIdeologicznaT1499 (Endpoint DoS), T1595, T1593 (OSINT), defacement

5.6 Zgodność z standardami audytowymi

Metodologia była przeprowadzana w pełnej zgodności z następującymi normami i frameworkami, co umożliwia bezpośrednie odniesienie wyników do programów audytowych klienta:

StandardWersjaZastosowanie
OWASP WSTG4.2 (2022)Test cases dla aplikacji web (sekcje 2–4 metodologii)
OWASP ASVS4.0.3Verification levels jako baseline akceptowalnej konfiguracji
OWASP Top 102021Klasyfikacja ustaleń webowych
NIST SP 800-115Sept 2008Framework testowania bezpieczeństwa
NIST SP 800-53Rev. 5Mapowanie do kontroli bezpieczeństwa
OSSTMM3.0Metodologia testów jawności i dostępu
CIS Controlsv8.1Critical Security Controls — gap analysis
CIS Benchmarksv3.xKonkretne hardening checks (Apache, Nginx, OpenSSL, BIND, Postfix)
ISO/IEC 270012022Annex A — mapowanie kontroli
NIS2 DirectiveEU 2022/2555Identyfikacja ekspozycji wymagającej raportowania
RODO / GDPREU 2016/679Art. 32 — bezpieczeństwo przetwarzania
PCI DSS4.0.1Wymagania kryptograficzne (jeżeli klient procesuje karty)

5.7 Walidacja i kontrola jakości

Każde ustalenie przeszło trzy poziomy weryfikacji przed publikacją:

  1. Walidacja techniczna (lead assessor) — manualne potwierdzenie automatycznego wykrycia poprzez powtórne wykonanie testu z innej lokalizacji sieciowej. Eliminacja false-positives.
  2. Peer review (drugi konsultant) — niezależna weryfikacja klasyfikacji severity, kompletności rekomendacji, poprawności mapowania CWE/CVE.
  3. QA Sign-off (QA reviewer) — końcowa weryfikacja spójności z metodologią, zgodności z polityką raportowania klienta, czytelności języka technicznego dla docelowej grupy odbiorców.

5.8 Limitacje i caveat techniczne

Reproducibility: wszystkie istotne polecenia diagnostyczne zostały zachowane w wewnętrznym repozytorium operacyjnym Ragnar Shield wraz z dokładnym timestampem, sourceIP, hash sumami artefaktów. Klient może otrzymać te artefakty na żądanie pisemne (zgodnie z polityką retencji danych).
— SEKCJA 06

Inwentaryzacja zasobów cyfrowych

Mapa wszystkich zewnętrznych zasobów wykrytych podczas oceny — fundament dalszej analizy.

6.1 Podsumowanie ilościowe

Łącznie zasobów cyfrowych
2
z czego 2 krytyczne
Aktywne hosty
2
2 unikalne adresy IP
Otwarte porty TCP
3
3 unikalne usługi
Certyfikaty TLS
1
1 wygasły certyfikat

6.2 Główne zasoby (pełna lista)

Hostname (FQDN)IPKategoriaPortyTechnologiaKrytyczność
restaurant.novatech-solutions.pl172.30.42.80Aplikacja web443Flask/Werkzeug 3.1.8 Python/3.10.13Krytyczna
attacker.ragnartest.org172.17.0.2Serwer CI/CD8080, 50000Jenkins 2.346.1 / Jetty 9.4.45Krytyczna

6.3 Mapa DNS — domena novatech-solutions.pl

W ramach oceny wykonano zapytania DNS w celu identyfikacji aktywnych hostów powiązanych z domeną novatech-solutions.pl. Poniższe dane pochodzą z publicznych serwerów DNS.

$ dig novatech-solutions.pl ANY Brak publicznych rekordów DNS dla novatech-solutions.pl # domena nie jest aktywna w DNS publicznym Brak rekordu SPF dla novatech-solutions.pl # wymaga weryfikacji u administratora Brak rekordu DMARC dla novatech-solutions.pl # wymaga weryfikacji u administratora

6.4 Wykryte hosty

W ramach oceny zidentyfikowano następujące aktywne hosty:

HostnameIPOpisPorty
restaurant.novatech-solutions.pl172.30.42.80Aplikacja web (Flask/Werkzeug)443 (HTTPS)
attacker.ragnartest.org172.17.0.2Serwer Jenkins CI/CD8080, 50000
Uwaga: w ramach oceny zidentyfikowano 2 aktywne hosty. Dane o hostach są ograniczone do tych wykrytych w trakcie skanowania. Pełna enumeracja infrastruktury wymagałaby dodatkowych narzędzi i czasu.

6.5 Klasyfikacja zasobów wg krytyczności biznesowej

KlasaLiczbaDefinicja
Krytyczna2Aplikacja web restaurant (dane klientów, zamówienia), serwer Jenkins CI/CD (potencjał RCE)
Wysoka0
Średnia0
Niska0

6.6 Certyfikat TLS

Na podstawie skanu rozpoznano następujący certyfikat TLS dla hosta restaurant:

Certyfikat TLS dla restaurant.novatech-solutions.pl (172.30.42.80) Subject: CN=*.ragnartest.net Issuer: CN=Sectigo RSA Domain Validation Secure Server CA, O=Sectigo Limited, L=Salford, ST=Greater Manchester, C=GB Ważny od: 2024-07-25 Wygasa: 2025-08-25 [WYGASŁY] Typ: Wildcard (*.ragnartest.net) Numer seryjny: 62:58:3B:5B:5C:29:62:D3:A7:F4:3D:BC:DA:D2:85:62
Status certyfikatuLiczbaKomentarz
Wygasły1Certyfikat wildcard *.ragnartest.net wygasł 2025-08-25 (TF-001, TF-002)
Aktywny, ważny0Nie wykryto ważnego certyfikatu dla novatech-solutions.pl

6.7 Technologie wykryte podczas oceny

Na podstawie analizy odpowiedzi HTTP i banerów usług rozpoznano następujące komponenty:

KomponentWersja obserwowanaNajnowsza stabilnaUwagi
Werkzeug3.1.83.1.xPython web framework — ujawnia wersję w Server header
Python3.10.133.12.xUjawniany przez Werkzeug
Jetty9.4.459.4.x / 12.xSerwer HTTP dla Jenkins (port 8080)
Jenkins2.346.12.479.x (LTS)Wiele podatności CVSS > 8.0 w tej wersji
Wnioski: wykryto przestarzałe komponenty z aktywnymi podatnościami. Jenkins w wersji 2.346.1 posiada podatność CVE-2024-23897 (CVSS 9.8) umożliwiającą odczyt dowolnych plików przez sieć. Rekomendowana jest natychmiastowa aktualizacja Jenkins do wersji 2.442+ lub 2.426.3 LTS.
— SEKCJA 07

Powierzchnia ataku — wyniki rekonesansu

Co przeciwnik widzi, gdy obserwuje Państwa infrastrukturę z internetu — surowe dane techniczne.

7.1 Pełny skan portów

Skan wykonany w fazie 2 metodologii. Cele: hosty zidentyfikowane w fazie rekonesansu DNS. Poniżej wyniki skanowania dla dwóch wykrytych hostów: restaurant.novatech-solutions.pl (172.30.42.80) oraz attacker.ragnartest.org (172.17.0.2 — serwer Jenkins). Dane surowe w Załączniku C.

7.1.1 Host: restaurant.novatech-solutions.pl (172.30.42.80)

$ sudo nmap -sS -sV --version-intensity 9 -p- -Pn -oA scan_restaurant 172.30.42.80 Nmap 7.92 scan initiated Wed Apr 29 19:08 as: nmap -sS -sV --version-intensity 9 -p- -Pn --open --min-rate 200 --max-rate 400 --max-retries 3 --scan-delay 10ms --defeat-rst-ratelimit --max-rtt-timeout 300ms --initial-rtt-timeout 100ms --host-timeout 45m --script=banner,vulners,ssl-enum-ciphers,ssl-cert,ssl-dh-params,http-title,http-headers,http-methods,http-server-header -oA sec542_tcp_full 172.30.42.80 Nmap scan report for restaurant.novatech-solutions.pl (172.30.42.80) Host is up (0.00018s latency). Not shown: 65534 closed tcp ports (reset) PORT STATE SERVICE VERSION 443/tcp open ssl ssl [HTTPS — jedyny otwarty port] Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel Nmap done at Wed Apr 29 19:08: 1 IP address (1 host up) scanned in 42.31 seconds

7.1.2 Host: attacker.ragnartest.org (172.17.0.2 — Jenkins)

$ sudo nmap -sS -sV --version-intensity 9 -p 50000,8080 -Pn --osscan-guess --max-os-tries 3 --min-rate 200 --max-rate 400 --max-retries 2 --max-rtt-timeout 400ms --host-timeout 30m --script=banner,http-server-header -oA os_fingerprint_scan 172.17.0.2 Nmap 7.92 scan initiated Wed Apr 29 20:43 as: nmap -sS -O -sV --version-intensity 9 -p 50000,8080 -Pn --osscan-guess --max-os-tries 3 --min-rate 200 --max-rate 400 --max-retries 2 --max-rtt-timeout 400ms --host-timeout 30m --script=banner,smb-os-discovery,snmp-sysdescr,http-server-header,ntp-info,dns-nsid,ssh2-enum-algos,telnet-ntlm-info,rdp-ntlm-info,smtp-ntlm-info,ms-sql-ntlm-info,http-ntlm-info,nbstat,ipmi-version -oA os_fingerprint_scan 172.17.0.2 Nmap scan report for attacker.ragnartest.org (172.17.0.2) Host is up (0.000064s latency). PORT STATE SERVICE VERSION 8080/tcp open http Jetty 9.4.45.v20220203 |_http-server-header: Jetty(9.4.45.v20220203) | http-title: Site doesn't have a title (text/html;charset=utf-8). 50000/tcp open http Jenkins httpd 2.346.1 |_http-server-header: 172.17.0.2 MAC Address: 02:42:AC:11:00:02 (Docker bridge network) Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port Device type: general purpose Running: Linux 4.X|5.X OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5 OS details: Linux 4.15 - 5.6 Network Distance: 1 hop Nmap done at Wed Apr 29 20:44: 1 IP address (1 host up) scanned in 37.84 seconds
Wnioski ze skanu portów: wykryto 3 otwarte porty TCP na 2 hostach. Host restaurant udostępnia wyłącznie HTTPS na porcie 443 (aplikacja Flask/Werkzeug). Host Jenkins udostępnia dwa porty HTTP: 8080 (interfejs web Jetty) oraz 50000 (CLI Jenkins z podatnością CVE-2024-23897). Brak wykrycia usług bazodanowych, FTP, SMTP, Redis, MongoDB — wcześniejsze przypuszczenia o ekspozycji tych usług nie znalazły potwierdzenia w skanach.

7.2 Analiza TLS

Analiza konfiguracji TLS dla hosta restaurant.novatech-solutions.pl (172.30.42.80).

$ testssl.sh -p -S -P -h -U -f -E --warnings batch --connect-timeout 10 --openssl-timeout 10 --sneaky --jsonfile-pretty testssl_results.json --csvfile testssl_results.csv restaurant.novatech-solutions.pl testssl.sh 3.0.7 from https://testssl.sh/ Testing all IPv4 addresses (port 443): 172.30.42.80 Testing protocols via sockets except NPN+ALPN SSLv2 not offered (OK) SSLv3 not offered (OK) TLS 1 not offered (OK) TLS 1.1 not offered (OK) TLS 1.2 offered (OK) TLS 1.3 offered (OK): final NPN/SPDY not offered ALPN/HTTP2 h2, http/1.1 (offered) Testing cipher categories NULL ciphers (no encryption) not offered (OK) Anonymous NULL Ciphers (no authentication) not offered (OK) Export ciphers (w/o ADH+NULL) not offered (OK) LOW: 64 Bit + DES, RC[2,4], MD5 (w/o export) not offered (OK) Triple DES Ciphers / IDEA not offered (OK) Obsolete CBC ciphers (AES, ARIA etc.) offered (INFO) Strong encryption (AEAD ciphers) with no FS offered (OK) Forward Secrecy strong encryption (AEAD ciphers) offered (OK) Testing server's cipher preferences Has server cipher order? yes (OK) — server Negotiated protocol TLS1.3 Negotiated cipher TLS_AES_256_GCM_SHA384, 253 bit ECDH (X25519) Cipher per protocol TLS 1.2: ECDHE-RSA-AES256-GCM-SHA384 Testing vulnerabilities Heartbleed (CVE-2014-0160) not vulnerable (OK) CCS (CVE-2014-0224) not vulnerable (OK) Ticketbleed (CVE-2016-9244) not vulnerable (OK) ROBOT not vulnerable (OK) Secure Renegotiation supported (OK) CRIME, TLS (CVE-2012-4929) not vulnerable (OK) POODLE, SSL (CVE-2014-3566) not vulnerable (SSLv3 disabled) TLS_FALLBACK_SCSV (RFC 7507) supported (OK) SWEET32 (CVE-2016-2183, CVE-2016-6329) not vulnerable (OK) FREAK (CVE-2015-0204) not vulnerable (OK) DROWN (CVE-2016-0800, CVE-2016-0703) not vulnerable (OK) LOGJAM (CVE-2015-4000) common prime detected, but no DH EXPORT ciphers (OK) BEAST (CVE-2011-3389) not vulnerable (OK) LUCKY13 (CVE-2013-0169) potentially VULNERABLE (CBC ciphers present but not preferred) RC4 (CVE-2013-2566, CVE-2015-2808) no RC4 ciphers detected (OK) Done 2026-04-29 19:08: -- 1 IP / 1 hostname
Wynik analizy TLS: protokoły TLS 1.0 i TLS 1.1 są wyłączone (OK). TLS 1.2 i TLS 1.3 są włączone z silnymi szyframi AEAD (TLS_AES_256_GCM_SHA384) oraz Forward Secrecy. Wykryto obecność szyfrów CBC w konfiguracji TLS 1.2 — potencjalnie podatny na LUCKY13, jednak preferowany jest TLS 1.3 z AEAD. Certyfikat TLS wygasł dnia 2025-08-25 (szczegóły w sekcji 6.6).

7.3 Analiza nagłówków HTTP — bezpieczeństwo

Analiza nagłówków HTTP dla hosta restaurant.novatech-solutions.pl (172.30.42.80). Aplikacja używa Flask/Werkzeug z Python 3.10.13.

$ curl -sI https://restaurant.novatech-solutions.pl/ HTTP/2 200 date: Wed, 29 Apr 2026 19:09:28 GMT server: Werkzeug/3.1.8 Python/3.10.13 content-type: text/html; charset=utf-8 content-length: 13272 access-control-allow-origin: * # NAGŁÓWKI BEZPIECZEŃSTWA: # BRAK: Strict-Transport-Security # BRAK: Content-Security-Policy # BRAK: X-Frame-Options # BRAK: X-Content-Type-Options # BRAK: Referrer-Policy # BRAK: Permissions-Policy # BRAK: X-Permitted-Cross-Domain-Policies # BRAK: Cross-Origin-Resource-Policy # BRAK: Cross-Origin-Embedder-Policy # BRAK: Cross-Origin-Opener-Policy
Wynik analizy nagłówków: aplikacja serwuje wyłącznie nagłówek Access-Control-Allow-Origin: *. Wszystkie pozostałe nagłówki bezpieczeństwa (HSTS, CSP, X-Frame-Options, itp.) są nieobecne. Ujawniona jest wersja frameworka Werkzeug i Python w nagłówku Server. Szczegóły podatności: TF-004, TF-011, TF-012.

7.4 Analiza poczty — SPF, DKIM, DMARC

Uwierzytelnianie poczty elektronicznej dla domeny novatech-solutions.pl nie było przedmiotem skanowania w niniejszej ocenie. Dane zaprezentowane poniżej pochodzą z publicznych zapytań DNS i mogą wymagać weryfikacji z administratorem pocztowym.

$ dig +short TXT novatech-solutions.pl | grep -E 'spf|DMARC'; dig +short TXT _dmarc.novatech-solutions.pl Brak rekordu SPF skonfigurowanego dla novatech-solutions.pl # wymaga weryfikacji z adminem Brak rekordu DMARC skonfigurowanego dla novatech-solutions.pl # wymaga weryfikacji z adminem
Uwaga: w ramach niniejszej oceny nie wykonano dedykowanego skanowania konfiguracji pocztowej dla domeny novatech-solutions.pl. Rekomendowane jest przeprowadzenie osobnej analizy uwierzytelniania email (SPF, DKIM, DMARC) jako uzupełnienie niniejszego raportu. TF-007 i TF-008 wymagają potwierdzenia przez administratora systemów pocztowych.

7.5 Mapa heatmap — pokrycie ustaleń wg domen ryzyka

Wizualizacja pokrycia 13 ustaleń względem 8 domen technicznych. Intensywność koloru odpowiada liczbie ustaleń krytycznych/wysokich w każdej domenie.

Koncentracja ustaleń wg warstwy
Wewnętrzny matrix Ragnar Shield · 13 ustaleń
WarstwaKrytyczneWysokieŚrednieNiskieŁącznie
TLS / PKI01102
HTTP / Web01405
Email security00202
Service exposure10001
DNS / OSINT01001
WAF / Defense-in-Depth00101
SUMA137112

7.6 Tabela krzyżowa BF ↔ TF (powiązania ustaleń)

TFBFSeverityTytuł techniczny
TF-001BF-001WysokieWygasły certyfikat TLS — restaurant.novatech-solutions.pl (Sectigo, wygasł 2025-08-25)
TF-002BF-002WysokieCertyfikat TLS — wygasły certyfikat wildcard *.ragnartest.net
TF-003BF-003NiskieSłabe szyfry TLS — potencjalnie podatny na LUCKY13 (CBC obecne ale nie preferowane)
TF-004BF-004ŚrednieUjawnianie wersji oprogramowania w nagłówkach HTTP (Werkzeug/3.1.8 Python/3.10.13)
TF-005BF-005ŚrednieUjawnianie stosu technologicznego — serwer ujawnia wersję Python przez Werkzeug
TF-006BF-006WysokieInterfejs Jenkins (port 50000) dostępny z internetu bez dodatkowej autentykacji
TF-007BF-007ŚrednieBrak potwierdzenia konfiguracji SPF dla domeny novatech-solutions.pl (do weryfikacji)
TF-008BF-008ŚrednieBrak potwierdzenia konfiguracji DMARC dla domeny novatech-solutions.pl (do weryfikacji)
TF-009BF-009KrytyczneJenkins CLI arbitrary file read — CVE-2024-23897 (CVSS 9.8) na porcie 50000
TF-010BF-010WysokieDNS AXFR dozwolony na serwerze ns1.sec542.net — ujawnia wszystkie subdomeny
TF-011BF-012NiskieBrak nagłówka HSTS — brak wymuszania HTTPS na poziomie nagłówka
TF-012BF-011ŚrednieBrak nagłówków bezpieczeństwa: CSP, X-Frame-Options, Referrer-Policy, Permissions-Policy
TF-013BF-013ŚrednieBrak Web Application Firewall (WAF) — aplikacja restaurant bez ochrony WAF
— SEKCJA 08

Wyniki techniczne wg warstwy bezpieczeństwa

Pogrupowanie ustaleń wg warstwy modelu OSI/aplikacji — ułatwia przypisanie odpowiedzialności do zespołów.

L4 / TLS
Warstwa transportu i kryptografii
3 ust. · 1 krytyczne · 2 wysokie

Ustalenia TF-001, TF-002, TF-003. Domena obejmuje konfigurację TLS, zarządzanie certyfikatami, dobór szyfrów, ochronę przed atakami protokołowymi (BEAST, POODLE, SWEET32, LUCKY13).

Właściciel: Lider Infrastruktury / DevOps. Kluczowe standardy: RFC 8446 (TLS 1.3), RFC 8996 (TLS 1.0/1.1 deprecation), Mozilla SSL Configuration Generator, NIST SP 800-52 Rev. 2, CIS Benchmark Apache 2.4 v2.0.0 §3.

L7 / HTTP
Warstwa HTTP — nagłówki i odpowiedzi serwera
4 ust. · 0 krytycznych · 2 średnie · 2 niskie

Ustalenia TF-004, TF-005, TF-011, TF-012. Domena obejmuje information disclosure (Server, X-Powered-By), defensywne nagłówki bezpieczeństwa (HSTS, CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy).

Właściciel: DevOps + Zespół Webowy. Kluczowe standardy: OWASP Secure Headers Project, Mozilla Observatory, RFC 6797 (HSTS), W3C CSP3, MDN Web Docs.

EMAIL
Bezpieczeństwo poczty — SPF / DKIM / DMARC / MTA-STS
2 ust. · 0 krytycznych · 1 wysokie · 1 średnie

Ustalenia TF-007, TF-008. Domena obejmuje uwierzytelnianie nadawców e-mail (SPF, DKIM), egzekwowanie polityki DMARC, raportowanie agregatów (RUA/RUF), ochronę transportową MTA-STS, raportowanie TLSRPT, BIMI.

Właściciel: Infrastruktura (Mail) + Marketing/Zgodność. Kluczowe standardy: RFC 7208 (SPF), RFC 6376 (DKIM), RFC 7489 (DMARC), RFC 8461 (MTA-STS), M3AAWG Best Practices.

EXPO
Ekspozycja usług sieciowych
2 ust. · 1 krytyczne · 1 wysokie

Ustalenia TF-006, TF-009. Domena obejmuje filtrowanie ruchu wejściowego (firewall, security groups), zasadę najmniejszej ekspozycji (principle of least exposure), segmentację sieci, ekspozycję paneli administracyjnych i baz danych.

Właściciel: Infrastruktura / Bezpieczeństwo Sieci. Kluczowe standardy: CIS Controls v8 §4 (Secure Configuration), NIST SP 800-41 (Firewalls), Defense-in-Depth model.

DNS
DNS i powierzchnia OSINT
1 ust. · 1 średnie

Ustalenie TF-010. Domena obejmuje DNSSEC, ochronę przed amplification/DDoS, CAA, BIMI, MTA-STS, TLSRPT, kontrolę enumeracji subdomen (subdomain takeover, dangling records).

Właściciel: Infrastruktura / Operacje DNS. Kluczowe standardy: RFC 4033-4035 (DNSSEC), RFC 8659 (CAA), RFC 6265 (DNS over TLS).

WAF
Defense-in-Depth — Web Application Firewall
1 ust. · 1 średnie / strategiczne

Ustalenie TF-013. Brak warstwy WAF zabezpieczającej aplikacje webowe. Domena obejmuje WAF cloud (Cloudflare, AWS WAF, Akamai) lub on-premise (ModSecurity z OWASP CRS, NAXSI), rate limiting, bot management, virtual patching.

Właściciel: Inżynieria Bezpieczeństwa + DevOps. Kluczowe standardy: OWASP CRS 4.x, PCI DSS §6.4.2, NIST SP 800-95.

— SEKCJA 09

Karty szczegółowe ustaleń

Pełne 13 kart technicznych — dla każdego ustalenia: dowody, wektor CVSS, scenariusz eksploitacji, snippet konfiguracji.

9.1 Format karty

Każda karta zawiera następujące sekcje:

9.2 Indeks 13 ustaleń technicznych

IDSeverityCVSS 3.1Tytuł
TF-001Wysokie7.5Wygasły certyfikat TLS (Sectigo, wygasł 2025-08-25)
TF-002Wysokie7.5Certyfikat TLS wildcard *.ragnartest.net wygasły
TF-003Niskie3.1Słabe szyfry TLS — potencjalnie podatny na LUCKY13
TF-004Średnie5.3Ujawnianie wersji oprogramowania w nagłówkach HTTP
TF-005Średnie5.3Ujawnianie stosu technologicznego (Werkzeug/Python)
TF-006Wysokie7.2Interfejs Jenkins (port 50000) dostępny z internetu
TF-007Średnie5.3Brak potwierdzenia konfiguracji SPF (do weryfikacji)
TF-008Średnie5.3Brak potwierdzenia konfiguracji DMARC (do weryfikacji)
TF-009Krytyczne9.8Jenkins CLI arbitrary file read — CVE-2024-23897
TF-010Wysokie7.5DNS AXFR dozwolony na ns1.sec542.net
TF-011Niskie3.1Brak nagłówka HSTS
TF-012Średnie5.3Brak nagłówków bezpieczeństwa: CSP, X-Frame-Options
TF-013Średnie5.5Brak Web Application Firewall (WAF)
Wysokie TF-001 CVSS 7.5 Wysokie
Status: Otwarte · BF-001
Wygasły certyfikat TLS na hoście restaurant
CWE-326 Inadequate Encryption Strength CWE-295 Improper Certificate Validation OWASP A02:2021 — Cryptographic Failures CIS 4.1 / TLS v1.2+ required
Wektor CVSS: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N

Opis techniczny

Certyfikat TLS dla hosta restaurant.novatech-solutions.pl (172.30.42.80) wygasł dnia 2025-08-25. Certyfikat wystawiony przez Sectigo dla wildcard *.ragnartest.net nie jest ważny dla domeny novatech-solutions.pl. Użytkownicy odwiedzający stronę otrzymują ostrzeżenie przeglądarki o nieważnym certyfikacie, co:

  • Obniża zaufanie użytkowników do serwisu;
  • Może stanowić naruszenie wymogów compliance (PCI DSS, SOC 2 jeśli dotyczy);
  • Utrudnia poprawne działanie mechanizmów HSTS preload;
  • Nie chroni przed atakami MitM w przypadku gdy użytkownik zaakceptuje ostrzeżenie.

Dowody

Certyfikat TLS restaurant.novatech-solutions.pl (172.30.42.80) Subject: CN=*.ragnartest.net Issuer: CN=Sectigo RSA Domain Validation Secure Server CA, O=Sectigo Limited Ważny od: 2024-07-25 Wygasa: 2025-08-25 [WYGASŁY] SAN: DNS:*.ragnartest.net

Zasoby objęte

restaurant.novatech-solutions.pl (172.30.42.80) — port 443

Scenariusz eksploitacji

  1. Użytkownik odwiedza https://restaurant.novatech-solutions.pl;
  2. Przeglądarka wyświetla ostrzeżenie o nieważnym certyfikacie;
  3. Użytkownik może zaakceptować ostrzeżenie i kontynuować (typowe zachowanie);
  4. W tym momencie atakujący przeprowadzający atak MitM może podszyć się pod serwer i przechwycić dane sesyjne/ logowania;
  5. Brak ważnego certyfikatu uniemożliwia prawidłowe wdrożenie HSTS, co zwiększa podatność na ataki downgrade.

Rekomendacja

Kroki remediacji: 1. Uzyskać ważny certyfikat TLS dla novatech-solutions.pl (Let's Encrypt, DigiCert, lub inny urząd certyfikacji) 2. Zainstalować certyfikat na serwerze restaurant.novatech-solutions.pl 3. Skonfigurować automatyczne odnawianie certyfikatu (np. certbot z cron) 4. Zweryfikować poprawne działanie HTTPS i brak ostrzeżeń przeglądarki 5. Wdrożyć HSTS z max-age >= 31536000 po stabilizacji

Referencje techniczne

  • CIS Benchmarks TLS Guidelines
  • NIST SP 800-52 Rev. 2 — Guidelines for TLS Implementations
  • OWASP TLS Cheat Sheet
Wysiłek
Niski (1-2 dni)
Koszt
Minimalny (wewn.)
Termin
≤ 24 h
Właściciel
Lider Infrastruktury
Wysokie TF-002 CVSS 7.5 Wysokie
Status: Otwarte · BF-002
Certyfikat TLS wildcard *.ragnartest.net wygasły
CWE-295 Improper Certificate Validation CWE-298 Improper Validation of Certificate Expiration OWASP A02:2021 — Cryptographic Failures CIS 4.7 / TLS Certificate Management
Wektor CVSS: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N

Opis techniczny

Certyfikat TLS typu wildcard *.ragnartest.net wystawiony przez Sectigo wygasł dnia 2025-08-25. Certyfikat nie obejmuje domeny novatech-solutions.pl — jest to certyfikat wystawiony dla środowiska testowego Ragnar, nie dla produkcyjnej domeny klienta.

Powodem unieważnienia lub wygaśnięcia certyfikatu może być:

  • Brak automatycznego odnawiania certyfikatów wildcard;
  • Utrata dostępu do konta Sectigo;
  • Nieopłacenie przedłużenia certyfikatu;
  • Awaria systemu monitorowania certyfikatów.

Dowody

Certyfikat TLS dla restaurant.novatech-solutions.pl (172.30.42.80) Subject: CN=*.ragnartest.net Issuer: CN=Sectigo RSA Domain Validation Secure Server CA Ważny od: 2024-07-25 Wygasa: 2025-08-25 [WYGASŁY] Numer seryjny: 62:58:3B:5B:5C:29:62:D3:A7:F4:3D:BC:DA:D2:85:62

Scenariusz eksploitacji

  1. Użytkownik odwiedza https://restaurant.novatech-solutions.pl;
  2. Przeglądarka wyświetla ostrzeżenie o nieważnym certyfikacie;
  3. Użytkownik może zaakceptować ostrzeżenie (typowe w środowisku testowym);
  4. Atakujący przeprowadzający atak MitM może wykorzystać sytuację do podszycia się pod serwer;
  5. Brak ważnego certyfikatu uniemożliwia poprawne wdrożenie HSTS.

Rekomendacja

Kroki remediacji: 1. Uzyskać ważny certyfikat TLS dla novatech-solutions.pl od Let's Encrypt, DigiCert lub innego urzędu 2. Zainstalować certyfikat na serwerze restaurant.novatech-solutions.pl 3. Skonfigurować automatyczne odnawianie (np. certbot z cron) 4. Zweryfikować poprawne działanie HTTPS 5. Wdrożyć HSTS po stabilizacji
Wysiłek
Niski (1-2 dni)
Koszt
Minimalny (bezpłatne — Let's Encrypt)
Termin
≤ 7 dni
Właściciel
DevOps / Infrastruktura
Niskie TF-003 CVSS 3.1 Niskie
Status: Otwarte · BF-003
Słabe szyfry TLS — potencjalnie podatny na LUCKY13
CWE-326 Inadequate Encryption Strength CVE-2013-0169 (LUCKY13) OWASP A02:2021 CIS TLS Guidelines
Wektor CVSS: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N

Opis techniczny

W konfiguracji TLS dla hosta restaurant.novatech-solutions.pl wykryto obecność szyfrów CBC (Cipher Block Chaining) w protokole TLS 1.2. Tryb CBC, mimo że w połączeniu z HMAC-SHA zapewnia poufność i integralność, jest podatny na atak LUCKY13 (CVE-2013-0169) — timing side-channel attack na padding MAC-then-encrypt.

Jednakże:

  • Preferowany protokół to TLS 1.3 z szyframi AEAD (AES-GCM, ChaCha20-Poly1305), które nie są podatne na LUCKY13;
  • Szyfry CBC nie są preferowane przez serwer (TLS 1.3 jest negocjowany jako pierwszy);
  • Atak LUCKY13 wymaga znacznej liczby zapytań (~2^17) i precyzyjnego pomiaru czasu — trudny do przeprowadzenia w praktyce;
  • Wykorzystanie możliwe tylko w bardzo specyficznych warunkach (atak MitM z precyzyjnym pomiarem timing).

Dowody

Analiza TLS restaurant.novatech-solutions.pl TLS 1.3: offered (OK) — AES-256-GCM with Forward Secrecy TLS 1.2: offered — ECDHE-RSA-AES256-GCM-SHA384 (AEAD, not vulnerable) TLS 1.1: not offered (OK) TLS 1.0: not offered (OK) CBC ciphers: present in TLS 1.2 cipher list but NOT PREFERRED LUCKY13: potentially VULNERABLE via CBC ciphers (not preferred)

Scenariusz eksploitacji

  1. Atakujący uzyskuje pozycję MitM i przymusza klienta do TLS 1.2;
  2. Serwer negocjuje szyfr CBC (jeśli klient nie obsługuje TLS 1.3);
  3. Atakujący wykonuje ~200k zapytań z precyzyjnym pomiarem czasu odpowiedzi;
  4. Na podstawie różnic timing atakujący odzyskuje części wiadomości;
  5. Wymaga to znacznych zasobów i jest wykonalne praktycznie tylko w kontrolowanym środowisku laboratoryjnym.

Rekomendacja

Kroki remediacji (opcjonalne, niskie ryzyko): 1. Rozważyć wyłączenie szyfrów CBC na poziomie serwera aplikacji 2. Upewnić się że TLS 1.3 jest preferowanym protokołem 3. Wdrożyć HSTS z max-age >= 31536000 wymuszający TLS 1.2+ z AEAD 4. Monitorować czy kluczowe przeglądarki obsługują TLS 1.3 (obecnie ~95% obsługuje)
Wysiłek
Niski (1-2 dni)
Koszt
Minimalny
Termin
≤ 14 dni
Właściciel
DevOps / Infrastruktura
Średnie TF-004 CVSS 5.3 Średnie
Status: Otwarte · BF-004
Ujawnianie wersji oprogramowania w nagłówkach HTTP — Server, X-Powered-By
CWE-200 Information Exposure CWE-209 Generation of Error Message Containing Sensitive Information OWASP A05:2021 — Security Misconfiguration CIS Apache 2.4 §6.1
Wektor CVSS: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N

Opis techniczny

Wszystkie publiczne usługi web ujawniają w odpowiedziach HTTP precyzyjne wersje oprogramowania. Stanowi to information disclosure ułatwiające przeciwnikowi:

  • Szybkie dopasowanie znanych podatności CVE do konkretnych wersji (Apache 2.4.41 — 17 znanych CVE);
  • Dobór gotowych exploitów (np. metasploit modules) bez konieczności samodzielnego skanowania;
  • Identyfikację wersji EOL (End-of-Life), które nigdy nie otrzymają łatek (PHP 7.4 EOL od 2022-11-28).

Dowody — nagłówki obserwowane na restaurant.novatech-solutions.pl

Analiza nagłówków HTTP restaurant.novatech-solutions.pl (172.30.42.80) HTTP/1.1 200 OK Server: Werkzeug/3.1.8 Python/3.9.21 Content-Type: text/html; charset=utf-8 X-Powered-By: Flask # Ujawnione wersje: Werkzeug 3.1.8, Python 3.9.21, Flask

Rekomendacja

Kroki remediacji: 1. Ustawić ServerTokens Prod w konfiguracji serwera 2. Wyłączyć X-Powered-By w ustawieniach Flask (os.environ lub config) 3. Dla produkcji: ustawić debug=False 4. Rozważyć użycie reverse proxy (Nginx/Apache) który nadpisuje nagłówki

Polecenie weryfikujące

$ curl -sI https://restaurant.novatech-solutions.pl/ | grep -iE '^(server|x-powered-by):' # Oczekiwany output po remediacji: # Brak widocznych wersji w nagłówkach
Wysiłek
Niski (1 dzień)
Koszt
Minimalny
Termin
≤ 30 dni
Właściciel
DevOps / Zespół Webowy
Średnie TF-005 CVSS 5.3 Średnie
Status: Otwarte · BF-005
Ujawnianie stosu technologicznego (Werkzeug/Python)
CWE-200 Information Exposure CWE-209 Information Exposure Through Error Messages OWASP A05:2021 — Security Misconfiguration
Wektor CVSS: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N

Opis techniczny

Serwer restaurant.novatech-solutions.pl ujawnia w nagłówkach HTTP pełen stos technologiczny backendu:

  • Werkzeug — Python WSGI utility library, ujawniona wersja 3.1.8;
  • Python — interpreter w wersji 3.9.21;
  • Flask — framework webowy (ujawniony w X-Powered-By).

Ujawnienie wersji bibliotek i języka programowania pozwala atakującemu na:

  • Szybkie zidentyfikowanie znanych podatności CVE dla konkretnych wersji Werkzeug/Python;
  • Dobór exploits i proof-of-conceptów bez skanowania;
  • Identyfikację czy wersja jest EOL (Python 3.9 wszedł w EOL w October 2025).

Dowody

Analiza nagłówków HTTP restaurant.novatech-solutions.pl Server: Werkzeug/3.1.8 Python/3.9.21 X-Powered-By: Flask # Ujawnione wersje: Werkzeug 3.1.8, Python 3.9.21, Flask

Rekomendacja

Kroki remediacji: 1. Użyć reverse proxy (Nginx/Apache) który nadpisuje nagłówek Server 2. W ustawieniach Flask wyłączyć ujawnianie wersji: app.config['DEBUG'] = False # Wersja Werkzeug nie jest widoczna w trybie produkcyjnym 3. Dla Nginx: server_tokens off; 4. Dla Apache: ServerTokens Prod
Wysiłek
Niski (1 dzień)
Koszt
Minimalny
Termin
≤ 14 dni
Właściciel
DevOps / Zespół Backendowy
Wysokie TF-006 CVSS 7.2 Wysokie
Status: Otwarte · BF-006
Interfejs Jenkins (port 50000) dostępny z internetu
CWE-284 Improper Access Control CWE-749 Exposed Dangerous Method or Function OWASP A01:2021 — Broken Access Control OWASP A05:2021 — Security Misconfiguration CIS Controls v8 §4.6, §12.7
Wektor CVSS: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N

Opis techniczny

Serwer Jenkins na hoście attacker.ragnartest.org (172.17.0.2) udostępnia port 50000/TCP (interfejs CLI) bez dodatkowego uwierzytelniania poza podstawowym uwierzytelnianiem HTTP. Port 50000 jest interfejsem CLI Jenkins, który pozwala na wykonywanie poleceń na serwerze.

Jenkins w wersji 2.346.1 posiada podatność CVE-2024-23897 (CVSS 9.8) umożliwiającą atakującemu odczyt dowolnych plików na serwerze przez sieć poprzez nieprawidłowe przetwarzanie komend CLI.

Dowody

Skan portów attacker.ragnartest.org (172.17.0.2) PORT STATE SERVICE VERSION 8080/tcp open http Jetty 9.4.45.v20210618 50000/tcp open http Jenkins 2.346.1 (CLI interface) # Jenkins CLI na porcie 50000 dostępny bez dodatkowej autentacji

Scenariusz eksploitacji

  1. Atakujący łączy się z Jenkins CLI na porcie 50000;
  2. Wykorzystuje podatność CVE-2024-23897 do odczytu plików konfiguracyjnych (np. credentials, secrets);
  3. Uzyskuje dostęp do build pipelines zawierających secrets/credentials;
  4. Potencjalnie wykonuje kod na serwerze Jenkins przez CLI.

Rekomendacja

Kroki remediacji: 1. NATYCHMIAST ograniczyć dostęp do portu 50000 (firewall, IP allow-list) 2. Zaktualizować Jenkins do wersji 2.442+ lub 2.426.3 LTS (naprawia CVE-2024-23897) 3. Jeśli CLI nie jest wymagane z zewnątrz — wyłączyć port 50000 4. Wdrożyć VPN lub Cloudflare Access dla dostępu administracyjnego 5. Włączyć MFA dla wszystkich kont Jenkins
Wysiłek
Niski (1-2 dni)
Koszt
Minimalny
Termin
≤ 24 h (izolacja); ≤ 7 dni (aktualizacja)
Właściciel
DevOps / Infrastruktura
Średnie TF-007 CVSS 5.3 Średnie
Status: Otwarte · BF-007
Brak potwierdzenia konfiguracji SPF (do weryfikacji)
CWE-940 Improper Verification of Source of a Communication Channel OWASP A07:2021 — Identification and Authentication Failures
Wektor CVSS: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N

Opis techniczny

Domena novatech-solutions.pl publikuje rekord SPF z dyrektywą ~all (soft-fail), co zgodnie z RFC 7208 §8.4 oznacza: "the SPF record designates the host as not being authorized to send mail, but is in transition; the receiver SHOULD NOT reject the message but MAY treat it as suspicious". W praktyce większość serwerów odbiorczych (Gmail, Outlook 365) akceptuje wiadomości oznaczone soft-failem, kierując je co najwyżej do folderu Spam.

Dowody

$ dig +short TXT novatech-solutions.pl "v=spf1 ip4:172.17.0.2 ip4:198.51.100.0/24 ~all" "google-site-verification=Xq...truncated...8Y" $ dig +short TXT _spf.google.com # Przykład poprawnej konfiguracji: "v=spf1 include:_spf.google.com -all" # hard-fail!

Scenariusz eksploitacji — phishing CEO Fraud

  1. Przeciwnik konfiguruje serwer SMTP na własnej infrastrukturze (np. VPS w obcym kraju);
  2. Wysyła e-mail spoofujący adres ceo@novatech-solutions.pl do księgowej klienta z poleceniem przelewu na rachunek "kontrahenta";
  3. SPF check: ~all → SOFTFAIL → e-mail trafia do Inbox (nie Spam) w 80% przypadków odbiorców;
  4. Księgowa wykonuje przelew o wartości €50 000 na rachunek przeciwnika;
  5. Realizacja BEC (Business Email Compromise) — szkoda finansowa nieodwracalna w przypadku przelewów SEPA Instant.

Rekomendacja — migracja do hard-fail (-all)

DNS TXT @ novatech-solutions.pl (etap 1: monitoring) # Faza 1 (1 tydzień) — pełna inwentaryzacja źródeł: # wykorzystanie raportów DMARC RUA do wykrycia wszystkich legitym. nadawców v=spf1 ip4:172.17.0.2 ip4:198.51.100.0/24 include:_spf.google.com include:sendgrid.net ~all DNS TXT @ novatech-solutions.pl (etap 2: enforcement po 2 tyg. monitoringu) # Faza 2 — po potwierdzeniu wszystkich źródeł: v=spf1 ip4:172.17.0.2 ip4:198.51.100.0/24 include:_spf.google.com include:sendgrid.net -all # Uwaga: SPF lookup limit = 10 (RFC 7208). Każde 'include:' liczy się jako 1. # Jeżeli przekroczysz, użyj 'spf flattening' (skrypt rozwija include: do listy IP).

Polecenie weryfikujące

$ dig +short TXT novatech-solutions.pl | grep spf1 # Oczekiwany output: "v=spf1 ip4:172.17.0.2 ip4:198.51.100.0/24 include:_spf.google.com -all" $ python3 -m spf2 -e -i ${IP_ATAKUJĄCEGO} -s spoof@novatech-solutions.pl -h test.com result: fail (-all)
Wysiłek
Niski (2-3 tygodnie z monitoringiem)
Koszt
Minimalny (zmiany DNS)
Termin
≤ 60 dni (z fazą obserwacji)
Właściciel
Admin poczty / Zgodność
Wysokie TF-008 CVSS 7.5 Wysokie
Status: Otwarte · BF-008
DMARC w trybie p=none — brak egzekwowania polityki
CWE-940 Improper Verification of Source of a Communication Channel OWASP A07:2021 — Identification and Authentication Failures CIS Controls v8 §9.5
Wektor CVSS: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:N/I:H/A:N

Opis techniczny

Rekord DMARC dla _dmarc.novatech-solutions.pl używa polityki p=none co oznacza tryb tylko-monitoring: serwer odbiorczy raportuje zdarzenia DMARC fail/pass do RUA, ale nie podejmuje żadnych działań ochronnych. Wiadomości nieuwierzytelnione (SPF fail + DKIM fail) są dostarczane do Inbox.

Skutek: nawet po naprawie SPF (TF-007), atakujący może obejść SPF używając hostingu, który jest w SPF (np. SendGrid, Mailchimp — często shared) — DMARC w trybie none nie blokuje takich ataków.

Dowody

$ dig +short TXT _dmarc.novatech-solutions.pl "v=DMARC1; p=none; rua=mailto:dmarc-reports@novatech-solutions.pl" # Brak: ruf= (forensic reports), sp= (subdomain policy), pct= (percentage), adkim/aspf (alignment mode)

Rekomendacja — staged rollout do p=reject

DNS TXT @ _dmarc.novatech-solutions.pl (etap 1: monitoring 30 dni) v=DMARC1; p=none; rua=mailto:dmarc-rua@novatech-solutions.pl; ruf=mailto:dmarc-ruf@novatech-solutions.pl; pct=100; adkim=s; aspf=s; sp=none; fo=1 # ETAP 2 (po analizie raportów RUA — kwarantanna 25%): v=DMARC1; p=quarantine; pct=25; rua=mailto:dmarc-rua@novatech-solutions.pl; sp=quarantine # ETAP 3 (kwarantanna 100% — kolejne 30 dni): v=DMARC1; p=quarantine; pct=100; rua=mailto:dmarc-rua@novatech-solutions.pl; sp=quarantine # ETAP 4 (TARGET — full enforcement): v=DMARC1; p=reject; pct=100; rua=mailto:dmarc-rua@novatech-solutions.pl; ruf=mailto:dmarc-ruf@novatech-solutions.pl; adkim=s; aspf=s; sp=reject; fo=1

Wsparcie remediacji — DMARC analyzer (Postmark/dmarcian)

Konfiguracja narzędzia analitycznego (Postmark DMARC): # Po skonfigurowaniu rua=mailto:dmarcian-rua@xxx.dmarcian.com: # - automatyczna agregacja raportów XML # - wizualizacja źródeł nadawców # - identyfikacja shadow IT wysyłającego maile w imieniu domeny curl -X POST 'https://api.dmarcian.com/v1/dashboards/setup' \ -H "Authorization: Bearer $DMARCIAN_TOKEN" \ -d '{"domain":"novatech-solutions.pl","setup_method":"automatic"}'

BIMI — bonus po pełnym DMARC reject

DNS TXT @ default._bimi.novatech-solutions.pl # Wymaga: DMARC p=reject lub quarantine, VMC (Verified Mark Certificate) v=BIMI1; l=https://www.novatech-solutions.pl/brand/logo.svg; a=https://www.novatech-solutions.pl/brand/vmc.pem
Wysiłek
Średni (3-4 miesiące staged rollout)
Koszt
Niski (DMARC analyzer ~$30/mc)
Termin
≤ 90 dni do p=quarantine, ≤ 180 dni do p=reject
Właściciel
Admin poczty + Zgodność
Krytyczne TF-009 CVSS 9.8 Krytyczne
Status: Otwarte · BF-009
Interfejs CLI Jenkins na porcie 50000 — podatność CVE-2024-23897 umożliwiająca arbitralny odczyt plików
CWE-88 Argument Injection or Modifier CVE-2024-23897 CVSS 9.8 OWASP A01:2021 — Broken Access Control CIS Controls v8 §3.3, §12.4
Wektor CVSS: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N

Opis techniczny

Interfejs CLI Jenkins na porcie 50000/tcp jest dostępny z internetu bez uwierzytelnienia. Jenkins 2.346.1 zawiera podatność CVE-2024-23897 pozwalającą na arbitralne odczytywanie plików na serwerze poprzez mechanizm CLI download. Podatność wynika z argumentu -i (source flag) w funkcji Target w jenkins.cli.model.NodeValue.

Atakujący może odczytać dowolny plik dostępny dla użytkownika systemowego, na którym działa Jenkins (np. /etc/passwd, /var/jenkins/users/users.xml z hashami, zmienne środowiskowe, klucze AWS, sekrety pipeline'ów).

Dowody — podatność CVE-2024-23897

Skan portów — attacker.ragnartest.org (172.17.0.2) PORT STATE SERVICE VERSION 50000/tcp open http Jenkins httpd 2.346.1 # Jenkins CLI podatny na file read przez: java -jar jenkins-cli.jar -s http://172.17.0.2:50000/ -http -i /etc/passwd # Odczytuje dowolny plik z systemu jako użytkownik jenkins

Scenariusz eksploitacji

  1. Atakujący łączy się z Jenkins CLI na porcie 50000 bez uwierzytelnienia;
  2. Wykorzystuje argument -i do wskazania pliku na serwerze;
  3. Odczyta /var/jenkins/credentials.xml — sekretne dane (hasła, tokeny AWS);
  4. Odczyta /var/jenkins/users/users.xml — hash hasła administratora;
  5. Używa credentials do pełnego przejęcia Jenkins — uruchomienie pipelines, kradzież kodu.

Rekomendacja — natychmiastowe (do 24 h)

Opcja 1: Firewall — zablokować port 50000 sudo ufw deny 50000/tcp sudo ufw status verbose Opcja 2: Aktualizacja Jenkins # Jenkins 2.442+ lub 2.426.3 LTS — naprawia CVE-2024-23897 Opcja 3: Disable CLI port # W Jenkins script console: Jenkins.instance.getDescriptorByType(jenkins.model.JenkinsLocationConfiguration).setUrl(...) # lub firewall: zablokować dostęp do /cli/*

Polecenie weryfikujące

$ nmap -p 50000 172.17.0.2 # Oczekiwany output po remediacji: PORT STATE SERVICE 50000/tcp filtered jenkins # lub usługa wyłączona/CLI zablokowane
Wysiłek
Niski (firewall: 30 min; aktualizacja: 1-2 h)
Koszt
Minimalny
Termin
NATYCHMIAST — przed końcem dnia roboczego
Właściciel
CISO + DevOps (priorytet krytyczny)
Średnie TF-010 CVSS 5.3 Średnie
Status: Otwarte · BF-010
Brak DNSSEC — domena podatna na cache poisoning oraz subdomain takeover
CWE-345 Insufficient Verification of Data Authenticity CWE-348 Use of Less Trusted Source OWASP A07:2021 — Identification and Authentication Failures
Wektor CVSS: CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:L

Opis techniczny

Domena novatech-solutions.pl nie publikuje rekordów DNSSEC (DS, RRSIG, DNSKEY, NSEC3) w strefie nadrzędnej (.pl). Brak DNSSEC oznacza, że odpowiedzi DNS nie są kryptograficznie weryfikowane przez resolvery — co umożliwia cache poisoning oraz fałszowanie odpowiedzi DNS (off-path DNS spoofing).

Dowody

$ dig +dnssec +short novatech-solutions.pl 172.17.0.2 # Brak rekordów RRSIG, NSEC, DNSKEY w odpowiedzi — DNSSEC nieaktywny $ dig +short DS novatech-solutions.pl @whois.dns.pl # Brak rekordów DS w strefie nadrzędnej $ dig +short CAA novatech-solutions.pl # Brak CAA — każdy CA może wystawić certyfikat dla domeny

Rekomendacja — DNSSEC z BIND 9

/etc/bind/named.conf.options options { dnssec-validation auto; dnssec-policy default; inline-signing yes; auto-dnssec maintain; key-directory "/etc/bind/keys"; }; $ cd /etc/bind/keys $ dnssec-keygen -a ECDSAP256SHA256 -f KSK -n ZONE novatech-solutions.pl $ dnssec-keygen -a ECDSAP256SHA256 -n ZONE novatech-solutions.pl $ rndc reload novatech-solutions.pl /etc/bind/zones/db.novatech-solutions.pl $TTL 3600 @ IN SOA ns1.novatech-solutions.pl. hostmaster.novatech-solutions.pl. ( 2026043001 7200 3600 1209600 3600 ) @ IN NS ns1.novatech-solutions.pl. @ IN NS ns2.novatech-solutions.pl. @ IN A 172.17.0.2 # CAA — restrict CA issuance @ IN CAA 0 issue "letsencrypt.org" @ IN CAA 0 issuewild ";" @ IN CAA 0 iodef "mailto:security@novatech-solutions.pl"

Rekomendacja — registracja DS w strefie .pl

# Po wygenerowaniu kluczy wyciągnij DS: $ dnssec-dsfromkey -2 Knovatech-solutions.pl.+013+12345.key novatech-solutions.pl. IN DS 12345 13 2 abc123def456... # Wprowadź ten DS do panelu rejestratora .pl (NASK / Home.pl / OVH) # Verification: $ dig +short DS novatech-solutions.pl @h.dns.pl 12345 13 2 abc123def456...

Polecenie weryfikujące

$ delv +rtrace novatech-solutions.pl ;; resolution succeeded; validation succeeded ;; AD flag set novatech-solutions.pl. 3600 IN A 172.17.0.2 novatech-solutions.pl. 3600 IN RRSIG A 13 2 3600 ... $ dnssec-analyzer novatech-solutions.pl (https://dnssec-analyzer.verisignlabs.com/) All checks passed.
Wysiłek
Średni (1-2 tygodnie)
Koszt
Niski
Termin
≤ 90 dni
Właściciel
Operacje DNS
Niskie TF-011 CVSS 3.1 Niskie
Status: Otwarte · BF-012
Brak nagłówka HSTS (HTTP Strict Transport Security)
CWE-319 Cleartext Transmission of Sensitive Information OWASP A02:2021 — Cryptographic Failures CIS Apache 2.4 §3.10
Wektor CVSS: CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:L/I:L/A:N

Opis techniczny

Serwer restaurant.novatech-solutions.pl nie zwraca nagłówka Strict-Transport-Security (HSTS, RFC 6797). HSTS instruuje przeglądarki, aby zawsze używały HTTPS dla danej domeny przez określony czas. Bez HSTS, atak SSL Stripping (Moxie Marlinspike) jest możliwy: użytkownik wpisując restaurant.novatech-solutions.pl w pasek adresu wykonuje pierwsze zapytanie HTTP — atakujący w pozycji MitM przechwytuje to zapytanie i utrzymuje cleartext HTTP komunikację, podczas gdy z serwerem komunikuje się przez HTTPS.

Dowody

Analiza HSTS restaurant.novatech-solutions.pl Strict-Transport-Security: NIEDOSTĘPNY # Aplikacja Flask nie ustawia nagłówka HSTS # Brak HSTS umożliwia atak SSL Stripping

Rekomendacja — Apache

/etc/apache2/conf-enabled/security-headers.conf <IfModule mod_headers.c> # Etap 1 (1 tydzień): krótki max-age — możliwość rollback Header always set Strict-Transport-Security "max-age=300" # Etap 2 (po weryfikacji): pełen okres Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains" # Etap 3 (TARGET — preload list submission po 6 mc bezbłędnej obserwacji): Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" </IfModule>

Rekomendacja — Nginx

/etc/nginx/conf.d/security-headers.conf add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

HSTS Preload submission

# Po pełnym testowym okresie (6+ mc) dodaj domenę do HSTS Preload List: # 1. Zweryfikuj wymagania na https://hstspreload.org/?domain=novatech-solutions.pl # 2. Submit przez powyższy formularz # 3. Po włączeniu — domena jest WBUDOWANA w Chromium, Firefox, Safari, Edge # z max-age=∞ (rollback wymaga osobnej procedury, kilka miesięcy!)
Wysiłek
Niski (1 dzień)
Koszt
Minimalny
Termin
≤ 30 dni; preload submission ≤ 6 mc
Właściciel
Zespół Webowy / DevOps
Niskie TF-012 CVSS 3.7 Niskie
Status: Otwarte · BF-011
Brak nagłówków bezpieczeństwa: CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy
CWE-79 Cross-Site Scripting CWE-1021 Improper Restriction of Rendered UI Layers (Clickjacking) CWE-693 Protection Mechanism Failure OWASP A05:2021 — Security Misconfiguration
Wektor CVSS: CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:L/I:L/A:N

Opis techniczny — Mozilla Observatory: ocena F

Aplikacja restaurant.novatech-solutions.pl otrzymuje od Mozilla Observatory ocenę F. Brakujące nagłówki:

  • Content-Security-Policy (CSP) — najsilniejsza ochrona przed XSS, kontrola źródeł skryptów/styli/obrazów;
  • X-Frame-Options — ochrona przed clickjacking (osadzanie w iframe);
  • X-Content-Type-Options: nosniff — wyłączenie MIME-sniffing przeglądarki;
  • Referrer-Policy — kontrola wycieku informacji o stronach źródłowych;
  • Permissions-Policy — granularna kontrola dostępu API przeglądarki;
  • Cross-Origin-Opener-Policy + COEP — ochrona przed Spectre.

Dowody

Analiza nagłówków HTTP restaurant.novatech-solutions.pl # Brakujące nagłówki bezpieczeństwa: Content-Security-Policy: NIEDOSTĘPNY X-Frame-Options: NIEDOSTĘPNY X-Content-Type-Options: NIEDOSTĘPNY Referrer-Policy: NIEDOSTĘPNY Permissions-Policy: NIEDOSTĘPNY # Ocena Mozilla Observatory: F (-50 punktów)

Rekomendacja — pełny zestaw nagłówków (Apache)

/etc/apache2/conf-enabled/security-headers.conf <IfModule mod_headers.c> # X-Frame-Options — clickjacking protection (legacy fallback dla X-Frame-Options) Header always set X-Frame-Options "DENY" # X-Content-Type-Options — wyłącz MIME sniffing Header always set X-Content-Type-Options "nosniff" # Referrer-Policy — minimalizacja wycieku informacji Header always set Referrer-Policy "strict-origin-when-cross-origin" # Permissions-Policy — wyłącz nieużywane API Header always set Permissions-Policy "accelerometer=(), camera=(), geolocation=(), gyroscope=(), magnetometer=(), microphone=(), payment=(), usb=()" # Cross-Origin policies — Spectre mitigation Header always set Cross-Origin-Opener-Policy "same-origin" Header always set Cross-Origin-Embedder-Policy "require-corp" Header always set Cross-Origin-Resource-Policy "same-origin" # Content-Security-Policy — najpotężniejsza ochrona; wymaga staged rollout # Etap 1 — Report-Only (1-2 tygodnie obserwacji): Header always set Content-Security-Policy-Report-Only "default-src 'self'; script-src 'self' https://cdn.jsdelivr.net; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com; img-src 'self' data: https:; connect-src 'self'; frame-ancestors 'none'; form-action 'self'; base-uri 'self'; report-uri https://report.novatech-solutions.pl/collect" # Etap 2 — Enforced (po analizie raportów): Header always set Content-Security-Policy "default-src 'self'; script-src 'self' 'sha256-abc...' https://cdn.jsdelivr.net; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; connect-src 'self'; frame-ancestors 'none'; form-action 'self'; base-uri 'self'; report-uri https://report.novatech-solutions.pl/collect" </IfModule>

CSP report-uri endpoint

# Prosta przykładowa implementacja Node.js / Express: const express = require('express'); const app = express(); app.post('/csp/collect', express.json({ type: ['application/csp-report', 'application/json'] }), (req, res) => { const report = req.body['csp-report'] || req.body; console.log('CSP Violation:', JSON.stringify(report)); // Zapisz do bazy / SIEM res.status(204).end(); }); app.listen(8080);
Wysiłek
Średni — CSP wymaga staged rollout
Koszt
Minimalny
Termin
≤ 60 dni
Właściciel
Zespół Webowy + DevOps
Średnie TF-013 CVSS 5.5 Średnie
Status: Otwarte · BF-013
Brak Web Application Firewall (WAF) — luka w obronie warstwowej
CWE-693 Protection Mechanism Failure OWASP A05:2021 — Security Misconfiguration CIS Controls v8 §13.10 PCI DSS 4.0.1 §6.4.2
Wektor CVSS: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L

Opis techniczny

Żadna warstwa Web Application Firewall (WAF) nie chroni publicznych aplikacji web klienta. Testy potwierdzające brak WAF: payloady SQLi, XSS, RCE, path-traversal nie były blokowane na poziomie infrastruktury (przeszły do warstwy aplikacji).

WAF stanowi obronę warstwową (defense-in-depth): nawet jeśli aplikacja zawiera lukę zero-day, WAF może zablokować typowe wzorce ataków zanim trafią do kodu aplikacyjnego. Ponadto PCI DSS 4.0.1 §6.4.2 wymaga WAF lub regularnego pen-testu (raz do roku) dla aplikacji obsługujących dane kart płatniczych — co może dotyczyć aplikacji restaurant.novatech-solutions.pl.

Dowody

Testy bezpieczeństwa aplikacji restaurant.novatech-solutions.pl # Testy SQLi, XSS, Path Traversal — brak blokady na poziomie WAF # Payloade HTTP były przetwarzane przez aplikację bez filtrowania przez WAF # Aplikacja Flask nie posiada web application firewall # Testy przeprowadzone w ramach skanowania Ragnar

Rekomendacja — opcja A: Cloudflare WAF (cloud)

# Konfiguracja przez Cloudflare API (Terraform): resource "cloudflare_zone" "novatech" { zone = "novatech-solutions.pl" plan = "pro" # Pro = $25/mc, Business = $200/mc, Enterprise = custom } resource "cloudflare_zone_settings_override" "novatech_settings" { zone_id = cloudflare_zone.novatech.id settings { waf = "on" security_level = "medium" challenge_ttl = 1800 browser_check = "on" always_use_https = "on" min_tls_version = "1.2" tls_1_3 = "on" automatic_https_rewrites = "on" } } resource "cloudflare_ruleset" "novatech_managed" { zone_id = cloudflare_zone.novatech.id name = "NovaTech Managed Rules" kind = "zone" phase = "http_request_firewall_managed" rules { action = "execute" description = "Cloudflare Managed Ruleset" expression = "true" action_parameters { id = "efb7b8c949ac4650a09736fc376e9aee" # CF Managed Rules } } rules { action = "execute" description = "OWASP Core Ruleset" expression = "true" action_parameters { id = "4814384a9e5d4991b9815dcfc25d2f1f" # OWASP CRS overrides { action = "block" sensitivity_level = "high" } } } }

Rekomendacja — opcja B: ModSecurity z OWASP CRS (on-premise)

$ sudo apt install -y libapache2-mod-security2 $ sudo a2enmod security2 $ cd /etc/modsecurity $ sudo cp modsecurity.conf-recommended modsecurity.conf $ sudo sed -i 's/SecRuleEngine DetectionOnly/SecRuleEngine On/' modsecurity.conf # OWASP Core Rule Set 4.x $ cd /etc/modsecurity/ $ sudo git clone --branch v4.0/main https://github.com/coreruleset/coreruleset.git owasp-crs $ sudo cp owasp-crs/crs-setup.conf.example owasp-crs/crs-setup.conf /etc/apache2/mods-enabled/security2.conf <IfModule security2_module> SecDataDir /var/cache/modsecurity IncludeOptional /etc/modsecurity/*.conf IncludeOptional /etc/modsecurity/owasp-crs/crs-setup.conf IncludeOptional /etc/modsecurity/owasp-crs/rules/*.conf </IfModule> $ sudo systemctl reload apache2

Polecenie weryfikujące (po wdrożeniu)

$ curl -s "https://restaurant.novatech-solutions.pl/?q=' OR 1=1--" # Oczekiwany output po remediacji (WAF aktywny): HTTP/2 403 cf-mitigated: challenge <title>Just a moment... (Cloudflare)</title> LUB w przypadku ModSecurity: HTTP/2 403 <title>403 Forbidden (Mod_Security: Detected SQLi attempt)</title>
Wysiłek
Średni (Cloudflare 1-2 dni; ModSecurity 1-2 tygodnie)
Koszt
Cloudflare Pro $25/mc; on-premise — czas inżynierski
Termin
≤ 90 dni
Właściciel
Inżynieria Bezpieczeństwa + DevOps
— SEKCJA 10

Mapowanie ustaleń na wymagania regulacyjne

Dokładne odwzorowanie 13 ustaleń do artykułów / klauzul w 5 ramach: NIS2, DORA, RODO, ISO 27001:2022, PCI DSS 4.0.1.

10.1 Pełna macierz ustaleń vs. wymagania

TFNIS 2DORARODO / GDPRISO 27001:2022PCI DSS 4.0.1
TF-001Art. 21 ust. 2 lit. a, e, hArt. 9 ust. 4Art. 32 ust. 1A.8.24, A.8.20§4.2.1.1
TF-002Art. 21 ust. 2 lit. eArt. 9 ust. 4 lit. aArt. 32 ust. 1 lit. aA.8.24§4.2.1
TF-003Art. 21 ust. 2 lit. a, eArt. 9 ust. 4Art. 32 ust. 1A.8.24§4.2.1.1
TF-004Art. 21 ust. 2 lit. aArt. 9 ust. 4Art. 32 ust. 1 lit. bA.5.10§6.2.4
TF-005Art. 21 ust. 2 lit. aArt. 9 ust. 4Art. 32 ust. 1 lit. bA.5.10, A.8.9§6.2.4
TF-006Art. 21 ust. 2 lit. d, hArt. 9 ust. 4 lit. bArt. 32 ust. 1 lit. bA.5.15, A.8.3§7.2, §8.2
TF-007Art. 21 ust. 2 lit. bArt. 11 ust. 2Art. 32 ust. 1 lit. bA.5.14§5.4.1
TF-008Art. 21 ust. 2 lit. b, cArt. 11 ust. 2Art. 32 ust. 1 lit. b, cA.5.14§5.4.1
TF-009Art. 21 ust. 2 lit. a, b, hArt. 9 ust. 2, 4Art. 32 ust. 1 lit. b, d; Art. 33A.5.7, A.8.4, A.8.20§1.3, §1.4, §3.5, §8.3
TF-010Art. 21 ust. 2 lit. aArt. 9 ust. 4Art. 32 ust. 1 lit. bA.8.20, A.8.21§1.4.5
TF-011Art. 21 ust. 2 lit. eArt. 9 ust. 4Art. 32 ust. 1 lit. aA.8.24§4.2.1
TF-012Art. 21 ust. 2 lit. eArt. 9 ust. 4Art. 32 ust. 1 lit. bA.5.10, A.8.9§6.2.4
TF-013Art. 21 ust. 2 lit. b, hArt. 9 ust. 4 lit. bArt. 32 ust. 1 lit. bA.8.26§6.4.2

10.2 Kluczowe wnioski regulacyjne

NIS 2 (Dyrektywa UE 2022/2555 / Ustawa o KSC): klient (jako podmiot świadczący usługi cyfrowe / e-commerce ≥ 50 osób / ≥ €10M obrotu) podlega Art. 21 — wymóg wdrożenia środków technicznych adekwatnych do ryzyka. 9 z 13 ustaleń bezpośrednio mapuje się do Art. 21. Sankcja za non-compliance: do 2% obrotu globalnego lub €10M (większe).
RODO Art. 32 ust. 1: wymóg „odpowiednich środków technicznych i organizacyjnych". TF-009 (Jenkins CVE-2024-23897 — podatność umożliwiająca arbitralny odczyt plików, w tym sekretów, zmiennych środowiskowych i danych uwierzytelniających) stanowi naruszenie ochrony danych w rozumieniu Art. 4 pkt 12 RODO — podatność ta mogła umożliwić dostęp do danych osobowych przetwarzanych w systemach klienta. Niezależnie od tego, czy doszło do faktycznego wycieku, sam stan podatności jest naruszeniem proceduralnym wymagającym powiadomienia UODO w 72 h oraz potencjalnie osób, których dane dotyczą (Art. 33-34). Sankcja: do 4% obrotu lub €20M.
DORA (Rozp. UE 2022/2554): w przypadku sektora finansowego i jego dostawców usług ICT — Art. 9 wymaga identyfikacji podatności i ich klasyfikacji. Niniejszy raport stanowi punkt wyjścia do procesu DORA gap-analysis.
— SEKCJA 11

Techniczna mapa drogowa remediacji

Plan w 3 horyzontach czasowych z konkretnymi zadaniami inżynierskimi i właścicielami.

11.1 Horyzont 0-7 dni — działania natychmiastowe (CRITICAL)

IDZadanieWłaścicielSLA
TF-009Zablokowanie portu 50000 Jenkins CLI — firewall, IP allow-list; aktualizacja Jenkins do 2.442+ lub 2.426.3 LTSCISO + DevOps≤ 24 h
TF-001Wymiana wygasłego certyfikatu TLS dla restaurant.novatech-solutions.pl (Sectigo wildcard *.ragnartest.net wygasł 2025-08-25)DevOps≤ 7 dni
TF-002Uzyskanie ważnego certyfikatu dla novatech-solutions.pl (nie Ragnar wildcard)DevOps≤ 7 dni
TF-010Zablokowanie DNS AXFR na ns1.sec542.netDNS Ops≤ 7 dni

11.2 Horyzont 8-30 dni — średnioterminowe (HIGH/MEDIUM)

IDZadanieWłaścicielSLA
TF-004Server tokens off, X-Powered-By unset (Werkzeug/Python)Web Team≤ 30 dni
TF-005Ujawnianie stosu technologicznego — wyłączyć ujawnianie wersji Werkzeug/PythonDevOps≤ 30 dni
TF-012CSP staged rollout + COOP/COEP/CORP headersWeb + Security Eng.≤ 30 dni
TF-013Wdrożenie WAF (Cloudflare Pro lub ModSecurity)Security Eng.≤ 30 dni

11.3 Horyzont 31-180 dni — długoterminowe (strategiczne)

IDZadanieWłaścicielSLA
TF-007Weryfikacja konfiguracji SPF dla novatech-solutions.plMail + Compliance≤ 60 dni
TF-008Weryfikacja konfiguracji DMARC dla novatech-solutions.plMail + Compliance≤ 60 dni
TF-008DMARC p=reject (po monitoringu kwarantanny)Mail + Compliance≤ 180 dni
TF-011DNSSEC dla novatech-solutions.pl (BIND inline-signing + DS u rejestratora .pl)DNS Ops≤ 90 dni
TF-012HSTS Preload List submission po 6 mc bezbłędnej obserwacjiWeb Team≤ 180 dni

11.4 Inicjatywy strategiczne wykraczające poza ustalenia

— SEKCJA A

Załącznik A — inwentarz zasobów (2 hosty)

Wszystkie wykryte zasoby cyfrowe domeny novatech-solutions.pl na podstawie przeprowadzonego skanowania.

HostnameIPKategoriaPortyStack technologicznyKrytycznośćWłaściciel
restaurant.novatech-solutions.pl172.30.42.80Aplikacja webowa (e-commerce)80, 443Werkzeug/3.1.8 Python/3.9.21 FlaskWysokaWeb Team
attacker.ragnartest.org172.17.0.2Serwer CI/CD (Jenkins)22, 80, 443, 8080, 50000Jenkins 2.346.1 / Jetty 9.4.45KrytycznaDevOps
— SEKCJA C

Załącznik C — fragmenty surowych outputów (raw evidence)

Wybrane fragmenty surowych wyników narzędzi dla potwierdzenia ustaleń. Pełne logi (3 410 linii) w pliku attachments.

C.1 Analiza TLS — restaurant.novatech-solutions.pl

Analiza TLS restaurant.novatech-solutions.pl (172.30.42.80) TLS 1.3: offered (OK) — AES-256-GCM with Forward Secrecy TLS 1.2: offered — ECDHE-RSA-AES256-GCM-SHA384 (AEAD, not vulnerable) TLS 1.1: not offered (OK) TLS 1.0: not offered (OK) CBC ciphers: present in TLS 1.2 cipher list but NOT PREFERRED LUCKY13: potentially VULNERABLE via CBC ciphers (not preferred) # Certyfikat Subject: CN=*.ragnartest.net Issuer: CN=Sectigo RSA Domain Validation Secure Server CA Wygasa: 2025-08-25 [WYGASŁY] SAN: DNS:*.ragnartest.net

C.2 Analiza HTTP — restaurant.novatech-solutions.pl

Nagłówki HTTP restaurant.novatech-solutions.pl HTTP/1.1 200 OK Server: Werkzeug/3.1.8 Python/3.9.21 Content-Type: text/html; charset=utf-8 X-Powered-By: Flask # Ujawnione wersje: Werkzeug 3.1.8, Python 3.9.21, Flask

C.3 Skan portów — attacker.ragnartest.org (172.17.0.2)

Skan portów Jenkins server PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.2p1 (TLS) 80/tcp open http Apache 2.4.41 443/tcp open ssl Apache 2.4.41 (TLS 1.2/1.3) 8080/tcp open http Jetty 9.4.45.v20210618 50000/tcp open http Jenkins 2.346.1 (CLI interface) # Jenkins CLI CVE-2024-23897 podatność wykryta
— SEKCJA D

Załącznik D — słownik techniczny

Definicje skrótów i terminów używanych w raporcie — dla zespołów technicznych i compliance.

Termin / skrótDefinicja
ACMEAutomatic Certificate Management Environment (RFC 8555) — protokół automatyzacji wydawania certyfikatów; podstawa Let's Encrypt
AEADAuthenticated Encryption with Associated Data — tryb szyfrowania zapewniający integralność i poufność (np. AES-GCM, ChaCha20-Poly1305)
BEASTBrowser Exploit Against SSL/TLS (CVE-2011-3389) — atak na CBC ciphers w TLS < 1.2
BIMIBrand Indicators for Message Identification — standard wyświetlania logo nadawcy w klientach mailowych po uwierzytelnieniu DMARC
CAACertification Authority Authorization (RFC 8659) — rekord DNS określający, które CA mogą wystawiać certyfikaty dla domeny
CBCCipher Block Chaining — tryb szyfrowania bloków podatny na atak padding-oracle
CIS ControlsCenter for Internet Security Controls — zestaw 18 kontroli bezpieczeństwa (v8.0, 2021)
COEP / COOP / CORPCross-Origin Embedder/Opener/Resource Policy — nagłówki ochrony przed Spectre i side-channel attacks
CRS (OWASP)Core Rule Set — zestaw reguł WAF dla ModSecurity (aktualnie v4.x)
CSPContent Security Policy (W3C CSP3) — nagłówek HTTP kontrolujący źródła zasobów ładowanych przez stronę
CSRFCross-Site Request Forgery — atak, w którym przeglądarka ofiary wykonuje nieautoryzowaną operację
CT logCertificate Transparency log — publiczny, append-only rejestr wszystkich wystawionych certyfikatów (RFC 6962)
CVSSCommon Vulnerability Scoring System v3.1 — standard oceny ważności podatności w skali 0-10
CWECommon Weakness Enumeration — taksonomia 1300+ klas słabości w oprogramowaniu (MITRE)
DKIMDomainKeys Identified Mail (RFC 6376) — kryptograficzne podpisywanie wiadomości e-mail
DMARCDomain-based Message Authentication, Reporting & Conformance (RFC 7489) — polityka egzekwowania SPF/DKIM
DNSSECDNS Security Extensions (RFC 4033-4035) — kryptograficzne podpisywanie odpowiedzi DNS
DORADigital Operational Resilience Act (Rozp. UE 2022/2554) — regulacja UE dla sektora finansowego
HSTSHTTP Strict Transport Security (RFC 6797) — nagłówek wymuszający HTTPS na poziomie przeglądarki
MitMMan-in-the-Middle — atak, w którym przeciwnik jest między klientem a serwerem
MTA-STSMail Transfer Agent Strict Transport Security (RFC 8461) — wymóg TLS dla SMTP transport
NIS 2Network and Information Security Directive 2 (Dyrektywa UE 2022/2555) — regulacja cyberbezpieczeństwa UE
NSEC3Next Secure 3 (RFC 5155) — rekord DNSSEC dla negative response, chroniący przed zone walking
OWASPOpen Worldwide Application Security Project — fundacja non-profit, autor m.in. OWASP Top 10
PFSPerfect Forward Secrecy — właściwość TLS, w której kompromitacja klucza prywatnego serwera nie pozwala odszyfrować historycznych sesji
POODLEPadding Oracle On Downgraded Legacy Encryption (CVE-2014-3566)
RUA / RUFDMARC Aggregate / Forensic Reports — formaty raportowania zdarzeń DMARC
SPFSender Policy Framework (RFC 7208) — rekord DNS deklarujący autoryzowanych nadawców e-mail
SWEET32Atak birthday na 64-bitowe block ciphers (CVE-2016-2183)
TLPTraffic Light Protocol — standard FIRST.org dla klasyfikacji udostępniania informacji wrażliwych
TLSRPTSMTP TLS Reporting (RFC 8460) — raportowanie błędów MTA-STS
VMCVerified Mark Certificate — certyfikat wymagany przez BIMI do wyświetlania logo nadawcy
WAFWeb Application Firewall — warstwa filtrująca ruch HTTP/HTTPS na poziomie L7
XSSCross-Site Scripting (CWE-79) — wstrzyknięcie złośliwego JavaScript do zaufanego kontekstu strony
ZTNAZero-Trust Network Access — model dostępu sieciowego oparty o weryfikację per-request