18:01
22/3/2010

Przy ostatniej wpadce z backdoorem w paczkach udostępnianch na phpbbhelp.pl, sporo z Was chciało wiedzieć jak zabezpieczyć swoje oprogramowanie przed modyfikacją i zagwarantować mu integralność. Dziś zaczynamy cykl artykułów, który postara się przedstawić możliwe rozwiązania tego problemu.

Microsoft Authenticode

Jedną z popularniejszych technologii podpisywania kodu jest Authenticode. Stosuje ją Microsoft w Windows Vista i Windows 7. Dzięki certyfikatowi zgodnemu z Microsoft Authenticode użytkownik może dowiedzieć się, kto był twórcą programu lub jaka firma go opracowała:

Próba otworzenia pliku podpisanego zaufanym certyfikatem

Osoba, która uruchamia powyższy program może być pewna, że nie został on zmodyfikowany od momentu podpisania go przez jego twórcę. Warto pamiętać, że kwestia zaufania uruchamiającego program do jego twórcy to już zupełnie inna sprawa, której certyfikaty nie regulują.

Komunikaty o nieprzyjemnej treści

Kiedy jednak internauta przystępuje do pobrania aplikacji, która jest podpisana przy wykorzystaniu certyfikatu wydanego przez nieznane centrum certyfikacji lub aplikacja została zmodyfikowana po złożeniu podpisu, bądź nie jest podpisana wcale, pojawia się komunikat ostrzegawczy:

Taki sam komunikat pojawi się także w innych przypadkach, dotyczących uruchomienia:

  • programu podpisanego przez niezaufane centrum certyfikacji
  • aplikacji, która została podpisana przez zaufany urząd certyfikacji, a następnie uległa modyfikacji (np. na skutek działania wirusa lub osób trzecich, por. Czy phpbbhelp.pl kradnie hasła?)
Nieznane cetrum certyfikacji, to takie, którego Główny Certyfikat (ang. root certificate) nie znajduje się w naszym systemowym magazynie certyfikatów.

Aby dostać się do systemowego magazynu certyfikatów należy wybrać:
Menu Start -> Uruchom -> mmc.exe -> Dodaj/Usuń przystawkę -> Dodaj -> Certyfikaty.

Pamiętaj, że tylko Internet Explorer korzysta z systemowego magazynu certyfikatów, reszta przeglądarek internetowychczęsto posiada osobne “magazyny”, którymi zarządza się z poziomu ustawień danej przeglądarki.

 

Windows Vista i Windows 7

Przy uruchamianiu aplikacji bez podpisu elektronicznego w systemie Vista wywołany zostanie panel kontroli konta użytkownika (User Account Control – UAC). Jeśli kod nie został podpisany za pomocą certyfikatu wystawionego przez zaufane centrum certyfikacji, UAC otrzeże o próbie uzyskania dostępu do komputera przez niezidentyfikowany, potencjalnie niebezpieczny program. Do użytkownika będzie należała decyzja o zezwoleniu bądź zakazie uruchamiania danej aplikacji.

Komunikat UAC - Windows Vista

Komunikat UAC - Windows 7

Oczywiście inne komunikaty pojawiają się wtedy, gdy z zasobów systemu próbuje skorzystać program podpisany zaufanym certyfikatem, a inne w przypadku programu niepodpisanego.

W sytuacji, gdy otwierana będzie aplikacja podpisana elektronicznie za pomocą certyfikatu wydanego przez zaufany urząd certyfikacji, “ostrzeżenia” dla użytkownika będą zdecydowanie mniej uciążliwe, a sama aplikacja nie zostanie potraktowana jako potencjalne zagrożenie:

Windows Vista i próba uruchomienia aplikacji podpisanej przy pomocy certyfikatu wydanego przez zaufane cetrum certyfikacji

W systemie Vista w razie potrzeby, użytkownik przy pierwszym uruchomieniu może wybrać opcję, aby komunikat więcej się nie pojawiał.

Firefox i instalacja niezaufanych dodatków

Rozszerzenia do przeglądarki Firefoks mogą być podpisywane elektronicznie. Niestety, większość z developerów takich rozszeżeń nie korzysta z tej możliwości i przy próbie instalacji dodatków z oficjalnej strony Mozilli widzimy takie ostrzeżenie:

Firefoks ostrzega przed instalacją znanych rozszerzeń. Nie są one podpisane.

Przy okazji, czy znacie jakiekolwiek podpisane rozszerzenie do Firefoksa? Nam nie udało się ani jednego…

Podsumowanie

