Luki w backendach TLS GoAhead zamieniają łatanie urządzeń wbudowanych w problem śledzenia producentów
Trzy luki integracji TLS w GoAhead dotyczą różnych bibliotek i konfiguracji. Poprawka upstream jest dostępna, ale operatorzy nadal muszą ustalić, którzy producenci urządzeń wdrożyli ją w firmware.
Czego naprawdę dotyczy ujawnienie GoAhead

Ujawnienie dotyczące GoAhead łatwo błędnie odczytać jako pojedynczą lukę wpływającą na każdy produkt zawierający ten serwer WWW. Opublikowane materiały opisują trzy odrębne błędy integracji TLS, z których każdy jest powiązany z konkretnym backendem kryptograficznym albo ścieżką weryfikacji. CERT-In poinformował o problemie 28 października, natomiast komunikaty EmbedThis i analiza techniczna FoxIO rozróżniają te awarie oraz wiążą ich usunięcie z GoAhead 6.1.1. To rozróżnienie ma znaczenie, ponieważ praktyczne pytanie właściciela urządzenia nie brzmi po prostu, czy nazwa produktu pojawia się na liście podatności. Trzeba ustalić, czy urządzenie zawiera podatną kompilację GoAhead, korzysta z odpowiedniego backendu TLS oraz włącza konfigurację lub ścieżkę protokołu, w której błąd może mieć znaczenie.
GoAhead jest często używany jako wbudowany serwer zarządzania HTTP lub HTTPS, a nie jako samodzielna platforma internetowa administrowana bezpośrednio przez zespół odpowiedzialny za system operacyjny. Może więc znajdować się w produktach, których producenci kontrolują firmware, opcje kompilacji, zasady obsługi certyfikatów i proces aktualizacji. Router, kamera, urządzenie przemysłowe, sterownik sieciowy lub inny produkt wbudowany może udostępniać interfejs zarządzania oparty na GoAhead, nie ujawniając przy tym każdej wady opisanej w komunikatach. Z drugiej strony producent może podawać wyłącznie wersję firmware produktu, pomijając wersję wbudowanego GoAhead lub biblioteki TLS, przez co operatorzy nie są w stanie określić narażenia na podstawie samych standardowych ewidencji zasobów.
Podatny kod naprawiono upstream w GoAhead 6.1.1. To wydanie jest najczytelniejszym punktem odniesienia dla działań naprawczych, ale samo w sobie nie odpowiada na pytanie, czy konkretne urządzenie zostało poprawione. Producenci mogą przenieść poprawkę do starszej gałęzi, zmienić backend TLS, wyłączyć funkcję albo wydać firmware zawierający naprawę bez oczywistej aktualizacji wersji komponentu. Mogą też nadal dystrybuować starszą gałąź GoAhead w produkcie, który nie jest już utrzymywany. Z tego powodu stany „GoAhead obecny” i „GoAhead podatny” powinny pozostać oddzielnymi kategoriami ewidencji do czasu, gdy zawartość firmware albo komunikat bezpieczeństwa producenta potwierdzi kompilację i konfigurację.
Pierwszy błąd dotyczy kompilacji zgodnych z OpenSSL oraz unieważniania certyfikatów. W komunikacie EmbedThis dotyczącym CVE-2026-115881 podano, że skonfigurowana lista unieważnionych certyfikatów mogła zostać wczytana, ale nie była egzekwowana. W środowisku opierającym się na wzajemnym TLS może to oznaczać, że certyfikat klienta, który po unieważnieniu powinien zostać odrzucony, nadal jest akceptowany. Problem jest więc ściśle związany ze sposobem, w jaki urządzenie korzysta z uwierzytelniania klienta i sprawdzania unieważnienia; nie oznacza ogólnie, że każde połączenie HTTPS obsługiwane przez GoAhead jest wadliwe.
Drugi błąd wiąże się ze starszą ścieżką weryfikatora LibreSSL. Komunikat dotyczący CVE-2026-115884 opisuje obejście ograniczenia głębokości łańcucha certyfikatów przy określonych ustawieniach, z udziałem zbyt głębokiego łańcucha klienta. To sformułowanie jest ważne podczas triage: rzeczywiste narażenie zależy od ścieżki weryfikatora i konfiguracji zasad certyfikatów, więc sam fakt używania LibreSSL nie wystarcza do potwierdzenia, że obejście jest możliwe. Trzeci problem dotyczy ścieżki Mbed TLS i nieprawidłowych parametrów Diffiego–Hellmana w skończonym ciele w niektórych sesjach TLS 1.2; według analizy istnieje możliwość pasywnego odszyfrowania komunikacji w warunkach, których dotyczy błąd.
Rozróżnienie backendów sprawia, że ujawnienie staje się w takim samym stopniu problemem łańcucha dostaw oprogramowania i utrzymania urządzeń, co problemem łatania biblioteki. Wydanie upstream zapewnia konkretną poprawkę, ale operatorzy nadal potrzebują od producenta informacji o wbudowanym komponencie, wyboru właściwego sposobu ograniczenia ryzyka oraz dostarczenia aktualizacji przez firmware. Do czasu uzyskania takich dowodów wyszukiwanie po nazwie produktu i ogólne twierdzenia o urządzeniach korzystających z GoAhead mogą wskazywać obszary wymagające sprawdzenia, ale nie potwierdzą, że konkretna instalacja jest podatna.
Trzy tryby awarii zależne od backendu
Ujawnione problemy najlepiej rozumieć jako trzy odrębne usterki, których zasięg zależy od biblioteki TLS wybranej podczas kompilowania GoAhead. To rozróżnienie ma znaczenie, ponieważ samo stwierdzenie, że produkt korzysta z GoAhead, nie wystarcza do ustalenia, jakie zachowanie występuje w danym przypadku. Ten sam wbudowany serwer WWW może zostać skompilowany z użyciem różnych backendów kryptograficznych, a podatnych ścieżek kodu nie można traktować zamiennie. Wariant zgodny z OpenSSL dotyczy unieważniania certyfikatów klienta, wariant LibreSSL — głębokości łańcucha certyfikatów, a wariant Mbed TLS — parametrów skończonopolowego Diffiego–Hellmana. Każdy z nich wymaga więc innego pytania o ekspozycję i innej interpretacji konfiguracji bezpieczeństwa urządzenia.
W kompilacji wykorzystującej backend zgodny z OpenSSL GoAhead mógł wczytać skonfigurowaną listę unieważnionych certyfikatów (CRL), ale nie egzekwować jej podczas uwierzytelniania klienta. W środowisku korzystającym z wzajemnego TLS tworzy to rozbieżność między pozorną polityką administratora a faktycznie wykonywaną kontrolą: certyfikat znajdujący się na liście unieważnionych mógł nadal zostać zaakceptowany, ponieważ CRL była obecna, lecz nie została zastosowana jako reguła odrzucenia. Usterka dotyczy wersji GoAhead z backendem OpenSSL od 3.4.5 do 6.1.0, natomiast kompilacje z Mbed TLS korzystają z osobnej ścieżki obsługi CRL i nie są narażone na ten konkretny błąd. Warunkiem jest również używanie przez punkt końcowy wzajemnego TLS z skonfigurowaną CRL; nie oznacza to, że każdy punkt końcowy GoAhead oparty na OpenSSL akceptuje unieważnione certyfikaty. W praktyce trzeba sprawdzić, czy urządzenie obsługuje taką politykę i czy po zastosowaniu odpowiedniej konfiguracji rzeczywiście odrzuca testową tożsamość z unieważnionym certyfikatem.
Problem LibreSSL przebiega inną ścieżką. Występuje wyłącznie w kompilacjach używających starszego weryfikatora X.509 LibreSSL, w tym w określonych gałęziach LibreSSL 3.2.x oraz 3.3.2–3.3.6. W podatnej konfiguracji GoAhead wymaga certyfikatu klienta, ale nie sprawdza zaufania do wystawcy: VERIFY_PEER=1 jest włączone, natomiast VERIFY_ISSUER=0 pozostaje wyłączone. W takiej sytuacji wcześniejszy stan błędu weryfikatora może spowodować pominięcie kontroli głębokości, dzięki czemu łańcuch certyfikatów klienta przekraczający dozwoloną głębokość może przejść weryfikację. Głębokość łańcucha ma ograniczać liczbę certyfikatów podrzędnych znajdujących się między certyfikatem klienta a zaufanym urzędem certyfikacji. Jeśli limit zostanie ominięty, serwer może zaakceptować łańcuch dłuższy, niż zakładał administrator, osłabiając politykę, która miała ograniczać dopuszczalne struktury wystawiania certyfikatów.
Nie jest to równoznaczne z ogólną awarią walidacji certyfikatów, a sama obecność LibreSSL nie przesądza, że obejście jest osiągalne. Kompilacje OpenSSL nie są podatne na tę konkretną usterkę, a w ostrzeżeniu odróżniono także inne backendy i wersje LibreSSL od ścieżki starszego weryfikatora. Dla operatorów istotny jest więc nie sam fakt „obecności LibreSSL”, lecz zestaw obejmujący wersję biblioteki, kompilację GoAhead, wymaganie certyfikatów klienta oraz wyłączenie weryfikacji wystawcy. Urządzenie z włączoną weryfikacją wystawcy i zaufanym pakietem CA działa w konfiguracji zasadniczo innej niż urządzenie, które wymaga jedynie certyfikatu peera.
Usterka Mbed TLS dotyczy negocjacji kryptograficznej, a nie unieważniania certyfikatów ani polityki łańcucha. W podatnych wersjach GoAhead backend Mbed TLS przekazuje nieprawidłową długość liczby pierwszej używanej w skończonopolowym Diffiem–Hellmanie. W rezultacie wymiana TLS 1.2 DHE-RSA może przesłać jednobajtowy moduł zamiast zamierzonego, większego parametru. Jeśli klient zaakceptuje takie uszkodzone parametry, wynikową sesję może odzyskać bierny obserwator, co niweczy ochronę poufności przekazywania oczekiwaną po tej wymianie. Problem dotyczy wyłącznie ścieżki Mbed TLS oraz podatnej negocjacji skończonopolowego DHE; kompilacje OpenSSL nie są narażone na ten błąd implementacyjny.
Zakres ostatniego ustalenia jest zatem węższy, niż mogłoby sugerować określenie „podatność Mbed TLS”. Nie wynika z niego, że cały ruch TLS z urządzenia GoAhead korzystającego z Mbed TLS można odszyfrować ani że narażone jest każde połączenie TLS 1.2. Trzeba ustalić, czy punkt końcowy dopuszcza podatną wymianę DHE-RSA, czy klient akceptuje zniekształcone parametry oraz czy sesja spełnia warunki podatności. Wyłączenie skończonopolowego DHE eliminuje negocjację, w której wadliwe parametry mają znaczenie, ale nie zmienia statusu sesji zarejestrowanych wcześniej, przed poprawieniem konfiguracji lub oprogramowania układowego.
Te różnice wyjaśniają, dlaczego jedno ogólne zalecenie zaradcze może wprowadzać w błąd. Wymuszanie sprawdzania unieważnienia rozwiązuje problem związany z OpenSSL, natomiast w przypadku ścieżki LibreSSL właściwym obszarem kontroli są ustawienia wystawcy certyfikatu i weryfikacji łańcucha — o ile dane opcje są obsługiwane. W przypadku Mbed TLS polityka zestawów szyfrów może uniemożliwić negocjowanie DHE w grupach skończonych. Wszystkie trzy błędy naprawiono upstream w GoAhead 6.1.1, ale sam numer wydania nie świadczy jeszcze o stanie oprogramowania układowego produktu wbudowanego. Producent mógł zintegrować poprawioną bibliotekę, przenieść odpowiednie zmiany do starszej gałęzi albo pozostawić urządzenie przy starszej integracji, modyfikując jednocześnie konfigurację otoczenia. Dlatego przed zaklasyfikowaniem punktu końcowego jako podatnego lub zabezpieczonego trzeba rozpatrywać łącznie backend, wersję, politykę uwierzytelniania i wynegocjowaną wymianę kluczy.
Jak ustalić podatność bez zgadywania
Traktuj słowo „GoAhead” jako początek dochodzenia, a nie dowód, że urządzenie jest podatne. GoAhead służy jako wbudowany serwer WWW i serwer zarządzania, ale sama jego obecność w produkcie nie wskazuje dokładnej wersji biblioteki, backendu TLS, opcji kompilacji ani ustawień walidacji certyfikatów użytych w tym produkcie. Praktyczne pytanie nie brzmi, czy producent kiedykolwiek dostarczał GoAhead, lecz czy konkretny obraz firmware’u zawiera podatną wersję GoAhead i uruchamia jedną z objętych błędem ścieżek kodu.
Zacznij od inwentaryzacji, która powiąże każdy produkt z modelem, rewizją sprzętu, wersją firmware’u, interfejsem zarządzania i kanałem aktualizacji. Przeszukaj dokumentację produktu, informacje o wydaniach firmware’u, SBOM-y, manifesty pakietów i komunikaty bezpieczeństwa producenta pod kątem odwołań do GoAhead lub EmbedThis. Jeśli producent udostępnia obraz do pobrania, zachowaj dokładny plik oraz metadane jego wydania; sama nazwa rodziny produktów jest zbyt ogólna, by ustalić podatność. Komunikat CERT-In i zalecenia EmbedThis opisują podatne wersje GoAhead oraz warunki zależne od backendu, natomiast wydanie GoAhead 6.1.1 jest właściwym punktem odniesienia dla naprawy upstream. Dowody te należy porównać z faktycznie wdrożonym firmware’em, a nie z listą nazw producentów ani z niezweryfikowanym twierdzeniem, że produkt „używa GoAhead”. Zalecenie CERT-In oraz informacje o wydaniu GoAhead 6.1.1 stanowią punkt wyjścia do takiego porównania.
Następnie ustal backend TLS. Trzy błędy nie dotyczą w jednakowy sposób każdej kompilacji GoAhead: zgłoszone warunki różnią się między integracjami zgodnymi z OpenSSL, LibreSSL i Mbed TLS. Obraz firmware’u może ujawnić dołączone biblioteki, nazwy pakietów, skrypty budowania lub symbole, choć wycięte symbole i modyfikacje producenta mogą uniemożliwić rozstrzygnięcie. Jeśli dostępna jest dokumentacja, odnotuj, czy urządzenie korzysta z OpenSSL, LibreSSL czy Mbed TLS oraz czy włączono odpowiednią starszą ścieżkę weryfikacji lub ścieżkę zgodności. Gdy dokumentacja jest niepełna, uznaj backend za nieznany, zamiast zakładać najczęściej spotykaną opcję. Potwierdzone połączenie backendu, wersji i konfiguracji stanowi znacznie mocniejszy dowód niż ogólny wynik wyszukiwania produktu.
Równie ważny jest przegląd konfiguracji. W przypadku błędu związanego z OpenSSL ustal, czy urządzenie wykorzystuje listy unieważnionych certyfikatów w ramach uwierzytelniania wzajemnego TLS oraz czy listy te są tylko wczytywane, czy rzeczywiście egzekwowane podczas weryfikacji certyfikatu. W przypadku LibreSSL sprawdź, czy łańcuchy certyfikatów klientów są weryfikowane za pośrednictwem objętej błędem starszej ścieżki weryfikatora oraz czy skonfigurowano limit głębokości łańcucha. W instalacjach Mbed TLS ustal, czy TLS 1.2 może negocjować wymianę kluczy Diffiego-Hellmana w grupach skończonych oraz czy DHE jest włączone dla usługi zarządzania. Pytania te zawężają ocenę do okoliczności opisanych w zaleceniach; nie uzasadniają uznania za podatne wszystkich urządzeń tego samego producenta, linii produktowej czy serwera WWW. Odpowiednie zalecenie OpenSSL, zalecenie LibreSSL oraz zalecenie Mbed TLS należy wykorzystać jako listę kontrolną konfiguracji.
Obserwacja ruchu sieciowego może dostarczyć dodatkowych dowodów, ale nie powinna być traktowana jako substytut przypisania oprogramowania układowego. W przypadku narażonego punktu końcowego zarządzania należy odnotować wynegocjowaną wersję protokołu, sposób uwierzytelniania certyfikatem oraz odcisk TLS lub profil zestawu szyfrów, jeśli takie obserwacje są dostępne i dozwolone. Profil może pomóc odróżnić wdrożenie w stylu OpenSSL od innej implementacji albo wykazać, czy oferowany jest DHE oparty na ciałach skończonych, ale zazwyczaj nie pozwala potwierdzić dokładnej wersji GoAhead użytej w urządzeniu wbudowanym. Podobnie samo zaobserwowanie wzajemnego TLS nie dowodzi, że skonfigurowano listę odwołań ani że można dotrzeć do błędu OpenSSL. Takie obserwacje należy wykorzystywać do ustalania priorytetów urządzeń wymagających potwierdzenia przez właściciela i kontrolowanych testów, a następnie zachować surowe wyniki w dokumentacji zasobu.
Przydatny rejestr triage powinien rozdzielać trzy wyniki: potwierdzone narażenie, prawdopodobne narażenie oraz niepotwierdzone powiązanie. Potwierdzone narażenie wymaga dowodów łączących używane oprogramowanie układowe z podatną wersją GoAhead, backendem oraz konfiguracją lub ścieżką protokołu uruchamiającą błąd. Prawdopodobne narażenie oznacza, że co najmniej jeden z tych elementów pozostaje nieznany — na przykład producent potwierdził użycie GoAhead, ale nie wskazał dołączonej wersji ani biblioteki TLS. Niepotwierdzone powiązanie obejmuje przypadki, w których jedynym dowodem jest nazwa produktu lub producenta pojawiająca się w publicznym zestawieniu. Takie rozróżnienie nie pozwala, by szeroki zakres występowania oprogramowania przerodził się w nieprecyzyjną deklarację podatności, a producentowi daje konkretne pytania wymagające odpowiedzi.
Na koniec należy oddzielnie odnotować status wykorzystania podatności. Przywołane badania i dyskusje opisują błędy oraz warunki, w których występują, ale nie informują o potwierdzonym wykorzystaniu tych luk w środowisku produkcyjnym. Nie jest to powód, by odkładać weryfikację: dostępne z internetu usługi zarządzania oraz słabości uwierzytelniania certyfikatami nadal wymagają szybkiego sprawdzenia właściciela i działań naprawczych. Oznacza to jednak, że zespoły reagowania na incydenty nie powinny przedstawiać niezweryfikowanego dopasowania producenta jako dowodu przejęcia. Należy zachować odpowiednie logi i rejestry uwierzytelniania certyfikatami, poprosić producenta o wskazanie wersji GoAhead i backendu TLS w podatnym oprogramowaniu układowym oraz zaktualizować ocenę po uzyskaniu tych dowodów.
Odpowiedzialność za poprawkę, środki kompensujące i reagowanie
Trwałe rozwiązanie polega na przeniesieniu urządzenia na oprogramowanie układowe zawierające GoAhead 6.1.1 lub nowszą wersję. Wydanie bezpieczeństwa projektu nadrzędnego usuwa trzy usterki TLS zależne od backendu, ale produkt wbudowany zazwyczaj nie udostępnia GoAhead jako niezależnie utrzymywanego pakietu. W praktyce odpowiednią aktualizacją jest więc wydanie oprogramowania układowego producenta, a nie samo istnienie poprawionej wersji w projekcie nadrzędnym. Operatorzy powinni zapisać model produktu, wersję sprzętową, zainstalowane oprogramowanie układowe oraz datę najnowszego komunikatu producenta, a następnie porównać te informacje z deklarowanymi przez niego działaniami naprawczymi. Pojawienie się nazwy producenta na liście produktów korzystających z GoAhead nie potwierdza, że podatna jest konkretna jednostka, a brak publicznego komunikatu nie potwierdza jej bezpieczeństwa.
Jeżeli producent nie opublikował poprawki, należy poprosić o konkretny harmonogram naprawy oraz o wskazanie wersji GoAhead i backendu TLS, które znajdą się w planowanym oprogramowaniu układowym. Pytanie powinno być precyzyjne: czy kompilacja korzysta z OpenSSL, LibreSSL czy Mbed TLS; jaka wersja GoAhead została dołączona; oraz czy zmieniono odpowiednie ustawienia weryfikacji certyfikatów lub wymiany kluczy? Pomaga to odróżnić rzeczywiste zobowiązanie do wydania poprawki od ogólnego stwierdzenia, że produkt „nie jest podatny”. Daje też obrońcom podstawę do ustalenia priorytetów dla urządzeń udostępniających interfejsy zarządzania poza zaufanymi sieciami, korzystających ze wzajemnego TLS lub chroniących wrażliwe sesje administracyjne.
Środki kompensujące zależą od backendu i używanej funkcji. W przypadku kompilacji zgodnej z OpenSSL administratorzy powinni sprawdzić, czy skonfigurowano listy odwołań certyfikatów oraz czy weryfikacja wystawcy lub łańcucha jest włączona w sposób uniemożliwiający zaakceptowanie odwołanej tożsamości klienta. Opisana w komunikacie usterka dotyczy sytuacji, w której skonfigurowana CRL jest wczytywana, ale nie jest egzekwowana, dlatego samo potwierdzenie istnienia pliku CRL jest niewystarczające. Do czasu zainstalowania poprawki środowiska polegające na uwierzytelnianiu certyfikatem klienta powinny sprawdzić, czy mogą wzmocnić weryfikację wystawcy albo tymczasowo ograniczyć podatną usługę zarządzania do zaufanych sieci i zatwierdzonych systemów źródłowych.
W przypadku wdrożeń LibreSSL zakres narażenia zależy od starszej ścieżki weryfikacji oraz ustawień, które pozwalają na wystąpienie warunku dotyczącego głębokości łańcucha certyfikatów. W praktyce należy potwierdzić, jaką politykę weryfikacji stosuje produkt, i nie zakładać, że samo skonfigurowanie limitu głębokości łańcucha zapewnia zamierzoną ochronę. W kompilacjach z Mbed TLS zalecenie z biuletynu jest bardziej bezpośrednie: jeśli produkt to obsługuje, należy wyłączyć DHE w oparciu o pola skończone i wybrać dostępną alternatywę, która nie zależy od wadliwej obsługi tych parametrów. To tymczasowa kontrola, a nie zamiennik naprawy oprogramowania układowego; przed wdrożeniem trzeba ją sprawdzić względem obsługiwanej przez produkt konfiguracji TLS.
Po aktualizacji lub zmianie konfiguracji weryfikacja powinna objąć zarówno oprogramowanie, jak i politykę bezpieczeństwa. Należy potwierdzić zgłaszaną wersję firmware’u, sprawdzić, czy interfejs zarządzania nadal korzysta z zamierzonej konfiguracji certyfikatów i zaufania, a także przetestować odwołane lub w inny sposób niedozwolone tożsamości klientów, jeśli projekt obejmuje wzajemne TLS. Warto przeanalizować negocjowane zachowanie TLS, w tym sprawdzić, czy DHE oparte na polach skończonych pozostaje włączone na urządzeniu z Mbed TLS, jeśli produkt umożliwia jego obserwację. Należy też ponownie ocenić, które interfejsy zarządzania są dostępne, czy dostęp administracyjny ograniczono do oczekiwanych sieci oraz czy po zakończeniu cyklu utrzymaniowego którekolwiek urządzenie nadal korzysta z nieaktualnego obrazu firmware’u.
Reakcja powinna uwzględniać również sesje i dane uwierzytelniające obsługiwane przed usunięciem problemu. Jeśli urządzenie zaakceptowało certyfikat, który powinien zostać odrzucony, albo jeśli poufna sesja TLS 1.2 korzystała z podatnej ścieżki wymiany kluczy Mbed TLS, należy zachować istotne logi i rozważyć konsekwencje dla tożsamości, decyzji dostępowych oraz danych wymienianych w tym okresie. W przywołanych badaniach nie odnotowano potwierdzonego wykorzystania podatności w praktyce, więc nie jest to dowód, że każde podatne urządzenie zostało przejęte. Jest to jednak powód, by traktować ekspozycję jako problem związany z aktualizacją i zapewnieniem bezpieczeństwa: ustalić, jakie kompilacje i konfiguracje były używane, udokumentować zastosowane środki oraz zachować odpowiedź producenta.
Ostatecznie odpowiedzialność jest wspólna, ale role nie są wymienne. EmbedThis może dostarczyć poprawione wydanie GoAhead, natomiast producent urządzenia decyduje, jak to wydanie zostanie skompilowane, skonfigurowane, podpisane i przekazane klientom. Właściciele urządzeń odpowiadają za inwentaryzację, ekspozycję sieciową, politykę uwierzytelniania oraz decyzję o wycofaniu lub odizolowaniu nieobsługiwanego sprzętu. Pełna reakcja kończy się dopiero wtedy, gdy znane jest pochodzenie firmware’u, sprawdzono ustawienie właściwe dla danego backendu, przeanalizowano powierzchnię zarządzania, a producent zapewnił wiarygodną ścieżkę dla produktów, których nie można aktualizować niezależnie.
Comments
Sign in to comment.
No comments yet.