Ta strona korzysta z plików cookies technicznych oraz funkcjonalnych. Cookies funkcjonalne, np. głosowanie w ankietach i licznik wyświetleń, działają dopiero po akceptacji.
Architektura brzegowa, terminacja TLS i suwerenność danych w systemie Krajowego Systemu e-Faktur
Streszczenie wykonawcze
Niniejszy audyt techniczny weryfikuje architekturę bezpieczeństwa polskiego systemu KSeF (Krajowy System e-Faktur) w zakresie routingu sieciowego, terminacji połączeń szyfrowanych oraz szyfrowania end-to-end danych. Wszystkie testy są powtarzalne i mogą być zweryfikowane przez każdą osobę posiadającą podstawową wiedzę techniczną.
Główne ustalenia:
Ruch do KSeF przechodzi przez zagraniczną infrastrukturę Imperva (Thales Group)
Połączenia TLS są terminowane (odszyfrowywane) przez Imperva przed przekazaniem do serwerów MF
Imperva ma techniczną zdolność wglądu w metadane wszystkich faktur wystawianych w Polsce, co ma bardzo duże znaczenie wywiadowcze.
Część I: Routing i delegacja domeny
Test 1.1: Weryfikacja delegacji DNS (rekord CNAME)
Cel: Sprawdzenie, czy ruch do ksef.mf.gov.pl trafia bezpośrednio do infrastruktury Ministerstwa Finansów.
Metoda:
Resolve-DnsName ksef.mf.gov.pl -Type CNAME
Wynik:
Name Type TTL Section NameHost
---- ---- --- ------- --------
ksef.mf.gov.pl CNAME 300 Answer nudnsjz.ng.impervadns.net
Analiza:
Domena ksef.mf.gov.pl jest aliasem CNAME do nudnsjz.ng.impervadns.net
Domena impervadns.net należy do firmy Imperva (obecnie część koncernu Thales)
Ministerstwo Finansów oddelegowało zarządzanie ruchem HTTP/HTTPS do infrastruktury Imperva
Wniosek 1.1: Ruch sieciowy do KSeF jest kierowany do infrastruktury zagranicznej przed dotarciem do serwerów rządowych.
Test 1.2: Ustalenie rzeczywistego adresu IP (rekord A)
Cel: Identyfikacja fizycznego punktu styku z systemem KSeF.
Metoda:
Resolve-DnsName ksef.mf.gov.pl -Type A
Wynik:
Name Type TTL Section IPAddress
---- ---- --- ------- ---------
nudnsjz.ng.impervadns.net A 30 Answer 45.60.74.103
Analiza:
Adres IP 45.60.74.103 należy do puli adresowej Imperva
Lokalizacja geograficzna: sieć Imperva (USA/Europa)
Adres nie należy do polskiej sieci rządowej ani dostawców IT MF
Wniosek 1.2: Punkt wejścia do systemu KSeF znajduje się w infrastrukturze zarządzanej przez zagraniczny podmiot.
Test 1.3: Detekcja warstwy WAF (fingerprinting HTTP)
Cel: Potwierdzenie obecności aktywnej warstwy Web Application Firewall przetwarzającej ruch aplikacyjny.
Metoda:
X-CDN: Imperva – bezpośrednie potwierdzenie obecności Imperva jako warstwy CDN/WAF
incap_* cookies – charakterystyczne dla systemu Incapsula (marka Impervy)
Server: BigIP – load balancer F5 znajduje się za warstwą Imperva (nie przed nią)
Wniosek 1.3: Każde żądanie HTTP do KSeF jest przetwarzane aplikacyjnie przez Imperva WAF przed przekazaniem do infrastruktury MF.
Część II: Terminacja TLS i odszyfrowanie ruchu
Test 2.1: Dowód terminacji TLS przez test różnicowy
Cel: Wykazanie, że Imperva odszyfruje połączenia TLS i ma dostęp do zawartości żądań HTTP.
Kontekst techniczny:
W protokole HTTPS nagłówek Host: jest przesyłany wewnątrz zaszyfrowanego tunelu TLS. Serwer może podjąć decyzję routingową na podstawie tego nagłówka tylko wtedy, gdy wcześniej odszyfrował połączenie.
Metoda A – Żądanie domeny głównej:
Subject: CN=*.ksef.mf.gov.pl, O=MINISTERSTWO FINANSÓW, L=Warszawa, C=PL
Issuer: CN=GeoTrust TLS RSA CA G1, OU=www.digicert.com, O=DigiCert Inc, C=US
Thumbprint: 6AF8575E9149E4B62C04027912951BFF43A75DEE
Serial Number: 0F5862885DD1E7E769405CD16AE6480D
Not Before: 12/08/2025 01:00:00
Not After: 12/08/2026 00:59:59
Signature Algorithm: sha256RSA
Subject Alternative Names:
Nazwa DNS=*.ksef.mf.gov.pl
Nazwa DNS=ksef.mf.gov.pl
Analiza:
Certyfikat wystawiony dla Ministerstwa Finansów (pole Subject)
Wystawca: DigiCert Inc (amerykańska CA)
Certyfikat typu wildcard (*.ksef.mf.gov.pl)
Uwaga:
Obecność certyfikatu wystawionego dla MF nie oznacza, że klucz prywatny znajduje się w serwerowni MF. W architekturze z WAF/CDN to Imperva używa certyfikatu MF (klucz prywatny dostarczony przez MF) do terminacji połączeń klient-WAF.
Wniosek 2.2: Certyfikat jest legalny i wystawiony dla MF, ale klucz prywatny musi znajdować się na serwerach Imperva, aby możliwa była terminacja TLS (wykazana w Teście 2.1).
Test 2.3: Analiza nagłówków odpowiedzi HTTP
Cel: Potwierdzenie przetwarzania żądań przez WAF i identyfikacja architektury backendowej.
Metoda:
Invoke-WebRequest -Uri "https://ksef.mf.gov.pl/api/online/Session/Status" -Method GET -UseBasicParsing
❌ Brak empirycznego potwierdzenia przechwycenia zaszyfrowanego ruchu (wymaga konta testowego)
❌ Brak weryfikacji czy Imperva posiada klucze prywatne MF
❌ Brak możliwości testowania backdoorów lub wyjątków od szyfrowania
Część V. Analiza architektoniczna – kluczowy problem
5.1. Dylemat bezpieczeństwa w systemach masowych
W systemach typu Business-to-Government obsługujących miliony użytkowników, WAF na brzegu sieci musi inspekcjonować ruch w celu:
Ochrony przed atakami XML:
XML Bomb (Billion Laughs)
XXE (XML External Entity)
XPath Injection
XSLT Injection
Walidacji struktury dokumentów:
Zgodność ze schematem XSD
Limity rozmiaru i złożoności
Rate limiting na podstawie zawartości
Wykrywania anomalii:
Nietypowe wzorce danych
Próby obejścia walidacji
Ataki DoS na poziomie aplikacji
5.2. Niemożność inspekcji zaszyfrowanego payloadu
Jeśli faktury są zaszyfrowane end-to-end (klient → backend MF), WAF Imperva:
❌ Nie widzi struktury XML – nie może wykryć ataków XML Bomb
❌ Nie może walidować schematu – przepuszcza nieprawidłowe dokumenty
❌ Nie może limitować na podstawie zawartości faktury
❌ Jest „ślepy” na ataki aplikacyjne
5.3. Konsekwencje dla backendu MF
Przy milionach faktur dziennie, serwery MF musiałyby:
❌ Logowaniem metadanych przez warstwę CDN (IP, timing, rozmiary)
❌ Utratą poufności w przypadku nacisku prawnego/politycznego na Thales
Odpowiedź prawna:
Wykracza poza zakres audytu technicznego. Wymaga analizy:
Umowy SLA/DPA między MF a Thales/Imperva (niedostępne publicznie)
Zgodności z RODO (czy terminacja TLS = transfer danych poza UE?)
Oceny ryzyka w kontekście CLOUD Act i służb wywiadowczych
Odpowiedź polityczna:
Decyzja o użyciu zagranicznej (amerykańsko-francuskiej) infrastruktury do obsługi krytycznego systemu fiskalnego zawierającego dane wszystkich polskich przedsiębiorców jest:
Decyzją polityczną (nie techniczną)
Decyzją o zależności strategicznej
Decyzją o granicach suwerenności cyfrowej
Suwerenność cyfrowa:
Kontrola kluczy kryptograficznych przez zagraniczną firmę oznacza:
Brak faktycznej kontroli nad danymi podatkowymi polskich firm
Zależność strategiczna – Imperva może wyłączyć system
Ryzyko szpiegostwa gospodarczego – dostęp do wszystkich transakcji B2B w Polsce
Czy można to zmienić?
Tak, istnieją alternatywy:
Krótkoterminowo (6-12 miesięcy):
Zmiana dostawcy WAF na polskiego/europejskiego (np. Akamai EU, Cloudflare w trybie BYOK)
Średnioterminowo (12-24 miesiące):
Budowa własnej infrastruktury WAF (NASK, CERT.PL)
Pełna terminacja TLS w Polsce
Długoterminowo (24+ miesięcy):
Strategia suwerenności cyfrowej dla systemów krytycznych
Certyfikacja bezpieczeństwa (Common Criteria EAL4+)
Koszt:
Szacunkowo 5-20 mln PLN (zależnie od rozwiązania). To promil budżetu KSeF.
Podsumowanie
Potwierdzone fakty (hard evidence)
✅ Cały ruch KSeF routowany przez Imperva – DNS CNAME, IP 45.60.74.103
✅ Imperva terminuje TLS – test różnicowy z nagłówkiem Host
✅ Imperva ma pełny dostęp do metadanych – adresy IP, timing, rozmiary pakietów, wzorce użytkowania
✅ API 2.0 deklaruje szyfrowanie E2E – dokumentacja i biblioteki klienckie
✅ Integratorzy potwierdzają wymuszanie szyfrowania – brak akceptacji plaintext XML
Logiczne wnioski (architectural analysis)
⚠️ System WAF nie może być „ślepy” – wymaga inspekcji dla bezpieczeństwa
⚠️ Backend MF nie może obsłużyć deszyfrowania milionów faktur – zbyt duże obciążenie
⚠️ Aby architektura miała sens, Imperva musi mieć klucze prywatne MF
⚠️ „Szyfrowanie E2E” chroni przed MITM, ale nie przed Imperva
Niewiadome (unverified)
❓ Czy Imperva faktycznie posiada klucze prywatne MF?
❓ Czy istnieje backdoor/wyjątek od szyfrowania?
❓ Jakie są podstawy prawne tej architektury?
❓ Czy przeprowadzono ocenę ryzyka (DPIA)?
Weryfikowalność
Każdy może powtórzyć te testy.
Wymagane narzędzia (bezpłatne):
PowerShell (Windows)
curl (Windows/Linux/Mac)
nslookup lub Resolve-DnsName
Wszystkie polecenia podane w audycie są powtarzalne i weryfikowalne.
Data audytu: 6 lutego 2026
Metodologia: Black-box testing, OSINT, analiza publicznych zasobów
Zakres: Architektura bezpieczeństwa bez ingerencji w system produkcyjny
Narzędzia: PowerShell, curl, DNS lookup, analiza nagłówków HTTP
Autor: Audyt obywatelski weryfikowalny przez każdego
Niniejszy audyt nie narusza żadnych przepisów prawa. Przy jego przeprowadzaniu nie wykorzystano żadnego zwierzęcia. Wszystkie testy wykorzystują publicznie dostępne zasoby i standardowe narzędzia diagnostyczne. Nie przeprowadzono żadnych prób penetracji systemu ani ataków na infrastrukturę KSeF.
Klucz prywatny MF w rękach Impervy – czy to problem? To nie jest kwestia symboliczna ani formalna. To jest rdzeń bezpieczeństwa TLS. Jeżeli podmiot trzeci przechowuje klucz prywatny certyfikatu domeny rządowej, terminuję sesję TLS i działa jako reverse-proxy przed właściwym serwerem, to w sensie kryptograficznym jest równoważny właścicielowi usługi. Wildcard tylko pogarsza sytuację, ale nie jest jej istotą. Istotą jest przeniesienie zaufania państwowego do podmiotu zewnętrznego.
Czy test dowodzi rozbierania TLS? Audyt pokazał, że certyfikat prezentowany klientowi nie należy do infrastruktury MF, połączenie kończy się na infrastrukturze Impervy i dopiero stamtąd ruch jest przekazywany dalej. Jeżeli sesja TLS kończy się na WAF-ie, to WAF musi znać klucz prywatny, ma dostęp do danych w postaci jawnej, a dalsze połączenie do MF jest nową, odrębną sesją TLS. To jest standardowa architektura reverse-proxy z terminacją TLS.
Czy możliwe jest tylko przekazywanie requestów? Tak — ale wyłącznie wtedy, gdy TLS kończy się na serwerze MF, a WAF działa w trybie pass-through. Audyt pokazał, że tak nie jest. Pytanie nie brzmi więc, czy Imperva rozbiera TLS, lecz czy reverse-proxy posiadające klucz prywatny może nie widzieć ruchu.
Czy Imperva mogłaby odszyfrować faktury? Dodatkowe szyfrowanie faktur istnieje właśnie dlatego, że warstwa transportowa nie jest uznana za w pełni zaufaną. To architektonicznie spójne. Nie wynika z tego jednak, że Imperva nie ma żadnego dostępu do informacji. W systemach takich jak KSeF występują trzy klasy danych:
payload faktury, metadane biznesowe oraz tokeny i kontekst autoryzacji.
1. Klucz prywatny MF KSeF w rękach Impervy.
Certyfikat TLS pozwala na udowodnienie bycia właścicielem domeny. Skoro oddajemy ją ochroniarzowi, to warto dać mu też identyfikator. Nie wiem, czy jest to problem. Choć faktycznie nie powinno tu być wildcarda.
2. Nie jestem pewien, czy wykonany test jest dowodem na to, że Imperva rozbiera TLS – w końcu mogła przekazać request do MF i przekazać odpowiedź. ; ) Choć WAF bez rozbierania TLS jest chyba bez sensu (?), a z kolei jeśli Imperva zawsze wymaga uploadowania kluczy TLS, to i żaden test nie jest potrzebny.
3. Szyfrowanie samych faktur i deszyfrowanie przez Impervę
Aby to było możliwe, Imperva musiałaby wprowadzić mechanizm przystosowany wyłącznie pod KSeF. Jakoś trudno mi to sobie wyobrazić. Ten artykuł uświadomił mi, po co jest to szyfrowanie faktur jako dodatkowa warstwa – po to, by chronić ich treść, bo nie możemy ufać warstwie transportowej. Chyba nie wprowadzono takiego mechanizmu tylko po to, by oddać klucz prywatny Impervie – albo jestem zbyt naiwny.
Inna rzecz, że jeśli transport jest jawny, to w nim są tokeny autoryzujące – z nimi Imperva może sobie po prostu faktury pobrać. 😀
No ale ostatecznie skoro oddajemy aspekty bezpieczeństwa w ręce innego podmiotu, to tak czy tak musimy mu ufać. Nie da się inaczej, choć to oczywiście zawsze dodatkowy wektor ataku.
Podsumowując nie jestem chyba aż tak negatywnie nastawiony, ale taka analiza otwiera oczy na pewne detale, także dzięki za nią. ; )
Bardzo dobra robota. Większość ludzi wierzy tym cymbałom z KO co mają ministra cyfryzacji, który nie wie ile bitów ma bajt, ale chętnie zabiera głos w sprawach o których nie ma pojęcia. Domański to samo. Pajac jakich mało. Pomijam już fakt, ze mam w KSEF jakieś faktury na np. butlę gazową, której nie używam i która nie jest mi do niczego potrzebna. Ktoś pomylił zapewne NIP i fv wpadło na moje konto w ksef. Bubel i tyle. To tylko dodatkowa udręka dla przedsiębiorców a nie żadne udogodnienie a po tym audycie jestem przekonany, że to zostało specjalnie zrobione aby dane wrażliwe były w obcych rękach albo w MF pracują kompletni idioci lub są przekupionymi, sprzedajnymi gnojami razem z politykami.
To jest powtarzalny test – każdy może uruchomić te same komendy i dostać te same wyniki. Jeśli coś jest błędne — wskaż konkretny fragment metodologii. Nawet prosty bot umiałby to zrobić, więc spróbuj. Gdy pojawia się kpina zamiast kontrdowodu, to znaczy że audyt jest poprawny i jakąś farmę trolli trafiło to w czułe miejsce.
5 komentarz(e)
Klucz prywatny MF w rękach Impervy – czy to problem? To nie jest kwestia symboliczna ani formalna. To jest rdzeń bezpieczeństwa TLS. Jeżeli podmiot trzeci przechowuje klucz prywatny certyfikatu domeny rządowej, terminuję sesję TLS i działa jako reverse-proxy przed właściwym serwerem, to w sensie kryptograficznym jest równoważny właścicielowi usługi. Wildcard tylko pogarsza sytuację, ale nie jest jej istotą. Istotą jest przeniesienie zaufania państwowego do podmiotu zewnętrznego.
Czy test dowodzi rozbierania TLS? Audyt pokazał, że certyfikat prezentowany klientowi nie należy do infrastruktury MF, połączenie kończy się na infrastrukturze Impervy i dopiero stamtąd ruch jest przekazywany dalej. Jeżeli sesja TLS kończy się na WAF-ie, to WAF musi znać klucz prywatny, ma dostęp do danych w postaci jawnej, a dalsze połączenie do MF jest nową, odrębną sesją TLS. To jest standardowa architektura reverse-proxy z terminacją TLS.
Czy możliwe jest tylko przekazywanie requestów? Tak — ale wyłącznie wtedy, gdy TLS kończy się na serwerze MF, a WAF działa w trybie pass-through. Audyt pokazał, że tak nie jest. Pytanie nie brzmi więc, czy Imperva rozbiera TLS, lecz czy reverse-proxy posiadające klucz prywatny może nie widzieć ruchu.
Czy Imperva mogłaby odszyfrować faktury? Dodatkowe szyfrowanie faktur istnieje właśnie dlatego, że warstwa transportowa nie jest uznana za w pełni zaufaną. To architektonicznie spójne. Nie wynika z tego jednak, że Imperva nie ma żadnego dostępu do informacji. W systemach takich jak KSeF występują trzy klasy danych:
payload faktury, metadane biznesowe oraz tokeny i kontekst autoryzacji.
Nawet przy szyfrowaniu end-to-end metadane pozostają jawne, tokeny pozostają jawne i wzorce ruchu pozostają jawne. To już wystarcza do wniosków opisanych tutaj:
https://informacje-lokalne.pl/czesc-vii-jakie-metadane-widzi-imperva-2026-02-11/
Nie znam się, ale się wypowiem. ; )
1. Klucz prywatny MF KSeF w rękach Impervy.
Certyfikat TLS pozwala na udowodnienie bycia właścicielem domeny. Skoro oddajemy ją ochroniarzowi, to warto dać mu też identyfikator. Nie wiem, czy jest to problem. Choć faktycznie nie powinno tu być wildcarda.
2. Nie jestem pewien, czy wykonany test jest dowodem na to, że Imperva rozbiera TLS – w końcu mogła przekazać request do MF i przekazać odpowiedź. ; ) Choć WAF bez rozbierania TLS jest chyba bez sensu (?), a z kolei jeśli Imperva zawsze wymaga uploadowania kluczy TLS, to i żaden test nie jest potrzebny.
3. Szyfrowanie samych faktur i deszyfrowanie przez Impervę
Aby to było możliwe, Imperva musiałaby wprowadzić mechanizm przystosowany wyłącznie pod KSeF. Jakoś trudno mi to sobie wyobrazić. Ten artykuł uświadomił mi, po co jest to szyfrowanie faktur jako dodatkowa warstwa – po to, by chronić ich treść, bo nie możemy ufać warstwie transportowej. Chyba nie wprowadzono takiego mechanizmu tylko po to, by oddać klucz prywatny Impervie – albo jestem zbyt naiwny.
Inna rzecz, że jeśli transport jest jawny, to w nim są tokeny autoryzujące – z nimi Imperva może sobie po prostu faktury pobrać. 😀
No ale ostatecznie skoro oddajemy aspekty bezpieczeństwa w ręce innego podmiotu, to tak czy tak musimy mu ufać. Nie da się inaczej, choć to oczywiście zawsze dodatkowy wektor ataku.
Podsumowując nie jestem chyba aż tak negatywnie nastawiony, ale taka analiza otwiera oczy na pewne detale, także dzięki za nią. ; )
Bardzo dobra robota. Większość ludzi wierzy tym cymbałom z KO co mają ministra cyfryzacji, który nie wie ile bitów ma bajt, ale chętnie zabiera głos w sprawach o których nie ma pojęcia. Domański to samo. Pajac jakich mało. Pomijam już fakt, ze mam w KSEF jakieś faktury na np. butlę gazową, której nie używam i która nie jest mi do niczego potrzebna. Ktoś pomylił zapewne NIP i fv wpadło na moje konto w ksef. Bubel i tyle. To tylko dodatkowa udręka dla przedsiębiorców a nie żadne udogodnienie a po tym audycie jestem przekonany, że to zostało specjalnie zrobione aby dane wrażliwe były w obcych rękach albo w MF pracują kompletni idioci lub są przekupionymi, sprzedajnymi gnojami razem z politykami.
To jest powtarzalny test – każdy może uruchomić te same komendy i dostać te same wyniki. Jeśli coś jest błędne — wskaż konkretny fragment metodologii. Nawet prosty bot umiałby to zrobić, więc spróbuj. Gdy pojawia się kpina zamiast kontrdowodu, to znaczy że audyt jest poprawny i jakąś farmę trolli trafiło to w czułe miejsce.
AI slop jako audyt xDDD