Podatność typu SQL injection w Centralnym Rejestrze Polskiego Związku Szachowego pozwalała badaczom uzyskać dostęp do bazy liczącej około 130 tys. rekordów. Oprócz publicznych danych dotyczących kariery sportowej znajdowały się w niej również historyczne informacje kontaktowe, w tym adresy zamieszkania, numery telefonów i adresy e-mail. Luka została wykryta w kwietniu 2025 roku, ale według analizy badaczy podatny mechanizm mógł funkcjonować już od 2013 roku. Polski Związek Szachowy potwierdził problem i podjął działania naprawcze, ale nie ma dowodów na to, że cała baza została wcześniej skradziona przez cyberprzestępców.

Sprawę ujawnili Robert Kruczek i Kamil Szczurowski, którzy po znalezieniu podatności przekazali zgłoszenie do CERT Polska. Według ich analizy błąd pozwalał nie tylko podejrzeć pojedyncze rekordy, ale również wykonać pełny zrzut bazy Centralnego Rejestru PZSzach. Związek oszacował wielkość systemu w tamtym okresie na około 135 tys. rekordów, podczas gdy badacze posługiwali się liczbą około 130 tys. To różnica niewielka i wynikająca z przybliżonego charakteru obu wartości.

Nie ma dowodu na wyciek 130 tys. osób

W tej sprawie bardzo ważna jest precyzja. Potwierdzona jest podatność umożliwiająca dostęp do bazy, ale nie potwierdzono wcześniejszej masowej kradzieży danych przez przestępców. Badacze wykazali, że system pozwalał pobierać informacje, jednak Polski Związek Szachowy nie odnotował zdarzeń, które jednoznacznie wskazywałyby, że ktoś wykorzystał ten sam błąd wcześniej w złych zamiarach.

Związek przyznał jednocześnie, że nie wykonano kompleksowego historycznego audytu całego systemu, który pozwoliłby bezwzględnie wykluczyć wcześniejsze wykorzystanie podatności. Oznacza to, że nie można uczciwie powiedzieć ani „dane na pewno wyciekły”, ani „na pewno nikt wcześniej ich nie pobrał”.

Najbardziej precyzyjne stwierdzenie jest więc takie: przez błąd SQL injection możliwy był dostęp do bazy obejmującej około 130-135 tys. rekordów.

W systemie znajdowały się także dane niepubliczne

Centralny Rejestr PZSzach z założenia zawiera informacje publiczne. Służy m.in. do prowadzenia ewidencji zawodników, klubów, trenerów i sędziów. Publicznie dostępne są takie dane jak imię i nazwisko, klub, ranking, tytuł szachowy czy część informacji dotyczących kariery sportowej.

Problem polegał na tym, że w tej samej bazie przez lata przechowywano również historyczne informacje kontaktowe, które nie były już publicznie prezentowane. Badacze wskazywali m.in. adres zamieszkania, adres korespondencyjny, numer telefonu, adres e-mail, drugie imię czy miejsce urodzenia. PZSzach potwierdził, że starsze dane adresowe i kontaktowe rzeczywiście znajdowały się w systemie.

Nie oznacza to jednak, że każdy z około 130 tys. rekordów zawierał wszystkie te informacje. Zakres danych różnił się pomiędzy poszczególnymi wpisami. Po zgłoszeniu podatności Związek przeanalizował bazę i usunął część historycznych informacji, których dalsze przechowywanie nie było potrzebne.

SQL injection – stary błąd, który wciąż działa

SQL injection należy do najbardziej klasycznych podatności aplikacji internetowych. Polega na tym, że system w niewłaściwy sposób wykorzystuje dane dostarczane przez użytkownika podczas tworzenia zapytań do bazy danych.

Jeżeli aplikacja nie oddziela prawidłowo zwykłej wartości od składni zapytania SQL, atakujący może spróbować zmienić sposób działania polecenia. Zamiast otrzymać jeden rekord, którego dotyczyło normalne zapytanie, może doprowadzić do wyświetlenia znacznie większej części bazy. W zależności od konstrukcji systemu podatność może pozwalać także na modyfikowanie danych, obchodzenie części zabezpieczeń czy wykonywanie innych operacji.

W przypadku PZSzach badacze twierdzą, że znaleziony błąd pozwalał im pobrać całą bazę danych. Jest to poważny problem niezależnie od tego, czy ktoś wcześniej wykorzystał go przestępczo.

Luka mogła istnieć przez ponad dekadę

Najbardziej niepokojący element sprawy dotyczy wieku podatności. Badacze wykorzystali archiwalne wersje witryny i na ich podstawie ocenili, że podatny mechanizm mógł działać co najmniej od 2013 roku.

Sam Centralny Rejestr powstał jeszcze wcześniej, około 2008-2009 roku. Polski Związek Szachowy przyznał, że system w dużej mierze opiera się na rozwiązaniach technologicznych z tamtego okresu, a jego wiek i architektura utrudniają dalszą modernizację.

Nie oznacza to, że przez 13 lat ktoś regularnie kradł dane. Nie ma takich dowodów. Pokazuje jednak, jak długo może funkcjonować błąd w systemie, który przez lata wykonuje swoją podstawową pracę i nie daje użytkownikom żadnych widocznych sygnałów problemu.

Po zgłoszeniu wprowadzono zabezpieczenia

Badacze przekazali informację o luce do CERT Polska w kwietniu 2025 roku. Według ich relacji w kolejnych miesiącach PZSzach zaczął ograniczać zakres przechowywanych informacji i wdrożył dodatkową ochronę w postaci Web Application Firewall, czyli WAF.

Taki system potrafi analizować ruch kierowany do aplikacji i blokować wiele znanych typów ataków. Nie powinien jednak zastępować poprawienia samego podatnego kodu. Badacze twierdzili, że po pierwszym etapie zabezpieczania systemu nadal byli w stanie uzyskać część informacji.

PZSzach przekazał później, że w 2026 roku wdrożono kolejne zmiany techniczne, które miały usunąć zgłoszony sposób wykorzystania podatności i dodatkowo ograniczyć ryzyko podobnych problemów.

Związek nie twierdzi, że cały system jest już wolny od błędów

W stanowisku PZSzach znalazła się również ważna informacja dotycząca całej aplikacji. Ze względu na wiek i architekturę Centralnego Rejestru nie wykonano kompleksowego audytu bezpieczeństwa wszystkich jego elementów.

Związek nie deklaruje więc, że cały system został sprawdzony i na pewno nie zawiera innych podatności. Organizacja wskazuje jednocześnie na potrzebę zastąpienia starego rozwiązania nowym systemem, co wiąże się jednak z kosztami i dużym zakresem prac.

To problem znany wielu instytucjom. Stare aplikacje potrafią działać przez kilkanaście lat, ponieważ spełniają podstawową funkcję biznesową. W tym samym czasie narasta jednak tzw. dług technologiczny, a część rozwiązań projektowanych według dawnych standardów może coraz bardziej odstawać od dzisiejszych wymagań bezpieczeństwa.

Po co trzymać stare adresy i telefony?

Sprawa Polskiego Związku Szachowego pokazuje jeszcze jeden ważny problem – przechowywanie danych, które nie są już potrzebne.

Jeśli organizacja nadal trzyma stare adresy, numery telefonów i e-maile, musi je chronić tak samo jak informacje używane każdego dnia. W razie przyszłego włamania te historyczne dane mogą zwiększyć skalę szkód, choć ich wartość dla samej organizacji jest już niewielka.

Dlatego jednym z podstawowych elementów ochrony danych jest minimalizacja. Jeżeli określona informacja przestała być potrzebna, warto rozważyć jej usunięcie zamiast przechowywania „na wszelki wypadek”.

PZSzach poinformował, że właśnie taki przegląd wykonano po zgłoszeniu podatności i część zbędnych danych historycznych została usunięta.

Czy szachiści powinni się czegoś obawiać?

Na obecnym etapie nie ma potwierdzenia, że baza została sprzedana, opublikowana w internecie albo wykorzystana przez grupę cyberprzestępczą. Nie ma więc podstaw do traktowania tej sytuacji tak samo jak potwierdzonego masowego wycieku danych.

Warto jednak pamiętać, że połączenie kilku prawdziwych informacji o jednej osobie może znacznie ułatwić przygotowanie wiarygodnego oszustwa. Nadawca wiadomości może znać nazwisko zawodnika, jego klub, ranking, numer telefonu czy adres e-mail i wykorzystać te informacje do podszycia się pod organizatora turnieju, klub albo Polski Związek Szachowy.

To, że ktoś zna prawdziwe informacje o odbiorcy, nie oznacza, że wiadomość pochodzi od zaufanej instytucji. Szczególną ostrożność należy zachować wobec próśb o płatność, logowanie przez przesłany link lub podawanie dodatkowych danych.

Historia PZSzach jest więc czymś więcej niż opowieścią o jednym błędzie SQL injection. Pokazuje jednocześnie problem starego systemu, historycznych danych i braku pełnego audytu przez wiele lat.

Nie możemy powiedzieć, że 130 tys. osób padło ofiarą wycieku. Możemy natomiast powiedzieć coś, co samo w sobie jest wystarczająco poważne: luka pozwalała uzyskać dostęp do całej bazy liczącej około 130-135 tys. rekordów, a podatny mechanizm mógł działać przez ponad dekadę.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *