| Termin | Definicja |
|---|---|
| VC++ nie działa z plikami DLL podpisanymi niestandardowo | Aplikacja VC++ niedziałająca z bibliotekami DLL podpisanymi niestandardowo oznacza, że polityka integralności kodu odrzuca pliki z certyfikatem spoza zaufanego łańcucha Microsoftu. Czym jest problem z uruchamianiem DLL podpisanych niestandardowoKomunikat „VC++ nie działa z plikami DLL podpisanymi niestandardowo” odnosi się do sytuacji, w której program napisany w Visual C++ nie może załadować biblioteki dynamicznej, mimo że plik znajduje się we właściwym katalogu i jego nazwa jest zgodna z oczekiwaniami aplikacji. Przyczyną bywa sposób podpisania biblioteki: certyfikat może pochodzić od mniej znanego wystawcy, nie obejmować wymaganych zastosowań albo tworzyć łańcuch zaufania, którego system nie potrafi zweryfikować. W efekcie kontrola bezpieczeństwa uznaje bibliotekę za niepewną, a proces uruchamiania zostaje przerwany jeszcze przed wykonaniem kodu DLL. Nie oznacza to automatycznie, że sama aplikacja VC++ jest uszkodzona. Problem może dotyczyć konkretnej biblioteki, certyfikatu, magazynu zaufanych certyfikatów, ustawień systemowych albo mechanizmu, który sprawdza autentyczność plików. Znaczenie ma również to, czy podpis obejmuje aktualny plik, czy certyfikat nie wygasł oraz czy można potwierdzić jego pochodzenie. Zdarza się także, że biblioteka została zmieniona po podpisaniu, przez co jej integralność przestaje się zgadzać z informacjami zapisanymi w podpisie. Kontekst techniczny i porównanie sposobów weryfikacjiBiblioteka DLL może zostać załadowana przez program na kilka sposobów, lecz w każdym przypadku system może przeprowadzić ocenę jej integralności. Podpis cyfrowy ma potwierdzać, kto wydał plik i czy nie został on zmodyfikowany po podpisaniu. Przy podpisie niestandardowym dodatkowej weryfikacji wymaga cały łańcuch certyfikatów: certyfikat pliku, certyfikaty pośrednie oraz certyfikat główny. Jeżeli któregoś elementu brakuje, certyfikat utracił ważność albo jego zastosowanie nie pasuje do podpisywania kodu, biblioteka może zostać odrzucona. Inaczej wygląda sytuacja, gdy problem wynika z braku zgodności architektury. Program 32-bitowy może oczekiwać biblioteki 32-bitowej, a aplikacja 64-bitowa odpowiednika 64-bitowego. Sam poprawny podpis nie naprawi błędnej architektury, podobnie jak zgodna architektura nie usunie błędu zaufania do certyfikatu. Należy również odróżnić odrzucenie podpisu od zwykłego błędu zależności, takiego jak brak innej biblioteki wymaganej przez wskazany plik. W praktyce konieczne jest sprawdzenie komunikatu systemowego, właściwości cyfrowego podpisu, wersji biblioteki oraz zależności ładowanych w czasie startu programu. Nie powinno się traktować wyłączenia wszystkich mechanizmów ochrony jako uniwersalnego rozwiązania. Takie działanie może jedynie zamaskować przyczynę i zwiększyć ryzyko uruchomienia zmodyfikowanego kodu. Bezpieczniejszym podejściem jest ustalenie źródła biblioteki, ponowne uzyskanie prawidłowo podpisanej wersji, uzupełnienie brakujących elementów łańcucha zaufania albo skonsultowanie ustawień z osobą odpowiedzialną za dane środowisko. Typowe problemy i błędy prowadzące do odrzucenia bibliotekiJednym z częstszych przypadków jest podpis wykonany certyfikatem przeznaczonym do innego celu niż podpisywanie kodu. System może wtedy rozpoznać obecność podpisu, ale nie uznać go za wystarczające potwierdzenie autentyczności biblioteki. Podobny skutek występuje po wygaśnięciu certyfikatu, unieważnieniu go przez wystawcę lub braku możliwości sprawdzenia statusu certyfikatu. Problem może zostać spotęgowany przez nieaktualne składniki systemu, niewłaściwą datę i godzinę albo ograniczony dostęp do usług potrzebnych do weryfikacji. Do błędów prowadzi również ręczna podmiana DLL po zakończeniu procesu podpisywania. Nawet pozornie drobna modyfikacja pliku, jego przepakowanie lub zmiana zawartości zasobów powoduje, że podpis nie odpowiada aktualnym danym. Warto sprawdzić, czy biblioteka nie została pobrana z niepewnego źródła, nie nosi śladów blokady pobranego pliku oraz czy nie jest zastępowana przez inną wersję znajdującą się w innym katalogu wyszukiwania. Nie zawsze źródłem komunikatu jest sam certyfikat. Aplikacja może korzystać z określonej wersji środowiska uruchomieniowego Visual C++, mieć zapisane odwołanie do innej ścieżki albo wymagać zestawu bibliotek o zgodnych wersjach. Odrzucenie może pojawić się też po aktualizacji programu, zmianie zasad ochrony systemu lub przywróceniu starszego obrazu systemu. Dlatego analiza powinna obejmować dzienniki zdarzeń, dokładny komunikat błędu, właściwości pliku, zależności oraz moment, od którego problem występuje. Kiedy trzeba zlecić diagnozę specjalistom - VC++ nie działa z plikami DLL podpisanymi niestandardowoZgłoszenie do serwisu jest uzasadnione, gdy aplikacja przestała działać po aktualizacji, biblioteka pochodzi od zewnętrznego dostawcy, podpis pozostaje niezweryfikowany mimo ponownego pobrania pliku albo nie można ustalić, która wersja DLL jest faktycznie ładowana. Szczególnej ostrożności wymaga sytuacja, w której program uruchamia się dopiero po wyłączeniu ochrony systemu. Może to wskazywać na nieprawidłową konfigurację, ale także na bibliotekę zmodyfikowaną lub pochodzącą z niepewnego źródła. W ramach diagnostyki można sprawdzić podpis i łańcuch certyfikatów, zgodność architektury, zależności aplikacji, lokalizację ładowanej biblioteki oraz wpisy w dziennikach systemowych. Następnie można rozdzielić problem certyfikatu od błędu środowiska VC++, uszkodzenia pliku lub konfliktu kilku wersji tej samej DLL. Warszawskie Pogotowie Komputerowe 24/7 przyjmuje tego typu zgłoszenia dotyczące laptopów i komputerów PC, a przed podjęciem naprawy wykonywana jest darmowa diagnoza LAPTOPA. Przed przekazaniem urządzenia warto zachować pełną treść komunikatu, nazwę programu, nazwę odrzucanej biblioteki oraz informację o ostatniej aktualizacji. Nie należy pobierać przypadkowych plików DLL z niezweryfikowanych stron ani kopiować bibliotek z innego komputera bez sprawdzenia ich pochodzenia i zgodności. Tak przygotowane informacje ułatwiają odtworzenie problemu i dobranie rozwiązania, które przywraca działanie aplikacji bez osłabiania ochrony systemu. |