Warto zwracać uwagę, jakimi komunikatami raczy nas system Windows — zawierają one istotną z punktu bezpieczeństwa informację o uruchamianych programach. Czasem nawet jeśli autorem oprogramowania jest znana firma, lepiej odżałować i nie uruchomić aplikacji, jeśli widzimy ostrzeżenie, że nie została ona podpisana zaufanym certyfikatem lub certyfikat ten nie jest ważny — może to bowiem oznaczać, że próbujemy otworzyć zainfekowaną aplikację, która została zmodyfikowana przez złośliwe oprogramowanie.

Przypominamy też, że z racji tego iż naszym marcowym sponsorem jest firma CERTUM, możecie na lepszych warunkach niż inni skorzystać z :



P.S. Nasz sponsor Certum PCC wspiera także developerów Open Source:
Sofware Publisher, Java Code Signing

Przeczytaj także:



11 komentarzy

Dodaj komentarz
  1. > Przy okazji, czy znacie jakiekolwiek podpisane rozszerzenie do Firefoksa?

    Tak, jedno – Adblock Plus. Jego autor musiał zresztą trochę pogrzebać w samym Firefoksie zanim zaczęło to działać:

    http://adblockplus.org/blog/trying-to-get-rid-of-author-not-verified-or-signing-extensions-with-sitecom-certificate
    http://adblockplus.org/blog/more-extension-signing-adventures

    No, ale dzięki niemu droga dla naśladowców jest już przetarta.

  2. Podpisane rozszerzenia do Firefoksa mają np. pluginy służące do podpisywania przelewów w niektórych polskich Bankach

  3. Jaka jest przewaga takich podpisów nad sumami kontrolnymi?

  4. @mroczne_widmo: sumę kontrolną też musisz gdzieś opublikować.

    Jeśli atakujący zmienia linijkę w twojej paczce, zmienia się jej suma kontrolna. Atakujący o tym wie, więc wylicza sumę dla nowej paczki (ze zmienioną zawartością) i podkłada zamiast starej sumy kontrolnej.

    Jak wykryjesz, że ktoś zmodyfikował paczkę? Nie wykryjesz, jeśli nie masz gdzieś kopii stare sumy — a twój klient na pewno mieć jej nie będzie (albo nie będzie sprawdzał w kilku miescach ;p)

    Podpis elektroniczny to tak naprawdę zaszyfrowany skrót (suma kontrolna) podpisywanego pliku. Szyfrowanie sumy gwarantuje, że nikt oprócz Ciebie nie zmieniał zawartości pliku (bo nikt nie ma Twojego klucza), a dodatkowo wiąże ową sumę z twoją tożsamością (potwierdzaną przez “zaufaną stronę trzecią — czyli centrum certyfikacji).

  5. Ja tam podpisuję moje pliki przez GnuPG (a klucz publiczny linkuję na stronce). Nie żebym się spodziewał, że ktoś chciałby umieszczać w moich skryptach czy mini programikach malware, ale zasada jest zasada ;-).

  6. @Radek – ktore to banki ? Ktos oprocz BPH, i (zdaje sie) ING ?

  7. @Swoj – Paribas Fortis, Alior Bank w wersji dla firm, Pekao w wersji dla firm i pewnie jakieś inne, ZTCW każdy Bank, który używa komponentu (Plugin do FF, ActiveX, itp) do podpisywania przelewów podpisuje jego kod.

  8. Hmm a jak sprawa wygląda w Macu ? W linuksie paczki z distro są podpisane GPG. Oczywiście nie zabezpieca to przed wspomnianymi dodatkami do ff (zakładając że pójdzie ofc ;] )

  9. […] sami sprawdzić, wyświetlając certyfikaty przeglądarki. Jak to zrobić, opisaliśmy w tekście ochrona przed backdoorami, czyli podpis spotyka kod. Magazyn certyfikatów w […]

  10. […] Programiści zapenili, że aby zapobiec podobnym przypadkow w przyszłości będą podpisywali paczki za pomocą PGP/GPG (por. Ochrona przed backdoorami, czyli kod spotyka podpis. […]

  11. […] wprowadzanego firmware’u, żeby sprawdzić, czy pochodzi on z zaufanego źródła (por. podpisywanie kodu, czyli ochrona przed backdoorami). Po infomacjach od Barnaby część producentów bakomatów zaczęła podpisywać […]

Twój komentarz

Zamieszczając komentarz akceptujesz regulamin dodawania komentarzy. Przez moderację nie przejdą: wycieczki osobiste, komentarze nie na temat, wulgaryzmy.

RSS dla komentarzy: