SlideShare ist ein Scribd-Unternehmen logo
1 von 27
Downloaden Sie, um offline zu lesen
IDZ DO
         PRZYK£ADOWY ROZDZIA£

                           SPIS TRE CI   Hack Proofing Your
                                         Web Applications.
           KATALOG KSI¥¯EK
                      KATALOG ONLINE
                                         Edycja polska
                                         Autorzy: Jeff Forristal, Julie Traxler
                                         T³umaczenie: Miko³aj Barwicki
       ZAMÓW DRUKOWANY KATALOG           ISBN: 83-7361-006-5
                                         Tytu³ orygina³u: Hack Proofing Your Web Applications
              TWÓJ KOSZYK                Format: B5, stron: 406
                                         Przyk³ady na ftp: 22 kB
                    DODAJ DO KOSZYKA
                                         Wyczerpuj¹cy przewodnik wprowadzaj¹cy w arkana tworzenia bezpiecznych aplikacji
                                         WWW. Twórca aplikacji WWW nie mo¿e sobie pozwoliæ na to, by jego dzie³a by³y
         CENNIK I INFORMACJE             wra¿liwe na ataki hakerów.
                                         Zacznij wiêc my leæ jak haker, a luki w bezpieczeñstwie natychmiast siê ujawni¹. Dziêki
                   ZAMÓW INFORMACJE      tej ksi¹¿ce nauczysz siê analizowaæ metody stosowane do w³amañ i ataków na witryny
                     O NOWO CIACH        WWW. Bêdziesz móg³ nastêpnie wykorzystaæ tê wiedzê, by zapobiegaæ atakom.
                                         W ksi¹¿ce omówiono m.in.:
                       ZAMÓW CENNIK         • Najlepsze zabezpieczania aplikacji WWW
                                            • Zagadnienia bezpieczeñstwa w projektowaniu
                                            • Ostrze¿enia o niebezpieczeñstwie
                 CZYTELNIA                  • Technologie XML, Java, ColdFusion oraz skrypty CGI.
                                            • Witryny po wiêcone hakerom
          FRAGMENTY KSI¥¯EK ONLINE          • Narzêdzia i pu³apki
                                            • Piêæ faz w³amania
                                            • Rodzaje ataków hakerskich
                                            • Niezbêdne etapy dzia³ania przy ocenie ryzyka
                                            • Automatyczne narzêdzia skanuj¹ce




Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Spis treści
Podziękowania ...........................................................................................................9
Współpracownicy .....................................................................................................10
Przedmowa...............................................................................................................13
Rozdział 1. Metodologia włamań..............................................................................15
                 Wprowadzenie .............................................................................................................. 15
                     Podstawowe terminy................................................................................................ 16
                 Krótka historia hackingu ................................................................................................ 17
                     Hacking sieci telefonicznych .................................................................................... 17
                     Hacking komputerowy............................................................................................. 18
                 Co motywuje hakera?.................................................................................................... 20
                     Hacking etyczny a hacking złośliwy.......................................................................... 20
                     Współpraca ze specjalistami ds. bezpieczeństwa ........................................................ 21
                 Współczesne rodzaje ataków.......................................................................................... 22
                     DoS (DDoS) ........................................................................................................... 22
                     Hacking wirusowy................................................................................................... 24
                     Kradzie ................................................................................................................. 29
                 Zagro enia bezpieczeństwa aplikacji WWW.................................................................... 32
                     Ukryta manipulacja.................................................................................................. 32
                     Zamiana parametrów ............................................................................................... 33
                     Zewnętrzne skrypty ................................................................................................. 33
                     Przepełnienie buforów ............................................................................................. 33
                     Zatrute cookies........................................................................................................ 34
                 Zapobieganie włamaniom poprzez przyjęcie postawy hakera ............................................ 34
                 Podsumowanie.............................................................................................................. 36
                 Skrót rozwiązań ............................................................................................................ 37
                 Pytania i odpowiedzi ..................................................................................................... 39
Rozdział 2. Jak nie zostać „maszynką do kodu”?......................................................41
                 Wprowadzenie .............................................................................................................. 41
                 Kim jest „maszynka do kodu”? ...................................................................................... 42
                     Postępując zgodnie z zasadami ................................................................................. 45
                 Twórcze kodowanie ...................................................................................................... 46
                     Zastanawiać się ....................................................................................................... 48
                 Bezpieczeństwo z punktu widzenia „maszynki do kodu” .................................................. 50
                     Programowanie w pró ni.......................................................................................... 51
                 Tworzenie sprawnych i bezpiecznych aplikacji sieciowych ............................................... 52
                     Przecie mój kod działa! .......................................................................................... 56
                 Podsumowanie.............................................................................................................. 61
                 Skrót rozwiązań ............................................................................................................ 62
                 Pytania i odpowiedzi ..................................................................................................... 63
4          Hack Proofing Your Web Applications. Edycja polska


Rozdział 3. Ryzyko związane z kodem przenośnym....................................................65
               Wprowadzenie .............................................................................................................. 65
               Działanie ataków wykorzystujących kod przenośny ......................................................... 66
                   Ataki z wykorzystaniem przeglądarek ....................................................................... 66
                   Ataki z wykorzystaniem programów pocztowych ....................................................... 67
                   Złośliwe skrypty lub makra ...................................................................................... 68
               Identyfikacja popularnych form kodu przenośnego........................................................... 68
                   Języki makropoleceń: Visual Basic for Applications (VBA) ........................................ 69
                   JavaScript ............................................................................................................... 74
                   VBScript ................................................................................................................ 77
                   Aplety w Javie ........................................................................................................ 79
                   Kontrolki ActiveX ................................................................................................... 82
                   Załączniki listów elektronicznych i pobrane pliki wykonywalne .................................. 86
               Ochrona systemu przez atakami wykorzystującymi kod przenośny .................................... 89
                   Aplikacje bezpieczeństwa......................................................................................... 90
                   Narzędzia na stronach WWW................................................................................... 93
               Podsumowanie.............................................................................................................. 93
               Skrót rozwiązań ............................................................................................................ 95
               Pytania i odpowiedzi ..................................................................................................... 95
Rozdział 4. Wrażliwe skrypty CGI.............................................................................97
               Wprowadzenie .............................................................................................................. 97
               Czym jest i co robi skrypt CGI? ..................................................................................... 98
                   Typowe zastosowania skryptów CGI ........................................................................ 99
                   Kiedy powinno się stosować CGI?.......................................................................... 103
                   Zagadnienia związane z instalacją skryptów CGI ..................................................... 104
               Włamania umo liwione przez słabe skrypty CGI ........................................................... 105
                   Jak pisać bardziej szczelne skrypty CGI?................................................................. 106
                   Polecenia katalogów .............................................................................................. 108
                   Opakowania skryptów CGI .................................................................................... 109
               Języki wykorzystywane do tworzenia skryptów CGI ...................................................... 112
                   Powłoka systemu Unix........................................................................................... 113
                   Perl ...................................................................................................................... 113
                   C (C++)................................................................................................................ 114
                   Visual Basic.......................................................................................................... 114
               Korzyści ze stosowania skryptów CGI .......................................................................... 115
               Zasady tworzenia bezpiecznych skryptów CGI .............................................................. 115
                   Składowanie skryptów CGI.................................................................................... 118
               Podsumowanie............................................................................................................ 120
               Skrót rozwiązań .......................................................................................................... 120
               Pytania i odpowiedzi ................................................................................................... 123
Rozdział 5. Techniki i narzędzia włamań.................................................................125
               Wprowadzenie ............................................................................................................ 125
               Cele hakera................................................................................................................. 126
                   Omijanie alarmów ................................................................................................. 127
                   Zdobywanie dostępu.............................................................................................. 128
                   Zniszczenia, zniszczenia, zniszczenia ...................................................................... 130
                   Jak być lepszym od hakera..................................................................................... 131
               Pięć etapów włamania ................................................................................................. 132
                   Tworzenie planu ataku........................................................................................... 132
                   Tworzenie planu przebiegu włamania...................................................................... 134
                   Wybranie punktu wejścia ....................................................................................... 135
                   Stały i szeroki dostęp ............................................................................................. 136
                   Atak ..................................................................................................................... 137
Spis treści                   5


              Socjotechnika ............................................................................................................. 138
                  Informacje poufne ................................................................................................. 138
              Celowo pozostawione tylne wejścia .............................................................................. 143
                  Wprowadzenie do kodu ukrytego hasła.................................................................... 143
              Wykorzystanie słabych stron właściwych kodowi lub środowisku programowania ............ 145
              Narzędzia wykorzystywane przez hakera ...................................................................... 145
                  Edytory szesnastkowe............................................................................................ 145
                  Programy uruchomieniowe..................................................................................... 147
                  Deasemblery ......................................................................................................... 148
              Podsumowanie............................................................................................................ 150
              Skrót rozwiązań .......................................................................................................... 150
              Pytania i odpowiedzi ................................................................................................... 153
Rozdział 6. Kontrola kodu i odwrotna analiza..........................................................155
              Wprowadzenie ............................................................................................................ 155
              Jak efektywnie śledzić działanie programu .................................................................... 156
              Monitorowanie i kontrola w wybranych językach programowania ................................... 158
                  Java ..................................................................................................................... 158
                  Java Server Pages.................................................................................................. 159
                  Active Server Pages............................................................................................... 159
                  Server Side Includes .............................................................................................. 159
                  Python ................................................................................................................. 159
                  Tool Command Language ...................................................................................... 160
                  Practical Extraction and Reporting Language ........................................................... 160
                  PHP: Hypertext Preprocessor ................................................................................. 160
                  C (C++)................................................................................................................ 160
                  ColdFusion ........................................................................................................... 161
              Lokalizacja słabych punktów........................................................................................ 161
                  Pobieranie danych od u ytkownika ......................................................................... 161
                  Lokalizacja potencjalnych błędów przepełnienia buforów ......................................... 162
                  Weryfikacja wyświetlanych informacji.................................................................... 165
                  Kontrola operacji na systemie plików ...................................................................... 168
                  Uruchamianie zewnętrznego kodu i programów ....................................................... 170
                  Zapytania do baz danych SQL................................................................................ 172
                  Sieci i strumienie komunikacyjne............................................................................ 174
              Praktyka..................................................................................................................... 175
              Podsumowanie............................................................................................................ 176
              Skrót rozwiązań .......................................................................................................... 176
              Pytania i odpowiedzi ................................................................................................... 177
Rozdział 7. Bezpieczeństwo w języku Java .............................................................179
              Wprowadzenie ............................................................................................................ 179
              Architektura bezpieczeństwa Javy................................................................................. 180
                  Model bezpieczeństwa w języku Java...................................................................... 181
                  Piaskownica.......................................................................................................... 183
              Podejście do problemów bezpieczeństwa w Javie........................................................... 187
                  Programy ładujące klasy ........................................................................................ 187
                  Weryfikator bajt-kodu............................................................................................ 190
                  Chronione domeny Javy......................................................................................... 194
              Potencjalne luki bezpieczeństwa w Javie ....................................................................... 201
                  Ataki DoS (degradacji usług).................................................................................. 202
                  Konie trojańskie .................................................................................................... 204
              Programowanie funkcjonalnych, ale bezpiecznych apletów w Javie ................................. 205
                  Skróty wiadomości ................................................................................................ 206
                  Podpisy cyfrowe ................................................................................................... 208
6          Hack Proofing Your Web Applications. Edycja polska


                  Uwierzytelnianie ................................................................................................... 214
                  Ochrona zabezpieczeń za pomocą podpisywania plików JAR .................................... 220
                  Szyfrowanie.......................................................................................................... 223
                  Zalecenia Sun Microsystems odnośnie bezpieczeństwa w Javie ................................. 227
              Podsumowanie............................................................................................................ 230
              Skrót rozwiązań .......................................................................................................... 231
              Pytania i odpowiedzi ................................................................................................... 232
Rozdział 8. Bezpieczeństwo w języku XML .............................................................235
              Wprowadzenie ............................................................................................................ 235
              Definicja języka XML ................................................................................................. 236
                  Struktura logiczna.................................................................................................. 237
                  Elementy .............................................................................................................. 237
                  Dokumenty XML, XSL i DTD ............................................................................... 240
                  Zastosowanie szablonów w języku XSL .................................................................. 240
                  Zastosowanie wzorów w języku XSL...................................................................... 241
                  DTD .................................................................................................................... 243
              Wykorzystanie języka XML do tworzenia aplikacji WWW............................................. 245
              Ryzyko związane z językiem XML............................................................................... 247
                  Problemy tajności.................................................................................................. 248
              Bezpieczeństwo w języku XML ................................................................................... 249
                  Specyfikacja XML Encryption................................................................................ 250
                  Specyfikacja XML Digital Signatures...................................................................... 254
              Podsumowanie............................................................................................................ 256
              Skrót rozwiązań .......................................................................................................... 257
              Pytania i odpowiedzi ................................................................................................... 258
Rozdział 9. Tworzenie bezpiecznych sieciowych kontrolek ActiveX..........................259
              Wprowadzenie ............................................................................................................ 259
              Zagro enia związane z technologią ActiveX .................................................................. 260
                  Unikanie typowych luk bezpieczeństwa w kontrolkach ActiveX ................................ 262
                  Usuwanie skutków luk w technologii ActiveX ......................................................... 264
              Metodologia tworzenia bezpiecznych kontrolek ActiveX ................................................ 267
                  Parametry bezpieczeństwa obiektu .......................................................................... 267
              Bezpieczne kontrolki ActiveX ...................................................................................... 268
                  Podpisywanie kontrolek ......................................................................................... 268
                  Znakowanie kontrolek............................................................................................ 271
              Podsumowanie............................................................................................................ 276
              Skrót rozwiązań .......................................................................................................... 276
              Pytania i odpowiedzi ................................................................................................... 278
Rozdział 10. Bezpieczeństwo w ColdFusion..............................................................281
              Wprowadzenie ............................................................................................................ 281
              Jak działa ColdFusion? ................................................................................................ 282
                  Zalety szybkiego projektowania.............................................................................. 283
                  Zarys znacznikowego języka ColdFusion................................................................. 284
              Zachowanie bezpieczeństwa w technologii ColdFusion .................................................. 286
                  Projektowanie z uwzględnieniem bezpieczeństwa..................................................... 288
                  Bezpieczne rozpowszechnianie ............................................................................... 297
              Przetwarzanie w aplikacjach ColdFusion ....................................................................... 297
                  Sprawdzanie istnienia danych ................................................................................. 298
                  Kontrola typów danych.......................................................................................... 299
                  Szacowanie danych ............................................................................................... 301
              Ryzyko związane z technologią ColdFusion .................................................................. 302
                  Zastosowanie programów obsługi błędów................................................................ 304
Spis treści                   7


                 Stosowanie śledzenia sesji............................................................................................ 308
                 Podsumowanie............................................................................................................ 309
                 Skrót rozwiązań .......................................................................................................... 310
                 Pytania i odpowiedzi ................................................................................................... 311
Rozdział 11. Projektowanie aplikacji spełniających wymogi bezpieczeństwa..............313
                 Wprowadzenie ............................................................................................................ 313
                 Zalety stosowania aplikacji spełniających wymogi bezpieczeństwa.................................. 314
                 Rodzaje zabezpieczeń stosowanych w aplikacjach.......................................................... 315
                     Podpisy elektroniczne ............................................................................................ 316
                     Pretty Good Privacy .............................................................................................. 317
                     Protokół S/MIME.................................................................................................. 319
                     Secure Sockets Layer ............................................................................................ 319
                     Certyfikaty cyfrowe............................................................................................... 323
                 Podstawowe informacje na temat PKI........................................................................... 325
                     Usługi certyfikujące............................................................................................... 327
                 Zastosowanie PKI do zabezpieczania aplikacji WWW.................................................... 328
                 Implementacja PKI w infrastrukturze WWW................................................................. 329
                     Microsoft Certificate Services................................................................................. 330
                     Netscape Certificate Server .................................................................................... 333
                     PKI dla Serwera Apache ........................................................................................ 339
                     PKI i Secure Software Toolkits............................................................................... 341
                 Testowanie zabezpieczeń ............................................................................................. 341
                 Podsumowanie............................................................................................................ 343
                 Skrót rozwiązań .......................................................................................................... 345
                 Pytania i odpowiedzi ................................................................................................... 347
Rozdział 12. Od początku do końca — praca z planem bezpieczeństwa.....................349
                 Wprowadzenie ............................................................................................................ 349
                 Analiza kodu .............................................................................................................. 350
                     Sprawdzanie kodu ................................................................................................. 351
                     Perspektywa współpracownika ............................................................................... 352
                 Świadomość słabych punktów kodu.............................................................................. 354
                     Testy, testy, testy .................................................................................................. 355
                 Rozsądek podczas kodowania ...................................................................................... 357
                     Planowanie ........................................................................................................... 357
                     Standardy kodowania............................................................................................. 358
                     Narzędzia ............................................................................................................. 359
                 Tworzenie planu bezpieczeństwa .................................................................................. 362
                     Planowanie bezpieczeństwa na poziomie sieci.......................................................... 364
                     Planowanie bezpieczeństwa na poziomie aplikacji.................................................... 364
                     Planowanie bezpieczeństwa na poziomie biura......................................................... 365
                     Proces bezpieczeństwa aplikacji WWW .................................................................. 365
                 Podsumowanie............................................................................................................ 367
                 Skrót rozwiązań .......................................................................................................... 368
                 Pytania i odpowiedzi ................................................................................................... 369
Dodatek A Skrót zagadnień omawianych w książce ...............................................371
Skorowidz ..............................................................................................................389
Rozdział 9.
Tworzenie
bezpiecznych sieciowych
kontrolek ActiveX
    Rozwiązania omawiane w niniejszym rozdziale:
        Zagro enia związane z technologią ActiveX.
        Metodologia tworzenia bezpiecznych kontrolek ActiveX.
        Bezpieczne kontrolki ActiveX.
        Podsumowanie.
        Skrót rozwiązań.
        Pytania i odpowiedzi.


Wprowadzenie
    Kontrolki ActiveX są opracowaną przez Microsoft implementacją standardu Component
    Object Model (COM). Firma stworzyła technologię ActiveX w miejsce przestarzałego
    modelu Object Linking and Embedding (OLE), stosowanego we wcześniejszych wersjach
    systemu Windows. Do ulepszeń ActiveX względem modelu OLE nale y rozszerzalność
    modelu i mo liwość przetwarzania rozproszonego (DCOM), jak równie lepsza wydaj-
    ność w lokalnych aplikacjach. Kontrolki ActiveX z reguły są tworzone w Visual Basicu
    lub C++.

    Kontrolki ActiveX są w systemie Windows łatwo zauwa ane i dodają aplikacjom, zwłasz-
    cza WWW, wiele mo liwości interakcji. Dobrze komponują się w dokumenty HTML,
    dzięki czemu bez trudu mo na je przenosić pomiędzy systemami. Kontrolki ActiveX
    w aplikacjach mogą słu yć do wykonywania powtarzających się czynności lub do wy-
    woływania innych kontrolek, odpowiedzialnych za konkretne operacje. Po instalacji
    kontrolki ActiveX, jest ona uruchamiana automatycznie i nie musi być ponownie insta-
    lowana. Tak naprawdę kontrolka ActiveX mo e zostać pobrana z odległego serwera za
    pośrednictwem adresu URL, po czym uruchamiana bez konieczności powtórnego pobie-
    rania. Pozwala to na uruchamianie kontrolek ActiveX z poziomu stron WWW.
260   Hack Proofing Your Web Applications. Edycja polska


      Problemy bezpieczeństwa dotyczące kontrolek ActiveX są ściśle związane z właściwo-
      ściami technologii ActiveX. Kontrolki nie są uruchamiane w ograniczonej przestrzeni lub
      piaskownicy, jak ma to miejsce w przypadku apletów Javy, tak więc stanowią potencjal-
      nie większe zagro enie dla aplikacji. Ponadto kontrolki ActiveX są zdolne do wszelkich
      operacji, które mo e wykonać u ytkownik, to znaczy, e są w stanie dodawać i usuwać
      dane lub zmieniać właściwości obiektów. Wydaje się, i JavaScript oraz aplety w Javie
      zdominowały środowisko projektantów internetowych, ale wiele witryn i aplikacji wcią
      korzysta z kontrolek ActiveX.

      Wcią pojawiające się wiadomości o włamaniach na witryny internetowe świadczą o tym,
       e wielu programistów jeszcze nie opanowało sztuki zabezpieczania swoich kontrolek,
      a przecie ActiveX jest dość dobrze znaną technologią. Niniejszy rozdział ma za zadanie
      pomóc w identyfikacji i rozwiązywaniu niektórych problemów bezpieczeństwa wynikają-
      cych ze źle napisanych kontrolek ActiveX (spośród których wiele jest za darmo dostęp-
      nych w internecie). Obalone zostaną popularne, błędne twierdzenia dotyczące ActiveX,
      natomiast wprowadzone będą skuteczne zasady tworzenia bezpiecznych i funkcjonalnych
      kontrolek ActiveX.



Zagrożenia związane
z technologią ActiveX
      Podstawowe zagro enia związane z kontrolkami ActiveX wynikają ze sposobu traktowa-
      nia problemów bezpieczeństwa przez firmę Microsoft. Wdra ając technologię Authen-
      ticode, słu ącą do opatrywania kontrolki cyfrowym podpisem, Microsoft uznaje, e jest
      w stanie zagwarantować u ytkownikowi źródło pochodzenia kontrolki oraz fakt, e
      kontrolka nie została zmodyfikowana od momentu powstania. W większości przypadków
      jest to prawdą, jednak kilka rzeczy, których Microsoft nie robi, stanowi powa ne zagro-
        enie dla stacji roboczych i całych sieci. Pierwszym i najbardziej oczywistym niebezpie-
      czeństwem jest fakt, e Microsoft nie ogranicza uprawnień kontrolki po zainstalowaniu
      jej w lokalnym komputerze. To jedna z kluczowych ró nic pomiędzy ActiveX a Javą. Java
      korzysta z metody zwanej piaskownicą (sandbox). Umieszczenie apletu Javy w piaskow-
      nicy gwarantuje, e aplikacja funkcjonuje we własnym, chronionym obszarze pamięci,
      który jest odizolowany od innych rzeczy (systemu plików czy innych aplikacji). Nakła-
      da to powa ne ograniczenia na mo liwości kontrolki. Z kolei kontrolki ActiveX mają
      takie same prawa jak u ytkownik, który je uruchamia po instalacji. Microsoft nie jest
      w stanie zagwarantować, e z kontrolki korzysta jej autor ani te e jest wykorzystywana
      zgodnie z przeznaczeniem — na witrynie lub stronach, na potrzeby których powstała.
      Microsoft nie gwarantuje równie , e właściciel witryny lub ktokolwiek inny nie zmie-
      nił zawartości strony po tym, jak zainstalowano kontrolkę. To wykorzystanie tych sła-
      bych punktów stanowi największe niebezpieczeństwo związane z kontrolkami ActiveX.

      Na przykład Scriptlet.Typelib jest kontrolką ActiveX firmy Microsoft, którą projektanci
      stosują do generacji bibliotek czcionek dla komponentów typu Windows Script Compo-
      nent (WSC). Jedna z funkcji tej kontrolki pozwala na tworzenie i modyfikację plików
      w komputerze lokalnym. Oczywiście sprawia to, e kontrolka ta powinna być chroniona
      przed niepowołanymi programami. Zgodnie z centrum koordynacyjnym CERT (CERT/CC)
Rozdział 9.   Tworzenie bezpiecznych sieciowych kontrolek ActiveX         261


          kontrolka ta została błędnie oznakowana jako bezpieczna ze względu na skrypty i dołączona
          do pakietów Internet Explorer 4.0 i 5.0. W efekcie haker mógłby napisać fragment zło-
          śliwego kodu odwołującego się i uruchamiającego tę kontrolkę bez wiedzy u ytkownika.
          Dwa dobrze znane wirusy wykorzystują tę lukę. Są to: kak oraz BubbleBoy. Obydwa są
          roznoszone przez listy elektroniczne HTML, a modyfikują Rejestr systemu i inne pliki
          systemowe. Microsoft w 1999 r. wprowadził poprawkę uodparniającą na te wirusy.

          Poniewa Scriptlet.Typelib oznaczony jest jako bezpieczny ze względu na skrypty, do-
          myślne ustawienia programów Internet Explorer, Outlook oraz Outlook Express pozwa-
          lają na u ycie kontrolki bez zgłaszania alarmów bezpieczeństwa. Lukę tę wykorzystuje
          wirus kak, który w katalogu startowym Windows usiłuje umieścić plik aplikacji HTML
          (HTA). Umieszczony tam kak oczekuje na kolejne uruchomienie systemu bądź rejestro-
          wanie u ytkownika. Gdy to nastąpi, wirus budzi się i mo e wyrządzać szkody — wyko-
          nuje serię zapisów i modyfikacji ró nych plików. W wyniku tego w komputerze pojawia
          się nowy plik z podpisem, który zawiera wirus i jest dołączany do ka dej wychodzącej
          wiadomości (rysunek 9.1). Dzięki temu kak mo e się rozprzestrzeniać.

Rysunek 9.1.
Okno opcji
programu Microsoft
Outlook Express




          Główne uderzenie następuje na skutek sprawdzenia dnia miesiąca i bie ącej godziny.
          Jeśli jest to godzina 600 po południu lub później, pierwszego dnia miesiąca, kak wyświetla
          okno z komunikatem Not Today (Nie dzisiaj, rysunek 9.2). Gdy okno to zostaje zamknięte,
          kak wywołuje funkcję Win32 API powodującą zamknięcie systemu Windows. Poniewa
          kod ten znajduje się w pliku HTA, który jest uruchamiany przy ka dym rozruchu i reje-
          strowaniu, ponowne włączenie zara onego komputera po godzinie 1800 pierwszego dnia
          miesiąca kończy się wyświetleniem komunikatu Not Today, a następnie zamknięciem
          systemu. Biorąc jeszcze pod uwagę zdolność do tworzenia i modyfikacji plików oraz
          wpisów rejestru, a tak e mo liwość wywoływania funkcji API, widać, jak ta kontrolka
          mo e być niebezpieczna.
262        Hack Proofing Your Web Applications. Edycja polska


Rysunek 9.2.
Okno dialogowe
aplikacji HTML




Unikanie typowych luk bezpieczeństwa w kontrolkach ActiveX
           Jedna z najpowszechniejszych luk bezpieczeństwa spowodowanych przez technologię
           ActiveX ma związek z postrzeganiem (lub jego brakiem) przez programistę mo liwości
           kontrolki. Ka dy programista zatrudniony w przedsiębiorstwie czy firmie konsultingowej,
           który pisze kontrolkę na potrzeby legalnej działalności, chce, by kontrolka była jak naj-
           łatwiejsza w u yciu. Bierze pod uwagę docelowe zastosowanie kontrolki i jeśli wydaje
           się bez zarzutu, to oznacza ją jako „bezpieczną ze względu na skrypty”. Z drugiej strony
           bez oznaczenia kontrolki jako bezpiecznej, u ytkownik jest zasypywany ostrze eniami
           o potencjalnym zagro eniu związanym z u yciem kontrolki, która nie jest podpisana i nie
           jest oznaczona jako bezpieczna. W zale ności od ustawień opcji bezpieczeństwa w prze-
           glądarce u ytkownik mo e w ogóle nie móc uruchomić kontrolki (rysunek 9.3). Po ozna-
           czeniu jako bezpiecznej, inne aplikacje i kontrolki mają mo liwość uruchomienia jej bez
           pytania o zgodę u ytkownika. Oczywiście taka sytuacja mo e być niebezpieczna. Dobrym
           przykładem potencjalnych efektów działania technologii ActiveX jest niesławna kontrolka
           Windows Exploder. Była to mała, zgrabna kontrolka, stworzona przez Freda McLaina
           (www.halcyon.com/mclain/ActiveX), która miała demonstrować mo liwości „niebezpiecz-
           nej” technologii. Jedyne, co robiła ta kontrolka, to zamknięcie i wyłączenie zara onego
           systemu. Teraz nie wydaje się to zbyt groźne, a nie był to efekt pomyłki, ale wywołuje
           chwilę zastanowienia. Kontrolki ActiveX wymagają ostro ności. Przed wprowadzeniem
           jej na rynek programista musi wiedzieć, do czego zdolna jest kontrolka.

Rysunek 9.3.
Alarm Microsoft
Internet Explorera




           Kolejnym problemem wynikającym z nieostro ności programisty jest wykorzystanie
           kontrolki niezgodnie z przeznaczeniem, przy wykorzystaniu przywilejów u ytkownika.
           Fakt, e twórca tworzy kontrolkę z myślą o konkretnym przeznaczeniu, nie oznacza, e
           kto inny nie jest w stanie znaleźć innego zastosowania. Zawsze znajdzie się ktoś, kto
           zechce spo ytkować twórczość programisty. Wystarczy przypomnieć sobie przykład
           kontrolki Scriptlet.Typelib z poprzedniego podrozdziału. Programiści Microsoftu wie-
           dzieli, e kontrolka prawidłowo tworzy biblioteki czcionek dla WSC, ale nie wzięli pod
           uwagę, e ktoś mógłby skorzystać z ich kontrolki do utworzenia aplikacji HTML i mo-
           dyfikacji wpisów rejestru.

           Innym problemem związanym z kontrolkami ActiveX jest publikacja wersji, które nie
           zostały dokładnie przetestowane i zawierają błędy. Wśród błędów często spotykanych
           w programach w C++ jest błąd przepełnienia buforów. Ma on miejsce podczas kopio-
           wania ciągu znaków do tablicy o stałej długości, gdy ciąg jest dłu szy ni tablica. Wy-
           nikiem jest przepełnienie buforów i potencjalnie upadek aplikacji. W przypadku tego
Rozdział 9.   Tworzenie bezpiecznych sieciowych kontrolek ActiveX     263


           rodzaju błędów najistotniejsze jest to, e efekty są nieprzewidywalne. Przy odrobinie
           szczęścia, pojawi się jedynie szczegółowy komunikat o błędzie (rysunek 9.4). Przepeł-
           nienie bufora mo e spowodować wyświetlenie na ekranie niepo ądanych znaków albo
           spowodować błąd przeglądarki i zawiesić system. Problem ten przez lata był plagą śro-
           dowiska systemów UNIX (Linux), ale ostatnio coraz bardziej zauwa a się go na plat-
           formie Windows. W serwisie Microsoft TechNet (www.microsoft.com/technet/security)
           wśród najpopularniejszych zagadnień związanych z bezpieczeństwem w technologiach
           IT miesięcznie mo na znaleźć co najmniej jedną wzmiankę na temat tego błędu. Nie jest
           to wyłącznie problem Microsoftu — dotyczy niemal ka dego producenta tworzącego
           kod dla platformy Windows. Dla ilustracji zasięgu tego problemu warto zajrzeć do nie-
           dawnego raportu na witrynie secureroot (www.secureroot.com), w którym Neal Krawetz
           donosi, i udało mu się zlokalizować błąd przepełnienia buforów w module Shockwave
           Flash. Raport informuje: „Na witrynie firmy Macromedia mo na się dowiedzieć, e moduł
           zainstalowany jest ju w 90% wszystkich przeglądarek internetowych. Poniewa prze-
           pełnienie buforów pozwala na uruchomienie dowolnego kodu, to mo e dotyczyć 90%
           podłączonych do sieci systemów”. To przera ająca wizja! Mimo e ten błąd jest bardzo
           rozpowszechniony, rozwiązanie jest proste — nale y więcej czasu poświęcić na dokładne
           testowanie i sprawdzenie, czy kod zapewnia kontrolę brzegów dla wszystkich wartości
           dopuszczających dane o zmiennej długości.

Rysunek 9.4.
Okno dialogowe
szczegółowego
komunikatu o błędzie
w Windows




           Kolejne niebezpieczeństwo wią e się ze stosowaniem starych, wycofanych ju wersji
           kontrolek ActiveX. Niektóre z nich zawierają błędy, inne nie. Niektóre mogły zostać
           zupełnie przebudowane lub z jakiegoś powodu zastąpione. W momencie gdy ktoś posiada
           kopię kontrolki, nie ma gwarancji, e u yje obecnej wersji, zwłaszcza je eli mo e być
           ona w jakiś sposób nadu yta. W przypadku instalacji kontrolki, której podpis jest prze-
           starzały, wyświetlany jest komunikat o błędzie, jednak wiele osób i tak ją zainstaluje,
           poniewa wcią widnieje na niej podpis jej twórcy (rysunek 9.5). Niestety, nie ma spo-
           sobu, by zapobiec wykorzystaniu przez kogoś kontrolki, mimo e twórca ją wycofał.
           Gdy programista opatruje podpisem i publikuje w internecie kontrolkę, która mo e być
           potencjalnie niebezpieczna, kontrolka ta staje się łakomym kąskiem dla ka dego hakera.
264        Hack Proofing Your Web Applications. Edycja polska


Rysunek 9.5.
Ostrze enie
o przestarzałym
podpisie kontrolki




           W tym przypadku najlepszą obroną jest skuteczny atak. Dokładne testowanie kontrolki
           przed opublikowaniem oszczędzi później kłopotów.

           U ytkownik równie powinien „atakować”. Nigdy nie nale y instalować kontrolki, która
           jest niepodpisana lub okres wa ności podpisu dobiegł końca. Skutki mogą być potencjalnie
           groźne. Po instalacji kontrolki ActiveX mają takie same prawa jak u ytkownik i mogą
           wykonywać takie same operacje. Mogą wszystko, od wysłania poufnych danych w za-
           łączniku listu elektronicznego do wywołania polecenia powłoki, takiego jak np. Delete.
           Przed podjęciem decyzji o instalacji niepodpisanej lub przestarzałej kontrolki nale y zdać
           sobie sprawę z ryzyka.

Usuwanie skutków luk w technologii ActiveX
           Słabość technologii ActiveX jest powa nym problemem dla administratorów sieci, u yt-
           kowników i programistów. Dla niektórych skutki niepoprawnego stosowania i zarządza-
           nia kontrolkami ActiveX mogą być ogromne. Inni nigdy nie martwili się tym problemem.
           Istnieje mo liwość ustanowienia polityki, która zabroni stosowania wszelkich kontrolek
           i skryptów, ale trzeba tego dokonać na poziomie ka dej maszyny z osobna, a to zabiera
           du o czasu, zarówno jeśli chodzi o implementację, jak i zarządzanie. Występuje to zwłasz-
           cza w środowiskach, w których u ytkownicy sami chętnie zmieniają parametry przegląda-
           rek. Do innych opcji mo na zaliczyć ograniczenie dostępu kontrolek ActiveX, na przykład
           za pośrednictwem barier firewall i oprogramowania antywirusowego, jednak efektywność
           takich rozwiązań ogranicza się do przypadków oczywistych i znanych. Mimo e pełna
           ochrona przed zagro eniami spowodowanymi przez słabości technologii ActiveX jest
           trudna — jeśli nie niemo liwa — to u ytkownicy na ka dym poziomie mogą podjąć kroki
           prowadzące do minimalizacji niebezpieczeństw.

Ochrona na poziomie sieciowym
           Administrator sieci powinien rozpocząć dostrajanie ró nych parametrów bezpieczeństwa
           od sieciowego systemu operacyjnego:
                Do nało enia ograniczeń na kontrolki mogą słu yć takie mechanizmy, jak strefy
                bezpieczeństwa czy protokół Secure Sockets Layer (SSL).
Rozdział 9.    Tworzenie bezpiecznych sieciowych kontrolek ActiveX              265


               W rejestrze systemowym dostępny jest wpis %QFG$CUG5GCTEJ2CVJ określający
               miejsce, z którego system będzie próbował pobierać kontrolki ActiveX.
               Istnieje narzędzie o nazwie Internet Explorer Administration Kit (IEAK), które
               mo e słu yć do definiowania i dynamicznego zarządzania kontrolkami ActiveX.

           Mimo e część tych opcji są bardzo przydatna, nale y równie rozwa yć instalację bariery
           firewall. Niektóre zapory mają mo liwość monitorowania i wybiórczego filtrowania wy-
           wołań oraz transferów kontrolek ActiveX. Inne nie oferują takich opcji, dlatego powinno
           się zbadać mo liwości wybieranej bariery firewall.

Ochrona na poziomie klienta
           Jedną z najistotniejszych rzeczy, które mo e wykonać u ytkownik, jest ciągła aktuali-
           zacja systemu operacyjnego wraz z jego komponentami i oprogramowaniem antywiru-
           sowym. Nale y regularnie pobierać bie ące poprawki i bazy danych wirusów. Kolejną
           opcją dla u ytkowników, a tak e administratorów, są parametry stref bezpieczeństwa
           w programach Internet Explorer, Outlook oraz Outlook Express. Są to cenne narzędzia
           bezpieczeństwa i warto skorzystać z ich potencjału.

           Ustawianie stref bezpieczeństwa

           Prawidłowo ustawione strefy bezpieczeństwa mogą obni yć poziom ryzyka związany
           z kontrolkami ActiveX. Istnieje pięć stref bezpieczeństwa: Lokalny intranet, Zaufane
           witryny, Witryny z ograniczeniami, Internet oraz Mój komputer. Ostatnia strefa, Mój kom-
           puter, jest dostępna jedynie za pośrednictwem IEAK, nie z poziomu przeglądarki. W przy-
           padku braku dostępu do pakietu IEAK, mo na zmodyfikować parametry stref bezpie-
           czeństwa poprzez klucz rejestru o nazwie =*-';A%744'06A75'4>5QHVYCTG>/KETQUQHV>
           9KPFQYU>%WTTGPV8GTUKQP>+PVGTPGV 5GVVKPIU><QPGU?. Odpowiednie wartości tego klucza
           znajdują się w tabeli 9.1.

Tabela 9.1. Parametry stref bezpieczeństwa dla programów Internet Explorer, Outlook oraz Outlook Express
 Wartość klucza rejestru              Strefa bezpieczeństwa
 0                                    Mój komputer
 1                                    Lokalny intranet
 2                                    Zaufane witryny
 3                                    Internet
 4                                    Witryny z ograniczeniami

           Modyfikacja ustawień stref bezpieczeństwa w programie Internet Explorer 5.x mo e się
           odbyć według następującego schematu:
            1. Z menu Narzędzia wybiera się Opcje internetowe. Pojawia się okno dialogowe
               Opcji internetowych.
            2. Nale y wybrać zakładkę Zabezpieczenia. Pojawia się panel opcji zabezpieczeń.
266   Hack Proofing Your Web Applications. Edycja polska


       3. Trzeba wybrać strefę do modyfikacji. Dla większości u ytkowników będzie
          to strefa Internet, ale w zale ności od okoliczności być mo e konieczne będzie
          powtórzenie tych kroków dla strefy Lokalny intranet.
       4. Nale y kliknąć przycisk Poziom niestandardowy. Pojawi się panel Ustawienia
          zabezpieczeń.
       5. Zmiana jednego lub więcej spośród znajdujących się poni ej ustawień pozwoli
          osiągnąć wymagany poziom bezpieczeństwa:
             w opcjach Formanty ActiveX i dodatki plug-in nale y wybrać włącz,
             wyłącz lub monituj.
             w opcjach Wykonywanie skryptów formantów ActiveX oznaczonych jako
             bezpieczne nale y wybrać wyłącz lub monituj.
       6. Kliknięcie OK zatwierdzi te zmiany. Pojawi się okno dialogowe potwierdzające
          dokonanie zmian.
       7. Nale y kliknąć Tak.

       8. Przycisk OK zamknie okno Opcji internetowych i zapisze ustawienia.

      U ytkownik powinien równie wyrobić w sobie nawyk ostro ności w momencie, gdy
      otrzymuje monit dotyczący pobrania lub uruchomienia kontrolki ActiveX. Trzeba rów-
      nie wyłączyć kontrolki ActiveX oraz inne języki skryptowe w aplikacjach pocztowych,
      co często bywa pomijane. Wiele osób uwa a, e skoro nie u ywają aplikacji pocztowych
      Microsoftu, to są bezpieczni. Ale jeśli aplikacja pocztowa potrafi wyświetlać strony HTML,
      to zagro enie ze strony Eudory jest równie prawdopodobne, jak ze strony programu
      Outlook Express. W przeglądarkach Netscape na dzień dzisiejszy niebezpieczeństwo
      związane z ActiveX jest niewielkie. Aby uruchomić kontrolkę ActiveX w przeglądarce
      Netscape wcześniejszej ni wersja 6. trzeba zainstalować moduł rozszerzający. Najbardziej
      znanym modułem obsługującym ActiveX w przeglądarkach Netscape jest ScriptActive
      firmy NCompass (NCompass nie oferuje ju jednak tego modułu ani nie obsługuje prze-
      glądarki Netscape). Nie istnieje standardowy moduł dla Netscape 6 z jądrem Gecko. Uru-
      chomionych jest jednak kilka projektów mających na celu stworzenie nowych modułów
      lub bezpośredniej obsługi technologii ActiveX przez Netscape.

      Na programiście spoczywa największa odpowiedzialność. Stanowi on pierwszą linię obrony
      przed słabościami modelu ActiveX. Trzeba znać narzędzia dostępne w danej chwili, które
      pozwolą podnieść poziom bezpieczeństwa i zawsze nale y brać pod uwagę ryzyko zwią-
      zane z tworzeniem kodu przenośnego. Powinno się stosować do dobrych reguł programo-
      wania i zachować szczególną ostro ność, by uniknąć powszechnych problemów i pomy-
      łek otwierających drogę do nadu yć. Przede wszystkim wa na jest dobra ocena i rozsądek
      oraz testowanie, testowanie, testowanie… Po podpisaniu i opublikowaniu kontrolki staje
      się ona celem — ka dy mo e jej u yć. Dlatego trzeba mieć pewność, e stworzona kon-
      trolka ActiveX jest tak bezpieczna jak to tylko mo liwe.

      Hakerzy z reguły wykorzystują pomysłowe sposoby, by skłonić u ytkownika do kliknięcia
      pozornie bezpiecznego odnośnika lub otwarcia listu opatrzonego tytułem, np. „W odpo-
      wiedzi na pański komentarz”.
Rozdział 9.   Tworzenie bezpiecznych sieciowych kontrolek ActiveX         267



Metodologia tworzenia
bezpiecznych kontrolek ActiveX
     Jak pisać bezpieczne kontrolki ActiveX? Có , jak zawsze, pierwszy krok wymaga trafnej
     oceny i zdrowego rozsądku. Nale y się upewnić, e działanie kontrolki i jej mo liwości
     są dokładnie poznane. Dobre reguły in ynierii programowania oraz techniki projektowe
     równie mogą być pomocne:
         Trzeba dokładnie udokumentować kontrolkę. To da administratorom
         i u ytkownikom podstawę do prawidłowej oceny potencjalnego ryzyka
         związanego z kontrolką.
         Kontrolka powinna zawierać jak najmniejszą funkcjonalność — konieczną
         do spełnienia swojego zadania. Ka da dodatkowa funkcja a prosi się o nadu ycie.
         Nale y zwrócić szczególną uwagę na powszechne pomyłki, jak przepełnienie
         buforów czy błędy poprawności danych wejściowych.
         Istotne są metody zabezpieczania kontrolek ActiveX za pomocą
         odpowiednich parametrów bezpieczeństwa obiektu.


Parametry bezpieczeństwa obiektu
     Zagadnienia bezpieczeństwa obiektów mo na podzielić na dwie grupy: bezpieczeństwo
     ze względu na inicjalizację oraz bezpieczeństwo ze względu na skrypty. Według definicji
     Microsoftu bezpieczny ze względu na inicjalizację oznacza, e kontrolka mo e pobierać
     dowolne argumenty, zaś bezpieczny ze względu na skrypty — ka de zastosowanie wła-
     ściwości, metod i zdarzeń kontrolki jest bezpieczne. Pamiętając o tym, nale y dokładnie
     testować kontrolki i upewnić się, e nie wykonują one potencjalnie niebezpiecznych zadań.
     Przykładami czynności uwa anych za niebezpieczne są tworzenie i usuwanie plików,
     udostępnianie haseł, podgląd prywatnych informacji o u ytkowniku czy wysyłanie za-
     pytań SQL. Mimo e Lista zagadnień bezpieczeństwa Kontrolek ActiveX Microsoftu mo e
     wydawać się subiektywna, właściwa ocena i rozsądek powinny pomóc w zakwalifikowaniu
     operacji. Jeśli kontrolka wykonuje jakąkolwiek operację spośród wymienionych poni ej,
     nie powinna być oznaczona jako bezpieczna:
         Dostęp do informacji o komputerze lokalnym lub u ytkowniku.
         Udostępnianie prywatnych informacji w komputerze lokalnym bądź w sieci.
         Modyfikacja lub usuwanie informacji z komputera lokalnego bądź sieci.
         Błędy kontrolki potencjalnie prowadzące do zakończenia działania przeglądarki.
         Nadmierne zu ycie czasu i zasobów, takich jak pamięć.
         Wykonywanie potencjalnie destrukcyjnych wywołań systemowych (włącznie
         z uruchamianiem plików).
         Podstępne wykorzystanie kontrolki i powodowanie nieprzewidzianych wyników.
268       Hack Proofing Your Web Applications. Edycja polska



Dobre narzędzia
 Programista, który zamierza opatrzyć kontrolkę ActiveX podpisem, potrzebuje odpowiednich na-
 rzędzi — certyfikatu, ale by go zastosować potrzebny będzie pakiet ActiveX SDK (ActiveX Software
 Development Kit) Microsoftu. ActiveX SDK jest zestawem narzędzi koniecznych do podpisywania
 i testowania plików CAB. Głównymi komponentami tego pakietu są: makecert.exe, cert2spc.exe,
 signcode.exe oraz checktrust.exe. Narzędzia te wchodzą również w skład wprowadzanego dopiero
 pakietu Microsoft.NET Framework.
      Narzędzie tworzenia certyfikatów (makecert.exe) generuje certyfikat X.509, który może
      służyć jedynie do testowania. Program ten tworzy także publiczny i prywatny klucz
      na potrzeby podpisów cyfrowych.
      Narzędzie testowe certyfikatów producentów oprogramowania (Cert2spc.exe) tworzy
      certyfikat typu Software Publisher’s Certificate (SPC) z jednego lub większej liczby
      certyfikatów X.509. Należy pamiętać, że program ten służy jedynie do testów.
      Narzędzie podpisywania plików (signcode.exe) służy do podpisywania przenośnego pliku
      wykonywanego (portable executable, PE) i nadawania mu żądanych uprawnień, co pozwala
      twórcom na szczegółową kontrolę ograniczeń nałożonych na ich komponenty. Podpisem
      można opatrzyć indywidualny komponent lub cały pakiet. Program signcode uruchomiony
      bez żadnych parametrów włączy kreatora podpisów cyfrowych, który poprowadzi przez cały
      proces.
      Narzędzie weryfikacji certyfikatów (chktrust.exe) sprawdza ważność pliku opatrzonego
      podpisem Authenticode. Jeśli odpowiednie wartości się zgadzają, chktrust uznaje certyfikat
      za zweryfikowany.
 Opisane narzędzia przyspieszą podpisywanie i dystrybucję kontrolek ActiveX.




Bezpieczne kontrolki ActiveX
          Komu zaufać, a raczej, kto zaufa mnie? Takie pytanie powinien sobie zadać ka dy twórca,
          który publikuje kontrolki ActiveX. Niezale nie od tego, czy kontrolka znajdzie zasto-
          sowanie w internecie czy w korporacyjnej sieci lokalnej, powinna być łatwa w instalacji
          i informować u ytkowników, e jest godna zaufania. Metoda pozwalająca zdobyć to
          zaufanie nazywa się podpisywaniem kontrolek.

Podpisywanie kontrolek
          Do podpisania kontrolki konieczny jest cyfrowy certyfikat lub identyfikator (rysunek 9.6)
          z Organu certyfikującego. Dwoma przewodnimi organami certyfikującymi kontrolki
          ActiveX w USA są VeriSign (www.verisign.com) oraz Thawte (www.thawte.com). Oby-
          dwie firmy oferują ró ne wersje certyfikatów — w zale ności od platformy, na której
          działa projekt. Na przykład istnieją ró ne certyfikaty dla technologii Microsoft Authen-
          ticode, Netscape Object, Microsoft Office 2000 oraz VBA, Marimba, Macromedia Shoc-
          kwave, Apple i innych. W chwili obecnej roczny koszt cyfrowego identyfikatora typu
          Code Signing Digital ID wynosi 400 USD. W przypadku Thawte koszt ich pakietu Develo-
          per Certificate wynosi 200 USD, zaś co roku obowiązuje opłata odnawiająca w wyso-
          kości 100 USD. W przeciwieństwie do VeriSign, Thawte proponuje teraz uniwersalny
          certyfikat, słu ący do podpisywania kodu na wszystkich platformach z wyjątkiem Javy.
Rozdział 9.   Tworzenie bezpiecznych sieciowych kontrolek ActiveX           269


Rysunek 9.6.
Ostrze enie
zawierające
identyfikator
podpisu kodu




          Firma twierdzi, e pakiet Java 2 Plugin Developer Certificates wcią nie współpracuje
          z pozostałymi platformami, w związku z czym dla Javy trzeba wykupić osobny certyfikat.
          Jeśli jednak w grę wchodzi podpisywanie apletów Javy dla Navigatora (JVM) 1.1.x, wy-
          starczy certyfikat uniwersalny.

          Jedną z opcji proponowanych przez VeriSign jest dostęp do serwera stempli czasowych.
          Poniewa certyfikat jest wa ny jedynie przez rok, to po ka dym odnowieniu certyfikatu
          nale y ponownie podpisać kod. Nie jest to jednak prawdą, jeśli podpis w kodzie zawiera
          stempel czasowy. Oferta darmowego serwera stempli czasowych VeriSign zmniejsza pracę
          związaną z dbaniem o stary kod. Jest tylko jeden wyjątek — w chwili obecnej Netscape
          nie obsługuje stempli czasowych, więc kod dla Netscape musi być podpisywany co roku.

          Obydwa organy certyfikujące proponują taki sam rodzaj produktu, z których ka dy ma
          zalety, jak Cadillac i Chevrolet — obydwa są dobrymi produktami. Jeden jest tańszy, drugi
          zawiera więcej udogodnień, ale obydwa pozwolą osiągnąć cel. Europejscy twórcy mogą
          współpracować z europejskimi organami certyfikującymi. Najpopularniejszymi orga-
          nami certyfikującymi w Europie są GlobalSign (www.globalsign.net) oraz TrustWise
          (www.trustwise.com).

          Co zrobić z posiadanym ju cyfrowym certyfikatem? Có , poniewa niniejszy rozdział
          opisuje kontrolki ActiveX, uwaga zostanie skupiona na podpisywaniu kodu dla platformy
          Microsoftu oraz na Microsoft Authenticode.

            Mimo że Thawte i VeriSign funkcjonują jak dwie niezależne firmy i wciąż prowadzą dwie
            oddzielne linie produktów, Thawte zostało wykupione przez VeriSign, Inc. w grudniu
            1999 r.


Jak stosować Microsoft Authenticode
          Co to jest i do czego słu y Microsoft Authenticode? Authenticode to metoda zdobycia
          zaufania klientów. Posiadając cyfrowy certyfikat, kod mo na opatrzyć podpisem. Bez niego
          u ytkownik otrzymałby komunikat o błędzie informujący, e niemo liwe jest ustalenie
270       Hack Proofing Your Web Applications. Edycja polska


          twórcy oprogramowania (rysunek 9.7). Gdy kod posiada podpis, wyświetlane są: informa-
          cje o kontrolce, to samość i kontakt do twórcy, organ certyfikujący oraz opcjonalnie czas
          i data podpisania kontrolki. Gwarantuje to u ytkownikowi, e kontrolka została udostęp-
          niona przez zaufanego producenta oraz e nie była modyfikowana od momentu publikacji.

Rysunek 9.7.
Ostrze enie
Authenticode




          Jak stosować Microsoft Authenticode? Implementacja technologii Authenticode polega
          na podpisaniu kodu. Sam proces podpisywania jest bardzo prosty. Ukończona (i w miarę
          potrzeby umieszczona w pliku CAB) kontrolka jest gotowa do podpisu, do czego konieczne
          będzie narzędzie signcode Microsoftu. Nale y wykonać następujące czynności:
           1. Po uruchomieniu pliku signcode.exe, pojawia się Kreator podpisów cyfrowych
               (rysunek 9.8).

Rysunek 9.8.
Kreator podpisów
cyfrowych




           2. Nale y wybrać podpisywany plik. Mo e to być dowolny plik wykonywany
               (.exe, .ocx lub .dll). Istnieje równie mo liwość podpisania plików CAB,
               plików katalogów (CAT) oraz plików CTL.
Rozdział 9.   Tworzenie bezpiecznych sieciowych kontrolek ActiveX           271


       3. Po wybraniu pliku mo na zdecydować pomiędzy opcją Typical (typowa) oraz
          Custom (niestandardowa). W przypadku korzystania z cyfrowego identyfikatora
          (otrzymanego od organu autoryzującego) wybiera się opcję Custom.
       4. Następnie nale y wybrać plik certyfikatu (.cer, .crt lub .cps).
       5. W kolejnym kroku trzeba podać plik zawierający klucz prywatny (PVK).
          W tym momencie u ytkownik jest proszony o wpisanie hasła. Jeśli hasło
          zaginęło, trzeba wystąpić o wydanie nowego certyfikatu. Poniewa jest to dość
          popularny problem, ponowne wystawienie certyfikatu przez obydwa organy
          autoryzujące jest darmowe.
       6. Nale y wybrać algorytm mieszający, który zostanie u yty do stworzenia podpisu.
          U ytkownik będzie miał w miarę potrzeby mo liwość dołączenia dodatkowych
          certyfikatów.
       7. Kolejnym krokiem jest opis danych (bardzo istotne). Są to informacje opisujące
          kontrolkę, które będą wyświetlane w momencie, gdy u ytkownik instaluje
          kontrolkę.
       8. Następnie pora na stempel czasowy konieczny do utrzymania kontrolki w stanie
          aktywnym po wygaśnięciu certyfikatu. Posiadacze certyfikatu VeriSign mogą
          korzystać z firmowego serwera stempli czasowych, w przeciwnym razie stempel
          będzie musiał pochodzić z innego źródła.
       9. Na koniec u ytkownik mo e zobaczyć wszystkie ustawienia. Teraz wystarczy
          kliknąć przycisk Zakończ, ponownie wprowadzić hasło certyfikatu i to wszystko
          — kontrolka ActiveX została podpisana!

      Dla tych, którzy nie przepadają za kreatorami, signcode.exe mo e być równie urucho-
      miony z wiersza poleceń. Wystarczy jedynie podać odpowiednie parametry, a efekty będą
      takie same. eby nie wyprzedzać, omówimy jeszcze jedno zagadnienie. Przed podpisa-
      niem kodu trzeba wiedzieć, jak oznakować kontrolkę.

Znakowanie kontrolek
      Istnieją dwie metody pozwalające na oznakowanie kontrolki jako bezpiecznej: ustawie-
      nia bezpieczeństwa kreatora pakietów i wersji dystrybucyjnych (Package and Deployment
      Wizard) w środowisku programistycznym lub implementacja interfejsu IObjectSafety.
      Najpierw zostanie omówiona łatwiejsza metoda.

Ustawienia bezpieczeństwa
      Do tworzenia pakietów w postaci plików CAB wystarczy kreator wersji dystrybucyjnych
      (Package and Deployment Wizard). Aby oznaczyć kontrolkę ActiveX jako „bezpieczną
      ze względu na skrypty” czy „bezpieczną ze względu na inicjalizację”, nale y wybrać
      opcję Yes w rozwijanej liście obok nazwy kontrolki na ekranie Safety Settings kreatora
      (rysunek 9.9). Oznakowanie kontrolki jako bezpiecznej pozwoli u ytkownikom upewnić
      się, e kontrolka nie wykona w systemie operacji niebezpiecznych. Po wybraniu odpo-
      wiednich parametrów bezpieczeństwa klika się przycisk Dalej, a kreator zadba o resztę.
      Plik CAB będzie gotowy do instalacji, zaś kontrolka zostanie oznakowana zgodnie z wy-
      branymi ustawieniami.
272        Hack Proofing Your Web Applications. Edycja polska


Rysunek 9.9.
Ekran ustawień
bezpieczeństwa
kreatora wersji
dystrybucyjnych




IObjectSafety
           Drugą metodą oznakowania kontrolki jako bezpiecznej jest implementacja w kontrolce
           metody IObjectSafety. Jest ona interfejsem komponentu dostępnym z poziomu Microsoft
           Internet Explorera 4.0 i późniejszych. Zapewnia metody słu ące do pobierania i ustawiania
           opcji bezpieczeństwa aplikacji dla systemu Windows. Jest to bardzo prosty interfejs, który
           posiada jedynie dwie metody:
                  )GV+PVGTHCEG5CHGV[1RVKQPU
                  5GV+PVGTHCEG5CHGV[1RVKQPU

           Nazwy nie pozostawiają wątpliwości co do działania tych metod. )GV+PVGTHCEG5CHGV[
           1RVKQPU pobiera opcje bezpieczeństwa obsługiwane przez obiekt, jak równie bie ące
           ustawienia opcji bezpieczeństwa obiektu. 5GV+PVGTHCEG5CHGV[1RVKQPU pozwala ozna-
           kować obiekt jako bezpieczny ze względu na inicjalizację i na skrypty.

           W językach Visual Basic 5 i późniejszych najlepszym sposobem jest zastosowanie po-
           lecenia +ORNGOGPVU (listing 9.1). Interfejs IObjectSafety pozwala kontrolce na zwrócenie
           aplikacji wywołującej metodę (zwanej tak e obiektem kontenerowym — Container Object)
           odpowiedzi, czy jest bezpieczna, czy nie. Główną zaletą interfejsu IObjectSafety jest mo -
           liwość implementacji jednej wersji kontrolki, która zachowuje się bezpiecznie w pewnych
           okolicznościach i niebezpiecznie w innych. Kontrolka mo e programowo zmieniać tryby
           bezpieczeństwa, tak by dostosowywać się do sytuacji. W przeciwieństwie do innych
           metod oznakowywania kontrolek, sposób ten nie zale y od wpisów rejestru systemowego.
           Z punktu widzenia bezpieczeństwa, najistotniejszym powodem stosowania interfejsu
           IObjectSafety jest fakt, e nikt nie mo e „odpakować” kontrolki i oznaczyć jej jako bez-
           pieczną, podczas gdy taką nie jest.

Listing 9.1. Implementacja interfejsu IObjectSafety w języku Visual Basic

             1RVKQP 'ZRNKEKV
             +ORNGOGPVU +1DLGEV5CHGV[
Rozdział 9.   Tworzenie bezpiecznych sieciowych kontrolek ActiveX          273


  +1DLGEV5CHGV[A)GV+PVGTHCEG5CHGV[1RVKQPU 
2TKXCVG 5WD +1DLGEV5CHGV[A)GV+PVGTHCEG5CHGV[1RVKQPU
$[8CN TKKF #U .QPI A
      RFY5WRRQTVGF1RVKQPU #U .QPI RFY'PCDNGF1RVKQPU #U .QPI
    KO 4E          #U .QPI
    KO T%NU+F      #U W)7+
    KO ++         #U 5VTKPI
    KO D++
      #U $[VG

    RFY5WRRQTVGF1RVKQPU  +06'4(#%'5#('A(14A7064756'A%#..'4 1T A
        +06'4(#%'5#('A(14A7064756'A#6#

  7UVCY K YTQE QDUNWIKYCPG RTG QDKGMV QRELG DGRKGEGPUVYC

    +H 
TKKF   6JGP
      5RTCYF YUMCPKM FQ KFGPV[HKMCVQTC KPVGTHGLUW

        %QR[/GOQT[ T%NU+F $[8CN TKKF .GP
T%NU+F
          CRKU IWKF KPVGTHGLUW FQ UVTWMVWT[

        D++  5VTKPI 
/#:A)7+.'0 
          7VYQT VCDNKEG DCLVQY

        4E  5VTKPI(TQO)7+
T%NU+F 8CT2VT
D++
 /#:A)7+.'0
          2QDKGT ENUKF G UVTWMVWT[ IWKF

        4E  +P5VT
 D++ XD0WNN%JCT  
          5RTCYF E[ PC MQPEW VGMUVW PKG OC RWUV[EJ PCMQY

        ++  .GHV 
7%CUG
D++ 4E
          1DGVPKL RWUVG PCMK K COKGP PC YKGNMKG NKVGT[ FNC RQTQYPCPKC

        5GNGEV %CUG ++
        %CUG ++A+KURCVEJ   CFCPG QRELG DGRKGEGPUVYC
            RFY'PCDNGF1RVKQPU  ++H
OAH5CHG(QT5ETKRVKPI A
                +06'4(#%'5#('A(14A7064756'A%#..'4 
            'ZKV 5WD
        %CUG ++A+2GTUKUV5VQTCIG ++A+2GTUKUV5VTGCO + +2GTUKUV2TQRGTV[$CI
            RFY'PCDNGF1RVKQPU  ++H
OAH5CHG(QT+PKVKCNKKPI A
                +06'4(#%'5#('A(14A7064756'A#6# 
            'ZKV 5WD
        %CUG 'NUG
            'TT4CKUG 'A01+06'4(#%'   $.#  QRELC PKGQDUNWIKYCPC
            'ZKV 5WD
        'PF 5GNGEV
    'PF +H
'PF 5WD
 

  +1DLGEV5CHGV[A5GV+PVGTHCEG5CHGV[1RVKQPU 
2TKXCVG 5WD +1DLGEV5CHGV[A5GV+PVGTHCEG5CHGV[1RVKQPU
$[8CN TKKF #U .QPI $[8CN A
      FY1RVKQPU5GV/CUM #U .QPI $[8CN FY'PCDNGF1RVKQPU #U .QPI
    KO 4E          #U .QPI
    KO T%NUF      #U W)7+
    KO ++         #U 5VTKPI
    KO D++
      #U $[VG

    +H 
TKKF   6JGP
      5RTCYF YUMCPKM FQ KFGPV[HKMCVQTC KPVGTHGLUW
274   Hack Proofing Your Web Applications. Edycja polska


               %QR[/GOQT[ T%NU+F $[8CN TKKF .GP
T%NU+F
                 CRKU IWKF KPVGTHGLUW FQ UVTWMVWT[

               D++  5VTKPI 
/#:A)7+.'0 
                 7VYQT VCDNKEG DCLVQY

               4E  5VTKPI(TQO)7+
T%NU+F 8CT2VT
D++
 /#:A)7+.'0
                 2QDKGT ENUKF G UVTWMVWT[ IWKF

               4E  P5VT
 D++ XD0WNN%JCT  
                 5RTCYF E[ PC MQPEW VGMUVW PKG OC RWUV[EJ PCMQY

               ++  .GHV 
7%CUG
D++ 4E
                 1DGVPKL RWUVG PCMK K COKGP PC YKGNMKG NKVGT[ FNC RQTQYPCPKC

               5GNGEV %CUG ++
               %CUG ++A+KURCVEJ
                   +H 

FY'PCDNGF1RVKQPU #PF FY1RVKQPU5GV/CUM  +06'4(#%'5#(' (14 7064756' A
                          %#..'4 6JGP
                       'TT4CKUG 'A(#+.    DNCF PKGQDUNWIKYCPG
                       'ZKV 5WD
                   'PF +H

                   +H 0QV OAH5CHG(QT5ETKRVKPI 6JGP 'TT4CKUG 'A(#+.
                     %[ VGP QDKGMV LGUV DGRKGEP[ G YINGFW PC UMT[RV[!
                   'ZKV 5WD
               %CUG ++A+2GTUKUV5VQTCIG ++A+2GTUKUV5VTGCO ++A+2GTUKUV2TQRGTV[$CI
                   +H 

FY'PCDNGF1RVKQPU #PF FY1RVKQPU5GV/CUM  A
                          +06'4(#%'5#('A(14A7064756'A#6# 6JGP
                       'TT4CKUG 'A(#+.    DNCF PKGQDUNWIKYCPG
                       'ZKV 5WD
                   'PF +H
                   +H 0QV OAH5CHG(QT+PKVKCNKKPI 6JGP 'TT4CKUG 'A(#+.
                     %[ VGP QDKGMV LGUV DGRKGEP[ G YINGFW PC KPKELCNKCELG!
                   'ZKV 5WD
               %CUG 'NUG
                     CFCP[ KPVGTHGLU LGUV PKGPCP[
                   'TT4CKUG 'A01+06'4(#%'    DNCF PKGQDUNWIKYCPG
                   'ZKV 5WD
               'PF 5GNGEV
           'PF +H
       'PF 5WD
        

         (WPEVKQP5CHG6Q5ETKRV 
       2WDNKE (WPEVKQP (WPEVKQP5CHG6Q5ETKRV
 #U $QQNGCP
           (WPEVKQP5CHG6Q5ETKRV  6TWG
       'PF (WPEVKQP
        

         (WPEVKQP0165CHG6Q5ETKRV 
       2WDNKE (WPEVKQP (WPEVKQP0165CHG6Q5ETKRV
 #U $QQNGCP
           (WPEVKQP0165CHG6Q5ETKRV  6TWG
       'PF (WPEVKQP
Rozdział 9.   Tworzenie bezpiecznych sieciowych kontrolek ActiveX            275


Oznaczanie kontrolek w rejestrze systemowym
          Ostatnią opisywaną metodą oznaczania kontrolki jako bezpiecznej jest zastosowanie
          rejestru systemowego. Mimo e na początku niniejszego rozdziału napisano, i istnieją
          tylko dwa sposoby oznakowania kontrolki, niniejsza — trzecia jest tylko rozszerzeniem
          pierwszej z opisanych metod.

          Oznakowanie kontrolki przez kreatora wersji dystrybucyjnych w istocie polega na mo-
          dyfikacji wpisów w rejestrze systemowym. Nale y zrozumieć, e pociąga to za sobą
          pewne koszty. Przede wszystkim kontrolka, która jest oznakowana w ten sposób, przy
          ka dej inicjalizacji musi odwoływać się do Rejestru. To zajmuje czas, zaś gdy w grę
          wchodzi wyświetlanie zawartości strony WWW, szybkość jest istotnym czynnikiem.
          Kolejnym problemem związanym z tego rodzaju oznakowywaniem jest fakt, e nie ist-
          nieje rozwiązanie pośrednie. Kontrolka jest albo bezpieczna, albo nie. Nie mo na napisać
          kontrolki, której parametry bezpieczeństwa zale ą od wpisów w rejestrze i która mo e
          uchodzić za bezpieczną i jednocześnie niebezpieczną. Trzeba byłoby dostarczać obie
          wersje — bezpieczną w ka dych warunkach i niebezpieczną.

          Dla u ytkowników, którzy nie mogą się doczekać uruchomienia programu regedit.exe
          i oglądania wszystkiego w rejestrze systemowym, zostaną zaprezentowane odpowiednie
          czynności. Jedyne, co trzeba zrobić, to utworzyć następujące klucze w polu CLSID kon-
          trolki ActiveX, w sekcji Implemented Categories (rysunek 9.10).

Rysunek 9.10.
Edytor rejestru
Windows




                  Aby oznaczyć kontrolkę jako bezpieczną ze względu na skrypty, nale y u yć
                  wartości klucza: %((###%%.
                  Aby oznaczyć kontrolkę jako bezpieczną ze względu na inicjalizację, trzeba u yć
                  wartości klucza: %((###%%.

          To wszystko, choć pamiętajmy, e kontrolka oznaczona jako bezpieczna nie wymaga
          pozwolenia u ytkownika na uruchomienie. Wa na jest zatem ostro ność.
276   Hack Proofing Your Web Applications. Edycja polska



Podsumowanie
      Jak się okazuje, z dystrybucją kontrolek ActiveX wią e się wiele problemów bezpieczeń-
      stwa. Wszystkie wynikają z podejścia firmy Microsoft do tych zagadnień. Nadając kon-
      trolkom ActiveX takie same mo liwości i prawo dostępu jak u ytkownikowi, Microsoft
      stworzył potę ne narzędzie tworzenia kodu przenośnego. Jednak wraz z mo liwościami
      wzrasta te odpowiedzialność, a większość tej odpowiedzialności ponosi programista.
      To on musi ocenić mo liwości kontrolki ju w fazie projektowania. Nale y unikać po-
      wszechnych pomyłek, takich jak błędne oznaczenie kontrolki jako bezpiecznej czy wpro-
      wadzenie wersji z błędami.

      Poza projektantami tak e administratorzy systemowi i u ytkownicy powinni się przy-
      czynić do ochrony swoich sieci i komputerów osobistych. Administratorzy powinni ko-
      rzystać ze wszystkich narzędzi dostarczanych z systemami operacyjnymi i rozwa yć za-
      stosowanie jakiegoś rodzaju bariery firewall. Administratorzy i u ytkownicy mają równie
      dostęp do opcji bezpieczeństwa wbudowanych w programy Internet Explorer, Outlook
      oraz Outlook Express. Powinni dbać o ustawienia w swoich programach oraz uaktualniać
      oprogramowanie na swoich komputerach.

      Projektanci powinni zapoznać się z dostępnymi narzędziami, które pozwolą opracowywać
      bezpieczniejsze kontrolki. Cyfrowe certyfikaty połączone z technologią typu Microsoft
      Authenticode pozwolą osiągnąć ten cel. Podczas pisania kontrolek nale y zdawać sobie
      sprawę z ró nych metod oznaczania ich jako bezpieczne oraz znać kryteria kwalifikujące
      kontrolkę jako bezpieczną lub nie. Zalecaną metodą implementacji tego zadania jest
      oczywiście interfejs IObjectSafety, jednak obydwie metody spełniają swoje zadanie. Jeśli
      kontrolka jest całkowicie bezpieczna i nie jest w stanie wyrządzić adnej szkody w ma-
      cierzystym systemie, powinny wystarczyć ustawienia rejestru. Jeśli jednak istnieje szansa,
      by kontrolka mogła być u yta w jakimś niewłaściwym celu, naprawdę warto poświęcić
      dodatkowy czas na implementację interfejsu IObjectSafety. Trzeba pamiętać, e nieza-
      le nie od sposobu potraktowania przez projektanta bezpieczeństwa w technologii ActiveX,
      to on mo e stanowić ostatnią linię obrony. Dlatego powinno się być tak dokładnym jak
      to tylko mo liwe i nigdy nie przeceniać potencjału kontrolki.



Skrót rozwiązań
      Zagrożenia związane z technologią ActiveX
          Umieszczenie apletu Javy w piaskownicy daje pewność, e aplikacja działa
          we własnej, chronionej przestrzeni adresowej, odizolowanej od takich rzeczy,
          jak system plików czy inne aplikacje. Z kolei kontrolki ActiveX mają takie
          same prawa jak u ytkownik, który je uruchamia po instalacji. Microsoft nie jest
          w stanie zagwarantować, e to autor kontrolki będzie jej u ywał, tak samo
          nie ma pewności, e kontrolka zostanie u yta zgodnie z przeznaczeniem
          — na witrynie lub stronach, dla których powstała. Ponadto nie ma pewności,
           e właściciel strony czy ktokolwiek inny nie zmodyfikował jej zawartości
          po umieszczeniu na niej kontrolki.
Rozdział 9.   Tworzenie bezpiecznych sieciowych kontrolek ActiveX             277


   Po oznakowaniu kontrolki jako bezpiecznej inne aplikacje i kontrolki mają
   mo liwość uruchamiania jej bez pytania u ytkownika o zgodę. Fakt, e programista
   stworzył kontrolkę z myślą o konkretnym zastosowaniu nie znaczy, e ktoś inny
   nie znajdzie dla niej innego zastosowania.
   Powszechnym problemem związanym z kontrolkami ActiveX jest udostępnianie
   wersji, które nie zostały dokładnie przetestowane i zawierają błędy w rodzaju
   przepełnienia buforów. Warto poświęcić dodatkowy czas na dokładne testy,
   które dadzą pewność, e kod implementuje prawidłową kontrolę ograniczeń
   wobec wszystkich wartości, których długość mo e być zmienna.
   Do nakładania restrykcji na kontrolki mogą słu yć mechanizmy stref
   bezpieczeństwa (Security Zones) oraz protokoły SSL.
   Zmienna %QFG$CUG5GCTEJ2CVJ w rejestrze systemowym określa miejsca,
   które system bada w poszukiwaniu kontrolek ActiveX.
   Pakiet IEAK mo e słu yć do definiowania i dynamicznego zarządzania
   kontrolkami ActiveX.

Metodologia tworzenia bezpiecznych kontrolek ActiveX
   Nale y dokładnie dokumentować kontrolki. Projektowane kontrolki powinny
   równie oferować minimalną funkcjonalność, konieczną do zrealizowania zadania.
   Jeśli kontrolka wykonuje jakąkolwiek operację spośród wymienionych poni ej,
   nie powinna być oznaczona jako bezpieczna:
     Dostęp do informacji o lokalnym komputerze lub u ytkowniku.
     Udostępnianie prywatnych informacji w komputerze lokalnym bądź w sieci.
     Modyfikacja lub usuwanie informacji z komputera lokalnego bądź sieci.
     Błędy kontrolki potencjalnie prowadzące do zakończenia działania przeglądarki.
     Nadmierne zu ycie czasu i zasobów, takich jak pamięć.
     Wykonywanie potencjalnie destrukcyjnych wywołań systemowych
     (włącznie z uruchamianiem plików).
     Podstępne wykorzystanie kontrolki i powodowanie nieprzewidzianych efektów.
   Pakiet ActiveX SDK Microsoftu jest zestawem narzędzi, które są konieczne
   do podpisywania i testowania plików CAB. Jego głównymi komponentami
   są programy: makecert.exe, cert2spc.exe, signcode.exe oraz checktrust.exe.
   Narzędzia te wchodzą równie w skład wchodzącego na rynek pakietu
   Microsoft.NET Framework.

Bezpieczne kontrolki ActiveX
   Do podpisania kontrolki jest konieczny cyfrowy certyfikat lub identyfikator
   wystawiony przez organ autoryzujący. Dwoma najwa niejszymi amerykańskimi
   organami autoryzującymi kontrolki ActiveX są VeriSign (www.verisign.com)
   oraz Thawte (www.thawte.com).
278   Hack Proofing Your Web Applications. Edycja polska


          Oferta darmowych usług związanych ze stemplami czasowymi firmy VeriSign
          pozwoli zaoszczędzić trochę pracy przy dbaniu o starszy kod. VeriSign pozwala
          korzystać ze swojego serwera stempli czasowych tak e klientom firmy Thawte.
          Istnieją dwie metody pozwalające na oznakowanie kontrolki jako bezpiecznej:
          ustawienia bezpieczeństwa kreatora pakietów i wersji dystrybucyjnych
          (Package and Deployment Wizard) w środowisku programistycznym
          lub implementacja interfejsu IObjectSafety.
          Główną zaletą interfejsu IObjectSafety jest mo liwość implementacji jednej
          wersji kontrolki, która zachowuje się bezpiecznie w pewnych okolicznościach
          i niebezpiecznie w innych. Kontrolka mo e programowo zmieniać tryby
          bezpieczeństwa, tak by dostosowywać się do sytuacji. W przeciwieństwie
          do innych metod oznakowywania kontrolek, sposób ten nie zale y od wpisów
          rejestru systemowego.



Pytania i odpowiedzi
      Odpowiedzi na poni sze pytania, których udzielili autorzy niniejszej ksią ki, mają za
      zadanie sprawdzenie stopnia opanowania zagadnień przedstawionych w niniejszym
      rozdziale oraz pomóc w zastosowaniu tych koncepcji w codziennej praktyce.
      P: Czy, chcąc podpisać kontrolkę, muszę dokonać zakupu certyfikatu
         cyfrowego?
      O: Jeśli firma planuje udostępniać kontrolkę na zewnątrz, trzeba będzie zakupić
         od wybranego organu certyfikującego wa ny certyfikat. Jednak podczas testów,
         mo na skorzystać z narzędzi /CMGEGTVGZG i %GTV52%GZG, które stworzą
         certyfikat testowy. Narzędzia te wchodzą w skład pakietu ActiveX SDK.
      P: Moja firma posiada certyfikat serwera. Czy mo na go wykorzystać
         do podpisania kodu?
      O: Nie, nie da się podpisać kodu za pomocą certyfikatu serwera. Certyfikat serwera
         spełnia inną funkcję ni certyfikat słu ący do podpisywania kodu. Certyfikat
         serwera pozwala jedynie na bezpieczną transmisję danych pomiędzy serwerem
         a klientem. Certyfikat do podpisywania kodu lub identyfikator potwierdza,
          e oprogramowanie nie zostało zmodyfikowane od momentu sporządzenia podpisu.
      P: Czy istotna jest stosowana wersja Internet Explorera?
      O: Tak. Microsoft, wraz z kolejnymi wersjami IE (począwszy od wersji 3.0)
         publikował ró ne wersje narzędzi związanych z podpisami kontrolek. Nale y
         się upewnić, e wykorzystywana wersja przeglądarki jest właściwa.
      P: Czy mój nowy certyfikat mo e słu yć do podpisywania kontrolek
         na potrzeby IE 3.x?
      O: Nie. Wersja mechanizmu Authenticode wchodząca w skład przeglądarek IE 3.x
         nie obsługuje nowych certyfikatów.
Rozdział 9.   Tworzenie bezpiecznych sieciowych kontrolek ActiveX        279


P: Jakie są zalety opatrywania kontrolek stemplem czasowym?
O: Stempel czasowy daje pewność, e kod będzie wa ny po zakończeniu okresu
   wa ności certyfikatu. W przypadku stosowania certyfikatu VeriSign usługa
   stempli czasowych jest bezpłatna i zapewnia, e w przypadku ostemplowania
   kontrolki stemplem czasowym nie trzeba martwić się o ponowne podpisywanie
   kodu w momencie, gdy okres wa ności certyfikatu dobiega końca. Dzięki
   stemplom czasowym u ytkownik będzie w stanie stwierdzić ró nicę pomiędzy
   kodem podpisanym za pomocą przeterminowanego certyfikatu, a kodem
   podpisanym certyfikatem, który był wa ny w momencie sporządzania podpisu.
P: Posiadam certyfikat Thawte i chcę opatrzyć kod stemplem czasowym.
   Czy Thawte zapewnia stemple czasowe?
O: Nie, jednak VeriSign pozwala klientom Thawte na korzystanie ze swojego
   serwera stempli czasowych. Aby dostać się do serwera, nale y w wierszu
   poleceń lub w polu serwera stempli czasowych kreatora podpisów cyfrowych
   wprowadzić po opcji -t adres http://timestamp.verisign.com/scripts/timstamp.dll.
P: Czy mogę skorzystać z Authenticode dla apletów Javy?
O: Tak, wystarczy aplety Javy umieścić w plikach CAB, a odwoływać się do nich
   z poziomu HTML-a za pomocą znacznika %#$$#5' (zamiast znacznika #4%*+8'
   stosowanego w przeglądarkach Netscape).
P: W jaki sposób przetestować podpis po jego sporządzeniu?
O: Korzysta się z narzędzia chktrust.exe wchodzącego w skład pakietu Microsoft
   ActiveX SDK. Pozwoli to zweryfikować wa ność podpisu przed rozpoczęciem
   dystrybucji kontrolki.

Weitere ähnliche Inhalte

Was ist angesagt?

Znajdź błąd. Sztuka analizowania kodu
Znajdź błąd. Sztuka analizowania koduZnajdź błąd. Sztuka analizowania kodu
Znajdź błąd. Sztuka analizowania koduWydawnictwo Helion
 
Tajemnice internetu, hackingu i bezpieczeństwa
Tajemnice internetu, hackingu i bezpieczeństwaTajemnice internetu, hackingu i bezpieczeństwa
Tajemnice internetu, hackingu i bezpieczeństwaWydawnictwo Helion
 
Master Thesis - Comparative analysis of programming Environments based on Rub...
Master Thesis - Comparative analysis of programming Environments based on Rub...Master Thesis - Comparative analysis of programming Environments based on Rub...
Master Thesis - Comparative analysis of programming Environments based on Rub...Adam Skołuda
 
Język C++. Gotowe rozwiązania dla programistów
Język C++. Gotowe rozwiązania dla programistówJęzyk C++. Gotowe rozwiązania dla programistów
Język C++. Gotowe rozwiązania dla programistówWydawnictwo Helion
 
JavaScript dla każdego. Wydanie IV
JavaScript dla każdego. Wydanie IVJavaScript dla każdego. Wydanie IV
JavaScript dla każdego. Wydanie IVWydawnictwo Helion
 
Internet. Ilustrowany przewodnik
Internet. Ilustrowany przewodnikInternet. Ilustrowany przewodnik
Internet. Ilustrowany przewodnikWydawnictwo Helion
 
Apache. Zabezpieczenia aplikacji i serwerów WWW
Apache. Zabezpieczenia aplikacji i serwerów WWWApache. Zabezpieczenia aplikacji i serwerów WWW
Apache. Zabezpieczenia aplikacji i serwerów WWWWydawnictwo Helion
 
PHP i MySQL. Dynamiczne strony WWW. Szybki start. Wydanie II
PHP i MySQL. Dynamiczne strony WWW. Szybki start. Wydanie IIPHP i MySQL. Dynamiczne strony WWW. Szybki start. Wydanie II
PHP i MySQL. Dynamiczne strony WWW. Szybki start. Wydanie IIWydawnictwo Helion
 
To tylko awaria, czyli katastrofy i wpadki z pecetem
To tylko awaria, czyli katastrofy i wpadki z pecetemTo tylko awaria, czyli katastrofy i wpadki z pecetem
To tylko awaria, czyli katastrofy i wpadki z pecetemWydawnictwo Helion
 
Po prostu JavaScript i Ajax. Wydanie VI
Po prostu JavaScript i Ajax. Wydanie VIPo prostu JavaScript i Ajax. Wydanie VI
Po prostu JavaScript i Ajax. Wydanie VIWydawnictwo Helion
 
The Shellcoders Handbook. Edycja polska
The Shellcoders Handbook. Edycja polskaThe Shellcoders Handbook. Edycja polska
The Shellcoders Handbook. Edycja polskaWydawnictwo Helion
 
.Net. Najpilniej strzeżone tajemnice
.Net. Najpilniej strzeżone tajemnice.Net. Najpilniej strzeżone tajemnice
.Net. Najpilniej strzeżone tajemniceWydawnictwo Helion
 
Flash CS3 Professional PL. Techniki zaawansowane. Klatka po klatce
Flash CS3 Professional PL. Techniki zaawansowane. Klatka po klatceFlash CS3 Professional PL. Techniki zaawansowane. Klatka po klatce
Flash CS3 Professional PL. Techniki zaawansowane. Klatka po klatceWydawnictwo Helion
 
Wykrywanie włamań i aktywna ochrona danych
Wykrywanie włamań i aktywna ochrona danychWykrywanie włamań i aktywna ochrona danych
Wykrywanie włamań i aktywna ochrona danychWydawnictwo Helion
 
ActionScript. Przewodnik encyklopedyczny
ActionScript. Przewodnik encyklopedycznyActionScript. Przewodnik encyklopedyczny
ActionScript. Przewodnik encyklopedycznyWydawnictwo Helion
 
Po prostu PHP. Techniki zaawansowane
Po prostu PHP. Techniki zaawansowanePo prostu PHP. Techniki zaawansowane
Po prostu PHP. Techniki zaawansowaneWydawnictwo Helion
 
Asembler. Sztuka programowania
Asembler. Sztuka programowaniaAsembler. Sztuka programowania
Asembler. Sztuka programowaniaWydawnictwo Helion
 

Was ist angesagt? (20)

Znajdź błąd. Sztuka analizowania kodu
Znajdź błąd. Sztuka analizowania koduZnajdź błąd. Sztuka analizowania kodu
Znajdź błąd. Sztuka analizowania kodu
 
Tajemnice internetu, hackingu i bezpieczeństwa
Tajemnice internetu, hackingu i bezpieczeństwaTajemnice internetu, hackingu i bezpieczeństwa
Tajemnice internetu, hackingu i bezpieczeństwa
 
JavaScript dla każdego
JavaScript dla każdegoJavaScript dla każdego
JavaScript dla każdego
 
Master Thesis - Comparative analysis of programming Environments based on Rub...
Master Thesis - Comparative analysis of programming Environments based on Rub...Master Thesis - Comparative analysis of programming Environments based on Rub...
Master Thesis - Comparative analysis of programming Environments based on Rub...
 
Język C++. Gotowe rozwiązania dla programistów
Język C++. Gotowe rozwiązania dla programistówJęzyk C++. Gotowe rozwiązania dla programistów
Język C++. Gotowe rozwiązania dla programistów
 
JavaScript dla każdego. Wydanie IV
JavaScript dla każdego. Wydanie IVJavaScript dla każdego. Wydanie IV
JavaScript dla każdego. Wydanie IV
 
Internet. Ilustrowany przewodnik
Internet. Ilustrowany przewodnikInternet. Ilustrowany przewodnik
Internet. Ilustrowany przewodnik
 
Apache. Zabezpieczenia aplikacji i serwerów WWW
Apache. Zabezpieczenia aplikacji i serwerów WWWApache. Zabezpieczenia aplikacji i serwerów WWW
Apache. Zabezpieczenia aplikacji i serwerów WWW
 
PHP i MySQL. Dynamiczne strony WWW. Szybki start. Wydanie II
PHP i MySQL. Dynamiczne strony WWW. Szybki start. Wydanie IIPHP i MySQL. Dynamiczne strony WWW. Szybki start. Wydanie II
PHP i MySQL. Dynamiczne strony WWW. Szybki start. Wydanie II
 
To tylko awaria, czyli katastrofy i wpadki z pecetem
To tylko awaria, czyli katastrofy i wpadki z pecetemTo tylko awaria, czyli katastrofy i wpadki z pecetem
To tylko awaria, czyli katastrofy i wpadki z pecetem
 
Po prostu JavaScript i Ajax. Wydanie VI
Po prostu JavaScript i Ajax. Wydanie VIPo prostu JavaScript i Ajax. Wydanie VI
Po prostu JavaScript i Ajax. Wydanie VI
 
The Shellcoders Handbook. Edycja polska
The Shellcoders Handbook. Edycja polskaThe Shellcoders Handbook. Edycja polska
The Shellcoders Handbook. Edycja polska
 
.Net. Najpilniej strzeżone tajemnice
.Net. Najpilniej strzeżone tajemnice.Net. Najpilniej strzeżone tajemnice
.Net. Najpilniej strzeżone tajemnice
 
Flash CS3 Professional PL. Techniki zaawansowane. Klatka po klatce
Flash CS3 Professional PL. Techniki zaawansowane. Klatka po klatceFlash CS3 Professional PL. Techniki zaawansowane. Klatka po klatce
Flash CS3 Professional PL. Techniki zaawansowane. Klatka po klatce
 
Wykrywanie włamań i aktywna ochrona danych
Wykrywanie włamań i aktywna ochrona danychWykrywanie włamań i aktywna ochrona danych
Wykrywanie włamań i aktywna ochrona danych
 
ActionScript. Przewodnik encyklopedyczny
ActionScript. Przewodnik encyklopedycznyActionScript. Przewodnik encyklopedyczny
ActionScript. Przewodnik encyklopedyczny
 
Java 2. Podstawy
Java 2. PodstawyJava 2. Podstawy
Java 2. Podstawy
 
Java. Sztuka programowania
Java. Sztuka programowaniaJava. Sztuka programowania
Java. Sztuka programowania
 
Po prostu PHP. Techniki zaawansowane
Po prostu PHP. Techniki zaawansowanePo prostu PHP. Techniki zaawansowane
Po prostu PHP. Techniki zaawansowane
 
Asembler. Sztuka programowania
Asembler. Sztuka programowaniaAsembler. Sztuka programowania
Asembler. Sztuka programowania
 

Andere mochten auch

Sprawne państwo - ebook
Sprawne państwo - ebookSprawne państwo - ebook
Sprawne państwo - ebooke-booksweb.pl
 
Status prawny członka spółdzielni mieszkaniowej w spółdzielczych stosunkach l...
Status prawny członka spółdzielni mieszkaniowej w spółdzielczych stosunkach l...Status prawny członka spółdzielni mieszkaniowej w spółdzielczych stosunkach l...
Status prawny członka spółdzielni mieszkaniowej w spółdzielczych stosunkach l...e-booksweb.pl
 
Kodeks spółek handlowych. Przepisy akademickie - ebook
Kodeks spółek handlowych. Przepisy akademickie - ebookKodeks spółek handlowych. Przepisy akademickie - ebook
Kodeks spółek handlowych. Przepisy akademickie - ebooke-booksweb.pl
 
Kodeks pracy. Wydanie 18 - ebook
Kodeks pracy. Wydanie 18 - ebookKodeks pracy. Wydanie 18 - ebook
Kodeks pracy. Wydanie 18 - ebooke-booksweb.pl
 
Centrum Muzyki Augarten
Centrum Muzyki AugartenCentrum Muzyki Augarten
Centrum Muzyki AugartenTomek Janiec
 
Prospekt emisyjny LOTOS S.A.
Prospekt emisyjny LOTOS S.A.Prospekt emisyjny LOTOS S.A.
Prospekt emisyjny LOTOS S.A.Stockradar
 

Andere mochten auch (7)

Sprawne państwo - ebook
Sprawne państwo - ebookSprawne państwo - ebook
Sprawne państwo - ebook
 
Status prawny członka spółdzielni mieszkaniowej w spółdzielczych stosunkach l...
Status prawny członka spółdzielni mieszkaniowej w spółdzielczych stosunkach l...Status prawny członka spółdzielni mieszkaniowej w spółdzielczych stosunkach l...
Status prawny członka spółdzielni mieszkaniowej w spółdzielczych stosunkach l...
 
Kodeks spółek handlowych. Przepisy akademickie - ebook
Kodeks spółek handlowych. Przepisy akademickie - ebookKodeks spółek handlowych. Przepisy akademickie - ebook
Kodeks spółek handlowych. Przepisy akademickie - ebook
 
Kodeks pracy. Wydanie 18 - ebook
Kodeks pracy. Wydanie 18 - ebookKodeks pracy. Wydanie 18 - ebook
Kodeks pracy. Wydanie 18 - ebook
 
Centrum Muzyki Augarten
Centrum Muzyki AugartenCentrum Muzyki Augarten
Centrum Muzyki Augarten
 
Raport nt. współpracy ngo i biznesu
Raport nt. współpracy ngo i biznesuRaport nt. współpracy ngo i biznesu
Raport nt. współpracy ngo i biznesu
 
Prospekt emisyjny LOTOS S.A.
Prospekt emisyjny LOTOS S.A.Prospekt emisyjny LOTOS S.A.
Prospekt emisyjny LOTOS S.A.
 

Ähnlich wie Hack Proofing Your Web Applications. Edycja polska

Ajax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningAjax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningWydawnictwo Helion
 
Hack I.T. Testy bezpieczeństwa danych
Hack I.T. Testy bezpieczeństwa danychHack I.T. Testy bezpieczeństwa danych
Hack I.T. Testy bezpieczeństwa danychWydawnictwo Helion
 
JavaScript. Zaawansowane programowanie
JavaScript. Zaawansowane programowanieJavaScript. Zaawansowane programowanie
JavaScript. Zaawansowane programowanieWydawnictwo Helion
 
Vademecum hakera. Zabezpieczenia w Windows
Vademecum hakera. Zabezpieczenia w WindowsVademecum hakera. Zabezpieczenia w Windows
Vademecum hakera. Zabezpieczenia w WindowsWydawnictwo Helion
 
Kurs tworzenia stron internetowych
Kurs tworzenia stron internetowychKurs tworzenia stron internetowych
Kurs tworzenia stron internetowychWydawnictwo Helion
 
Czytanie kodu. Punkt widzenia twórców oprogramowania open source
Czytanie kodu. Punkt widzenia twórców oprogramowania open sourceCzytanie kodu. Punkt widzenia twórców oprogramowania open source
Czytanie kodu. Punkt widzenia twórców oprogramowania open sourceWydawnictwo Helion
 
Projektowanie serwisów WWW. Standardy sieciowe
Projektowanie serwisów WWW. Standardy siecioweProjektowanie serwisów WWW. Standardy sieciowe
Projektowanie serwisów WWW. Standardy siecioweWydawnictwo Helion
 
Hardware Hacking. Edycja polska
Hardware Hacking. Edycja polskaHardware Hacking. Edycja polska
Hardware Hacking. Edycja polskaWydawnictwo Helion
 
PHP. Praktyczne skrypty, które oszczędzą Twój czas
PHP. Praktyczne skrypty, które oszczędzą Twój czasPHP. Praktyczne skrypty, które oszczędzą Twój czas
PHP. Praktyczne skrypty, które oszczędzą Twój czasWydawnictwo Helion
 
Bezpieczeństwo w sieciach Windows
Bezpieczeństwo w sieciach WindowsBezpieczeństwo w sieciach Windows
Bezpieczeństwo w sieciach WindowsWydawnictwo Helion
 
100 sposobów na tworzenie robotów sieciowych
100 sposobów na tworzenie robotów sieciowych100 sposobów na tworzenie robotów sieciowych
100 sposobów na tworzenie robotów sieciowychWydawnictwo Helion
 

Ähnlich wie Hack Proofing Your Web Applications. Edycja polska (18)

Ajax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningAjax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny trening
 
ABC ochrony przed wirusami
ABC ochrony przed wirusamiABC ochrony przed wirusami
ABC ochrony przed wirusami
 
Cisza w sieci
Cisza w sieciCisza w sieci
Cisza w sieci
 
Hack I.T. Testy bezpieczeństwa danych
Hack I.T. Testy bezpieczeństwa danychHack I.T. Testy bezpieczeństwa danych
Hack I.T. Testy bezpieczeństwa danych
 
JavaScript. Projekty
JavaScript. ProjektyJavaScript. Projekty
JavaScript. Projekty
 
JavaScript. Zaawansowane programowanie
JavaScript. Zaawansowane programowanieJavaScript. Zaawansowane programowanie
JavaScript. Zaawansowane programowanie
 
Vademecum hakera. Zabezpieczenia w Windows
Vademecum hakera. Zabezpieczenia w WindowsVademecum hakera. Zabezpieczenia w Windows
Vademecum hakera. Zabezpieczenia w Windows
 
Kurs tworzenia stron internetowych
Kurs tworzenia stron internetowychKurs tworzenia stron internetowych
Kurs tworzenia stron internetowych
 
Czytanie kodu. Punkt widzenia twórców oprogramowania open source
Czytanie kodu. Punkt widzenia twórców oprogramowania open sourceCzytanie kodu. Punkt widzenia twórców oprogramowania open source
Czytanie kodu. Punkt widzenia twórców oprogramowania open source
 
Projektowanie serwisów WWW. Standardy sieciowe
Projektowanie serwisów WWW. Standardy siecioweProjektowanie serwisów WWW. Standardy sieciowe
Projektowanie serwisów WWW. Standardy sieciowe
 
Hardware Hacking. Edycja polska
Hardware Hacking. Edycja polskaHardware Hacking. Edycja polska
Hardware Hacking. Edycja polska
 
PHP. Praktyczne skrypty, które oszczędzą Twój czas
PHP. Praktyczne skrypty, które oszczędzą Twój czasPHP. Praktyczne skrypty, które oszczędzą Twój czas
PHP. Praktyczne skrypty, które oszczędzą Twój czas
 
Pajączek 5 NxG
Pajączek  5 NxGPajączek  5 NxG
Pajączek 5 NxG
 
Bezpieczny komputer w domu
Bezpieczny komputer w domuBezpieczny komputer w domu
Bezpieczny komputer w domu
 
Internet. Przewodnik
Internet. PrzewodnikInternet. Przewodnik
Internet. Przewodnik
 
Bezpieczeństwo w sieciach Windows
Bezpieczeństwo w sieciach WindowsBezpieczeństwo w sieciach Windows
Bezpieczeństwo w sieciach Windows
 
Visual C# .NET. Encyklopedia
Visual C# .NET. EncyklopediaVisual C# .NET. Encyklopedia
Visual C# .NET. Encyklopedia
 
100 sposobów na tworzenie robotów sieciowych
100 sposobów na tworzenie robotów sieciowych100 sposobów na tworzenie robotów sieciowych
100 sposobów na tworzenie robotów sieciowych
 

Mehr von Wydawnictwo Helion

Tworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyTworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyWydawnictwo Helion
 
Blog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikBlog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikWydawnictwo Helion
 
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktycznePozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczneWydawnictwo Helion
 
E-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesieE-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesieWydawnictwo Helion
 
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsMicrosoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsWydawnictwo Helion
 
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IICo potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IIWydawnictwo Helion
 
Makrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuMakrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuWydawnictwo Helion
 
Java. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIJava. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIWydawnictwo Helion
 
PowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykPowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykWydawnictwo Helion
 
Serwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaSerwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaWydawnictwo Helion
 
Serwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanieSerwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanieWydawnictwo Helion
 

Mehr von Wydawnictwo Helion (20)

Tworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyTworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. Projekty
 
Blog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikBlog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnik
 
Access w biurze i nie tylko
Access w biurze i nie tylkoAccess w biurze i nie tylko
Access w biurze i nie tylko
 
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktycznePozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
 
E-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesieE-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image&#39;u w biznesie
 
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsMicrosoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
 
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IICo potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
 
Makrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuMakrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółu
 
Windows PowerShell. Podstawy
Windows PowerShell. PodstawyWindows PowerShell. Podstawy
Windows PowerShell. Podstawy
 
Java. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIJava. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie II
 
JavaScript. Pierwsze starcie
JavaScript. Pierwsze starcieJavaScript. Pierwsze starcie
JavaScript. Pierwsze starcie
 
PowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykPowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktyk
 
Excel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktykExcel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktyk
 
Access 2007 PL. Seria praktyk
Access 2007 PL. Seria praktykAccess 2007 PL. Seria praktyk
Access 2007 PL. Seria praktyk
 
Word 2007 PL. Seria praktyk
Word 2007 PL. Seria praktykWord 2007 PL. Seria praktyk
Word 2007 PL. Seria praktyk
 
Serwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaSerwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacja
 
AutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PLAutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PL
 
Bazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcieBazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcie
 
Inventor. Pierwsze kroki
Inventor. Pierwsze krokiInventor. Pierwsze kroki
Inventor. Pierwsze kroki
 
Serwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanieSerwer SQL 2008. Administracja i programowanie
Serwer SQL 2008. Administracja i programowanie
 

Hack Proofing Your Web Applications. Edycja polska

  • 1. IDZ DO PRZYK£ADOWY ROZDZIA£ SPIS TRE CI Hack Proofing Your Web Applications. KATALOG KSI¥¯EK KATALOG ONLINE Edycja polska Autorzy: Jeff Forristal, Julie Traxler T³umaczenie: Miko³aj Barwicki ZAMÓW DRUKOWANY KATALOG ISBN: 83-7361-006-5 Tytu³ orygina³u: Hack Proofing Your Web Applications TWÓJ KOSZYK Format: B5, stron: 406 Przyk³ady na ftp: 22 kB DODAJ DO KOSZYKA Wyczerpuj¹cy przewodnik wprowadzaj¹cy w arkana tworzenia bezpiecznych aplikacji WWW. Twórca aplikacji WWW nie mo¿e sobie pozwoliæ na to, by jego dzie³a by³y CENNIK I INFORMACJE wra¿liwe na ataki hakerów. Zacznij wiêc my leæ jak haker, a luki w bezpieczeñstwie natychmiast siê ujawni¹. Dziêki ZAMÓW INFORMACJE tej ksi¹¿ce nauczysz siê analizowaæ metody stosowane do w³amañ i ataków na witryny O NOWO CIACH WWW. Bêdziesz móg³ nastêpnie wykorzystaæ tê wiedzê, by zapobiegaæ atakom. W ksi¹¿ce omówiono m.in.: ZAMÓW CENNIK • Najlepsze zabezpieczania aplikacji WWW • Zagadnienia bezpieczeñstwa w projektowaniu • Ostrze¿enia o niebezpieczeñstwie CZYTELNIA • Technologie XML, Java, ColdFusion oraz skrypty CGI. • Witryny po wiêcone hakerom FRAGMENTY KSI¥¯EK ONLINE • Narzêdzia i pu³apki • Piêæ faz w³amania • Rodzaje ataków hakerskich • Niezbêdne etapy dzia³ania przy ocenie ryzyka • Automatyczne narzêdzia skanuj¹ce Wydawnictwo Helion ul. Chopina 6 44-100 Gliwice tel. (32)230-98-63 e-mail: helion@helion.pl
  • 2. Spis treści Podziękowania ...........................................................................................................9 Współpracownicy .....................................................................................................10 Przedmowa...............................................................................................................13 Rozdział 1. Metodologia włamań..............................................................................15 Wprowadzenie .............................................................................................................. 15 Podstawowe terminy................................................................................................ 16 Krótka historia hackingu ................................................................................................ 17 Hacking sieci telefonicznych .................................................................................... 17 Hacking komputerowy............................................................................................. 18 Co motywuje hakera?.................................................................................................... 20 Hacking etyczny a hacking złośliwy.......................................................................... 20 Współpraca ze specjalistami ds. bezpieczeństwa ........................................................ 21 Współczesne rodzaje ataków.......................................................................................... 22 DoS (DDoS) ........................................................................................................... 22 Hacking wirusowy................................................................................................... 24 Kradzie ................................................................................................................. 29 Zagro enia bezpieczeństwa aplikacji WWW.................................................................... 32 Ukryta manipulacja.................................................................................................. 32 Zamiana parametrów ............................................................................................... 33 Zewnętrzne skrypty ................................................................................................. 33 Przepełnienie buforów ............................................................................................. 33 Zatrute cookies........................................................................................................ 34 Zapobieganie włamaniom poprzez przyjęcie postawy hakera ............................................ 34 Podsumowanie.............................................................................................................. 36 Skrót rozwiązań ............................................................................................................ 37 Pytania i odpowiedzi ..................................................................................................... 39 Rozdział 2. Jak nie zostać „maszynką do kodu”?......................................................41 Wprowadzenie .............................................................................................................. 41 Kim jest „maszynka do kodu”? ...................................................................................... 42 Postępując zgodnie z zasadami ................................................................................. 45 Twórcze kodowanie ...................................................................................................... 46 Zastanawiać się ....................................................................................................... 48 Bezpieczeństwo z punktu widzenia „maszynki do kodu” .................................................. 50 Programowanie w pró ni.......................................................................................... 51 Tworzenie sprawnych i bezpiecznych aplikacji sieciowych ............................................... 52 Przecie mój kod działa! .......................................................................................... 56 Podsumowanie.............................................................................................................. 61 Skrót rozwiązań ............................................................................................................ 62 Pytania i odpowiedzi ..................................................................................................... 63
  • 3. 4 Hack Proofing Your Web Applications. Edycja polska Rozdział 3. Ryzyko związane z kodem przenośnym....................................................65 Wprowadzenie .............................................................................................................. 65 Działanie ataków wykorzystujących kod przenośny ......................................................... 66 Ataki z wykorzystaniem przeglądarek ....................................................................... 66 Ataki z wykorzystaniem programów pocztowych ....................................................... 67 Złośliwe skrypty lub makra ...................................................................................... 68 Identyfikacja popularnych form kodu przenośnego........................................................... 68 Języki makropoleceń: Visual Basic for Applications (VBA) ........................................ 69 JavaScript ............................................................................................................... 74 VBScript ................................................................................................................ 77 Aplety w Javie ........................................................................................................ 79 Kontrolki ActiveX ................................................................................................... 82 Załączniki listów elektronicznych i pobrane pliki wykonywalne .................................. 86 Ochrona systemu przez atakami wykorzystującymi kod przenośny .................................... 89 Aplikacje bezpieczeństwa......................................................................................... 90 Narzędzia na stronach WWW................................................................................... 93 Podsumowanie.............................................................................................................. 93 Skrót rozwiązań ............................................................................................................ 95 Pytania i odpowiedzi ..................................................................................................... 95 Rozdział 4. Wrażliwe skrypty CGI.............................................................................97 Wprowadzenie .............................................................................................................. 97 Czym jest i co robi skrypt CGI? ..................................................................................... 98 Typowe zastosowania skryptów CGI ........................................................................ 99 Kiedy powinno się stosować CGI?.......................................................................... 103 Zagadnienia związane z instalacją skryptów CGI ..................................................... 104 Włamania umo liwione przez słabe skrypty CGI ........................................................... 105 Jak pisać bardziej szczelne skrypty CGI?................................................................. 106 Polecenia katalogów .............................................................................................. 108 Opakowania skryptów CGI .................................................................................... 109 Języki wykorzystywane do tworzenia skryptów CGI ...................................................... 112 Powłoka systemu Unix........................................................................................... 113 Perl ...................................................................................................................... 113 C (C++)................................................................................................................ 114 Visual Basic.......................................................................................................... 114 Korzyści ze stosowania skryptów CGI .......................................................................... 115 Zasady tworzenia bezpiecznych skryptów CGI .............................................................. 115 Składowanie skryptów CGI.................................................................................... 118 Podsumowanie............................................................................................................ 120 Skrót rozwiązań .......................................................................................................... 120 Pytania i odpowiedzi ................................................................................................... 123 Rozdział 5. Techniki i narzędzia włamań.................................................................125 Wprowadzenie ............................................................................................................ 125 Cele hakera................................................................................................................. 126 Omijanie alarmów ................................................................................................. 127 Zdobywanie dostępu.............................................................................................. 128 Zniszczenia, zniszczenia, zniszczenia ...................................................................... 130 Jak być lepszym od hakera..................................................................................... 131 Pięć etapów włamania ................................................................................................. 132 Tworzenie planu ataku........................................................................................... 132 Tworzenie planu przebiegu włamania...................................................................... 134 Wybranie punktu wejścia ....................................................................................... 135 Stały i szeroki dostęp ............................................................................................. 136 Atak ..................................................................................................................... 137
  • 4. Spis treści 5 Socjotechnika ............................................................................................................. 138 Informacje poufne ................................................................................................. 138 Celowo pozostawione tylne wejścia .............................................................................. 143 Wprowadzenie do kodu ukrytego hasła.................................................................... 143 Wykorzystanie słabych stron właściwych kodowi lub środowisku programowania ............ 145 Narzędzia wykorzystywane przez hakera ...................................................................... 145 Edytory szesnastkowe............................................................................................ 145 Programy uruchomieniowe..................................................................................... 147 Deasemblery ......................................................................................................... 148 Podsumowanie............................................................................................................ 150 Skrót rozwiązań .......................................................................................................... 150 Pytania i odpowiedzi ................................................................................................... 153 Rozdział 6. Kontrola kodu i odwrotna analiza..........................................................155 Wprowadzenie ............................................................................................................ 155 Jak efektywnie śledzić działanie programu .................................................................... 156 Monitorowanie i kontrola w wybranych językach programowania ................................... 158 Java ..................................................................................................................... 158 Java Server Pages.................................................................................................. 159 Active Server Pages............................................................................................... 159 Server Side Includes .............................................................................................. 159 Python ................................................................................................................. 159 Tool Command Language ...................................................................................... 160 Practical Extraction and Reporting Language ........................................................... 160 PHP: Hypertext Preprocessor ................................................................................. 160 C (C++)................................................................................................................ 160 ColdFusion ........................................................................................................... 161 Lokalizacja słabych punktów........................................................................................ 161 Pobieranie danych od u ytkownika ......................................................................... 161 Lokalizacja potencjalnych błędów przepełnienia buforów ......................................... 162 Weryfikacja wyświetlanych informacji.................................................................... 165 Kontrola operacji na systemie plików ...................................................................... 168 Uruchamianie zewnętrznego kodu i programów ....................................................... 170 Zapytania do baz danych SQL................................................................................ 172 Sieci i strumienie komunikacyjne............................................................................ 174 Praktyka..................................................................................................................... 175 Podsumowanie............................................................................................................ 176 Skrót rozwiązań .......................................................................................................... 176 Pytania i odpowiedzi ................................................................................................... 177 Rozdział 7. Bezpieczeństwo w języku Java .............................................................179 Wprowadzenie ............................................................................................................ 179 Architektura bezpieczeństwa Javy................................................................................. 180 Model bezpieczeństwa w języku Java...................................................................... 181 Piaskownica.......................................................................................................... 183 Podejście do problemów bezpieczeństwa w Javie........................................................... 187 Programy ładujące klasy ........................................................................................ 187 Weryfikator bajt-kodu............................................................................................ 190 Chronione domeny Javy......................................................................................... 194 Potencjalne luki bezpieczeństwa w Javie ....................................................................... 201 Ataki DoS (degradacji usług).................................................................................. 202 Konie trojańskie .................................................................................................... 204 Programowanie funkcjonalnych, ale bezpiecznych apletów w Javie ................................. 205 Skróty wiadomości ................................................................................................ 206 Podpisy cyfrowe ................................................................................................... 208
  • 5. 6 Hack Proofing Your Web Applications. Edycja polska Uwierzytelnianie ................................................................................................... 214 Ochrona zabezpieczeń za pomocą podpisywania plików JAR .................................... 220 Szyfrowanie.......................................................................................................... 223 Zalecenia Sun Microsystems odnośnie bezpieczeństwa w Javie ................................. 227 Podsumowanie............................................................................................................ 230 Skrót rozwiązań .......................................................................................................... 231 Pytania i odpowiedzi ................................................................................................... 232 Rozdział 8. Bezpieczeństwo w języku XML .............................................................235 Wprowadzenie ............................................................................................................ 235 Definicja języka XML ................................................................................................. 236 Struktura logiczna.................................................................................................. 237 Elementy .............................................................................................................. 237 Dokumenty XML, XSL i DTD ............................................................................... 240 Zastosowanie szablonów w języku XSL .................................................................. 240 Zastosowanie wzorów w języku XSL...................................................................... 241 DTD .................................................................................................................... 243 Wykorzystanie języka XML do tworzenia aplikacji WWW............................................. 245 Ryzyko związane z językiem XML............................................................................... 247 Problemy tajności.................................................................................................. 248 Bezpieczeństwo w języku XML ................................................................................... 249 Specyfikacja XML Encryption................................................................................ 250 Specyfikacja XML Digital Signatures...................................................................... 254 Podsumowanie............................................................................................................ 256 Skrót rozwiązań .......................................................................................................... 257 Pytania i odpowiedzi ................................................................................................... 258 Rozdział 9. Tworzenie bezpiecznych sieciowych kontrolek ActiveX..........................259 Wprowadzenie ............................................................................................................ 259 Zagro enia związane z technologią ActiveX .................................................................. 260 Unikanie typowych luk bezpieczeństwa w kontrolkach ActiveX ................................ 262 Usuwanie skutków luk w technologii ActiveX ......................................................... 264 Metodologia tworzenia bezpiecznych kontrolek ActiveX ................................................ 267 Parametry bezpieczeństwa obiektu .......................................................................... 267 Bezpieczne kontrolki ActiveX ...................................................................................... 268 Podpisywanie kontrolek ......................................................................................... 268 Znakowanie kontrolek............................................................................................ 271 Podsumowanie............................................................................................................ 276 Skrót rozwiązań .......................................................................................................... 276 Pytania i odpowiedzi ................................................................................................... 278 Rozdział 10. Bezpieczeństwo w ColdFusion..............................................................281 Wprowadzenie ............................................................................................................ 281 Jak działa ColdFusion? ................................................................................................ 282 Zalety szybkiego projektowania.............................................................................. 283 Zarys znacznikowego języka ColdFusion................................................................. 284 Zachowanie bezpieczeństwa w technologii ColdFusion .................................................. 286 Projektowanie z uwzględnieniem bezpieczeństwa..................................................... 288 Bezpieczne rozpowszechnianie ............................................................................... 297 Przetwarzanie w aplikacjach ColdFusion ....................................................................... 297 Sprawdzanie istnienia danych ................................................................................. 298 Kontrola typów danych.......................................................................................... 299 Szacowanie danych ............................................................................................... 301 Ryzyko związane z technologią ColdFusion .................................................................. 302 Zastosowanie programów obsługi błędów................................................................ 304
  • 6. Spis treści 7 Stosowanie śledzenia sesji............................................................................................ 308 Podsumowanie............................................................................................................ 309 Skrót rozwiązań .......................................................................................................... 310 Pytania i odpowiedzi ................................................................................................... 311 Rozdział 11. Projektowanie aplikacji spełniających wymogi bezpieczeństwa..............313 Wprowadzenie ............................................................................................................ 313 Zalety stosowania aplikacji spełniających wymogi bezpieczeństwa.................................. 314 Rodzaje zabezpieczeń stosowanych w aplikacjach.......................................................... 315 Podpisy elektroniczne ............................................................................................ 316 Pretty Good Privacy .............................................................................................. 317 Protokół S/MIME.................................................................................................. 319 Secure Sockets Layer ............................................................................................ 319 Certyfikaty cyfrowe............................................................................................... 323 Podstawowe informacje na temat PKI........................................................................... 325 Usługi certyfikujące............................................................................................... 327 Zastosowanie PKI do zabezpieczania aplikacji WWW.................................................... 328 Implementacja PKI w infrastrukturze WWW................................................................. 329 Microsoft Certificate Services................................................................................. 330 Netscape Certificate Server .................................................................................... 333 PKI dla Serwera Apache ........................................................................................ 339 PKI i Secure Software Toolkits............................................................................... 341 Testowanie zabezpieczeń ............................................................................................. 341 Podsumowanie............................................................................................................ 343 Skrót rozwiązań .......................................................................................................... 345 Pytania i odpowiedzi ................................................................................................... 347 Rozdział 12. Od początku do końca — praca z planem bezpieczeństwa.....................349 Wprowadzenie ............................................................................................................ 349 Analiza kodu .............................................................................................................. 350 Sprawdzanie kodu ................................................................................................. 351 Perspektywa współpracownika ............................................................................... 352 Świadomość słabych punktów kodu.............................................................................. 354 Testy, testy, testy .................................................................................................. 355 Rozsądek podczas kodowania ...................................................................................... 357 Planowanie ........................................................................................................... 357 Standardy kodowania............................................................................................. 358 Narzędzia ............................................................................................................. 359 Tworzenie planu bezpieczeństwa .................................................................................. 362 Planowanie bezpieczeństwa na poziomie sieci.......................................................... 364 Planowanie bezpieczeństwa na poziomie aplikacji.................................................... 364 Planowanie bezpieczeństwa na poziomie biura......................................................... 365 Proces bezpieczeństwa aplikacji WWW .................................................................. 365 Podsumowanie............................................................................................................ 367 Skrót rozwiązań .......................................................................................................... 368 Pytania i odpowiedzi ................................................................................................... 369 Dodatek A Skrót zagadnień omawianych w książce ...............................................371 Skorowidz ..............................................................................................................389
  • 7. Rozdział 9. Tworzenie bezpiecznych sieciowych kontrolek ActiveX Rozwiązania omawiane w niniejszym rozdziale: Zagro enia związane z technologią ActiveX. Metodologia tworzenia bezpiecznych kontrolek ActiveX. Bezpieczne kontrolki ActiveX. Podsumowanie. Skrót rozwiązań. Pytania i odpowiedzi. Wprowadzenie Kontrolki ActiveX są opracowaną przez Microsoft implementacją standardu Component Object Model (COM). Firma stworzyła technologię ActiveX w miejsce przestarzałego modelu Object Linking and Embedding (OLE), stosowanego we wcześniejszych wersjach systemu Windows. Do ulepszeń ActiveX względem modelu OLE nale y rozszerzalność modelu i mo liwość przetwarzania rozproszonego (DCOM), jak równie lepsza wydaj- ność w lokalnych aplikacjach. Kontrolki ActiveX z reguły są tworzone w Visual Basicu lub C++. Kontrolki ActiveX są w systemie Windows łatwo zauwa ane i dodają aplikacjom, zwłasz- cza WWW, wiele mo liwości interakcji. Dobrze komponują się w dokumenty HTML, dzięki czemu bez trudu mo na je przenosić pomiędzy systemami. Kontrolki ActiveX w aplikacjach mogą słu yć do wykonywania powtarzających się czynności lub do wy- woływania innych kontrolek, odpowiedzialnych za konkretne operacje. Po instalacji kontrolki ActiveX, jest ona uruchamiana automatycznie i nie musi być ponownie insta- lowana. Tak naprawdę kontrolka ActiveX mo e zostać pobrana z odległego serwera za pośrednictwem adresu URL, po czym uruchamiana bez konieczności powtórnego pobie- rania. Pozwala to na uruchamianie kontrolek ActiveX z poziomu stron WWW.
  • 8. 260 Hack Proofing Your Web Applications. Edycja polska Problemy bezpieczeństwa dotyczące kontrolek ActiveX są ściśle związane z właściwo- ściami technologii ActiveX. Kontrolki nie są uruchamiane w ograniczonej przestrzeni lub piaskownicy, jak ma to miejsce w przypadku apletów Javy, tak więc stanowią potencjal- nie większe zagro enie dla aplikacji. Ponadto kontrolki ActiveX są zdolne do wszelkich operacji, które mo e wykonać u ytkownik, to znaczy, e są w stanie dodawać i usuwać dane lub zmieniać właściwości obiektów. Wydaje się, i JavaScript oraz aplety w Javie zdominowały środowisko projektantów internetowych, ale wiele witryn i aplikacji wcią korzysta z kontrolek ActiveX. Wcią pojawiające się wiadomości o włamaniach na witryny internetowe świadczą o tym, e wielu programistów jeszcze nie opanowało sztuki zabezpieczania swoich kontrolek, a przecie ActiveX jest dość dobrze znaną technologią. Niniejszy rozdział ma za zadanie pomóc w identyfikacji i rozwiązywaniu niektórych problemów bezpieczeństwa wynikają- cych ze źle napisanych kontrolek ActiveX (spośród których wiele jest za darmo dostęp- nych w internecie). Obalone zostaną popularne, błędne twierdzenia dotyczące ActiveX, natomiast wprowadzone będą skuteczne zasady tworzenia bezpiecznych i funkcjonalnych kontrolek ActiveX. Zagrożenia związane z technologią ActiveX Podstawowe zagro enia związane z kontrolkami ActiveX wynikają ze sposobu traktowa- nia problemów bezpieczeństwa przez firmę Microsoft. Wdra ając technologię Authen- ticode, słu ącą do opatrywania kontrolki cyfrowym podpisem, Microsoft uznaje, e jest w stanie zagwarantować u ytkownikowi źródło pochodzenia kontrolki oraz fakt, e kontrolka nie została zmodyfikowana od momentu powstania. W większości przypadków jest to prawdą, jednak kilka rzeczy, których Microsoft nie robi, stanowi powa ne zagro- enie dla stacji roboczych i całych sieci. Pierwszym i najbardziej oczywistym niebezpie- czeństwem jest fakt, e Microsoft nie ogranicza uprawnień kontrolki po zainstalowaniu jej w lokalnym komputerze. To jedna z kluczowych ró nic pomiędzy ActiveX a Javą. Java korzysta z metody zwanej piaskownicą (sandbox). Umieszczenie apletu Javy w piaskow- nicy gwarantuje, e aplikacja funkcjonuje we własnym, chronionym obszarze pamięci, który jest odizolowany od innych rzeczy (systemu plików czy innych aplikacji). Nakła- da to powa ne ograniczenia na mo liwości kontrolki. Z kolei kontrolki ActiveX mają takie same prawa jak u ytkownik, który je uruchamia po instalacji. Microsoft nie jest w stanie zagwarantować, e z kontrolki korzysta jej autor ani te e jest wykorzystywana zgodnie z przeznaczeniem — na witrynie lub stronach, na potrzeby których powstała. Microsoft nie gwarantuje równie , e właściciel witryny lub ktokolwiek inny nie zmie- nił zawartości strony po tym, jak zainstalowano kontrolkę. To wykorzystanie tych sła- bych punktów stanowi największe niebezpieczeństwo związane z kontrolkami ActiveX. Na przykład Scriptlet.Typelib jest kontrolką ActiveX firmy Microsoft, którą projektanci stosują do generacji bibliotek czcionek dla komponentów typu Windows Script Compo- nent (WSC). Jedna z funkcji tej kontrolki pozwala na tworzenie i modyfikację plików w komputerze lokalnym. Oczywiście sprawia to, e kontrolka ta powinna być chroniona przed niepowołanymi programami. Zgodnie z centrum koordynacyjnym CERT (CERT/CC)
  • 9. Rozdział 9. Tworzenie bezpiecznych sieciowych kontrolek ActiveX 261 kontrolka ta została błędnie oznakowana jako bezpieczna ze względu na skrypty i dołączona do pakietów Internet Explorer 4.0 i 5.0. W efekcie haker mógłby napisać fragment zło- śliwego kodu odwołującego się i uruchamiającego tę kontrolkę bez wiedzy u ytkownika. Dwa dobrze znane wirusy wykorzystują tę lukę. Są to: kak oraz BubbleBoy. Obydwa są roznoszone przez listy elektroniczne HTML, a modyfikują Rejestr systemu i inne pliki systemowe. Microsoft w 1999 r. wprowadził poprawkę uodparniającą na te wirusy. Poniewa Scriptlet.Typelib oznaczony jest jako bezpieczny ze względu na skrypty, do- myślne ustawienia programów Internet Explorer, Outlook oraz Outlook Express pozwa- lają na u ycie kontrolki bez zgłaszania alarmów bezpieczeństwa. Lukę tę wykorzystuje wirus kak, który w katalogu startowym Windows usiłuje umieścić plik aplikacji HTML (HTA). Umieszczony tam kak oczekuje na kolejne uruchomienie systemu bądź rejestro- wanie u ytkownika. Gdy to nastąpi, wirus budzi się i mo e wyrządzać szkody — wyko- nuje serię zapisów i modyfikacji ró nych plików. W wyniku tego w komputerze pojawia się nowy plik z podpisem, który zawiera wirus i jest dołączany do ka dej wychodzącej wiadomości (rysunek 9.1). Dzięki temu kak mo e się rozprzestrzeniać. Rysunek 9.1. Okno opcji programu Microsoft Outlook Express Główne uderzenie następuje na skutek sprawdzenia dnia miesiąca i bie ącej godziny. Jeśli jest to godzina 600 po południu lub później, pierwszego dnia miesiąca, kak wyświetla okno z komunikatem Not Today (Nie dzisiaj, rysunek 9.2). Gdy okno to zostaje zamknięte, kak wywołuje funkcję Win32 API powodującą zamknięcie systemu Windows. Poniewa kod ten znajduje się w pliku HTA, który jest uruchamiany przy ka dym rozruchu i reje- strowaniu, ponowne włączenie zara onego komputera po godzinie 1800 pierwszego dnia miesiąca kończy się wyświetleniem komunikatu Not Today, a następnie zamknięciem systemu. Biorąc jeszcze pod uwagę zdolność do tworzenia i modyfikacji plików oraz wpisów rejestru, a tak e mo liwość wywoływania funkcji API, widać, jak ta kontrolka mo e być niebezpieczna.
  • 10. 262 Hack Proofing Your Web Applications. Edycja polska Rysunek 9.2. Okno dialogowe aplikacji HTML Unikanie typowych luk bezpieczeństwa w kontrolkach ActiveX Jedna z najpowszechniejszych luk bezpieczeństwa spowodowanych przez technologię ActiveX ma związek z postrzeganiem (lub jego brakiem) przez programistę mo liwości kontrolki. Ka dy programista zatrudniony w przedsiębiorstwie czy firmie konsultingowej, który pisze kontrolkę na potrzeby legalnej działalności, chce, by kontrolka była jak naj- łatwiejsza w u yciu. Bierze pod uwagę docelowe zastosowanie kontrolki i jeśli wydaje się bez zarzutu, to oznacza ją jako „bezpieczną ze względu na skrypty”. Z drugiej strony bez oznaczenia kontrolki jako bezpiecznej, u ytkownik jest zasypywany ostrze eniami o potencjalnym zagro eniu związanym z u yciem kontrolki, która nie jest podpisana i nie jest oznaczona jako bezpieczna. W zale ności od ustawień opcji bezpieczeństwa w prze- glądarce u ytkownik mo e w ogóle nie móc uruchomić kontrolki (rysunek 9.3). Po ozna- czeniu jako bezpiecznej, inne aplikacje i kontrolki mają mo liwość uruchomienia jej bez pytania o zgodę u ytkownika. Oczywiście taka sytuacja mo e być niebezpieczna. Dobrym przykładem potencjalnych efektów działania technologii ActiveX jest niesławna kontrolka Windows Exploder. Była to mała, zgrabna kontrolka, stworzona przez Freda McLaina (www.halcyon.com/mclain/ActiveX), która miała demonstrować mo liwości „niebezpiecz- nej” technologii. Jedyne, co robiła ta kontrolka, to zamknięcie i wyłączenie zara onego systemu. Teraz nie wydaje się to zbyt groźne, a nie był to efekt pomyłki, ale wywołuje chwilę zastanowienia. Kontrolki ActiveX wymagają ostro ności. Przed wprowadzeniem jej na rynek programista musi wiedzieć, do czego zdolna jest kontrolka. Rysunek 9.3. Alarm Microsoft Internet Explorera Kolejnym problemem wynikającym z nieostro ności programisty jest wykorzystanie kontrolki niezgodnie z przeznaczeniem, przy wykorzystaniu przywilejów u ytkownika. Fakt, e twórca tworzy kontrolkę z myślą o konkretnym przeznaczeniu, nie oznacza, e kto inny nie jest w stanie znaleźć innego zastosowania. Zawsze znajdzie się ktoś, kto zechce spo ytkować twórczość programisty. Wystarczy przypomnieć sobie przykład kontrolki Scriptlet.Typelib z poprzedniego podrozdziału. Programiści Microsoftu wie- dzieli, e kontrolka prawidłowo tworzy biblioteki czcionek dla WSC, ale nie wzięli pod uwagę, e ktoś mógłby skorzystać z ich kontrolki do utworzenia aplikacji HTML i mo- dyfikacji wpisów rejestru. Innym problemem związanym z kontrolkami ActiveX jest publikacja wersji, które nie zostały dokładnie przetestowane i zawierają błędy. Wśród błędów często spotykanych w programach w C++ jest błąd przepełnienia buforów. Ma on miejsce podczas kopio- wania ciągu znaków do tablicy o stałej długości, gdy ciąg jest dłu szy ni tablica. Wy- nikiem jest przepełnienie buforów i potencjalnie upadek aplikacji. W przypadku tego
  • 11. Rozdział 9. Tworzenie bezpiecznych sieciowych kontrolek ActiveX 263 rodzaju błędów najistotniejsze jest to, e efekty są nieprzewidywalne. Przy odrobinie szczęścia, pojawi się jedynie szczegółowy komunikat o błędzie (rysunek 9.4). Przepeł- nienie bufora mo e spowodować wyświetlenie na ekranie niepo ądanych znaków albo spowodować błąd przeglądarki i zawiesić system. Problem ten przez lata był plagą śro- dowiska systemów UNIX (Linux), ale ostatnio coraz bardziej zauwa a się go na plat- formie Windows. W serwisie Microsoft TechNet (www.microsoft.com/technet/security) wśród najpopularniejszych zagadnień związanych z bezpieczeństwem w technologiach IT miesięcznie mo na znaleźć co najmniej jedną wzmiankę na temat tego błędu. Nie jest to wyłącznie problem Microsoftu — dotyczy niemal ka dego producenta tworzącego kod dla platformy Windows. Dla ilustracji zasięgu tego problemu warto zajrzeć do nie- dawnego raportu na witrynie secureroot (www.secureroot.com), w którym Neal Krawetz donosi, i udało mu się zlokalizować błąd przepełnienia buforów w module Shockwave Flash. Raport informuje: „Na witrynie firmy Macromedia mo na się dowiedzieć, e moduł zainstalowany jest ju w 90% wszystkich przeglądarek internetowych. Poniewa prze- pełnienie buforów pozwala na uruchomienie dowolnego kodu, to mo e dotyczyć 90% podłączonych do sieci systemów”. To przera ająca wizja! Mimo e ten błąd jest bardzo rozpowszechniony, rozwiązanie jest proste — nale y więcej czasu poświęcić na dokładne testowanie i sprawdzenie, czy kod zapewnia kontrolę brzegów dla wszystkich wartości dopuszczających dane o zmiennej długości. Rysunek 9.4. Okno dialogowe szczegółowego komunikatu o błędzie w Windows Kolejne niebezpieczeństwo wią e się ze stosowaniem starych, wycofanych ju wersji kontrolek ActiveX. Niektóre z nich zawierają błędy, inne nie. Niektóre mogły zostać zupełnie przebudowane lub z jakiegoś powodu zastąpione. W momencie gdy ktoś posiada kopię kontrolki, nie ma gwarancji, e u yje obecnej wersji, zwłaszcza je eli mo e być ona w jakiś sposób nadu yta. W przypadku instalacji kontrolki, której podpis jest prze- starzały, wyświetlany jest komunikat o błędzie, jednak wiele osób i tak ją zainstaluje, poniewa wcią widnieje na niej podpis jej twórcy (rysunek 9.5). Niestety, nie ma spo- sobu, by zapobiec wykorzystaniu przez kogoś kontrolki, mimo e twórca ją wycofał. Gdy programista opatruje podpisem i publikuje w internecie kontrolkę, która mo e być potencjalnie niebezpieczna, kontrolka ta staje się łakomym kąskiem dla ka dego hakera.
  • 12. 264 Hack Proofing Your Web Applications. Edycja polska Rysunek 9.5. Ostrze enie o przestarzałym podpisie kontrolki W tym przypadku najlepszą obroną jest skuteczny atak. Dokładne testowanie kontrolki przed opublikowaniem oszczędzi później kłopotów. U ytkownik równie powinien „atakować”. Nigdy nie nale y instalować kontrolki, która jest niepodpisana lub okres wa ności podpisu dobiegł końca. Skutki mogą być potencjalnie groźne. Po instalacji kontrolki ActiveX mają takie same prawa jak u ytkownik i mogą wykonywać takie same operacje. Mogą wszystko, od wysłania poufnych danych w za- łączniku listu elektronicznego do wywołania polecenia powłoki, takiego jak np. Delete. Przed podjęciem decyzji o instalacji niepodpisanej lub przestarzałej kontrolki nale y zdać sobie sprawę z ryzyka. Usuwanie skutków luk w technologii ActiveX Słabość technologii ActiveX jest powa nym problemem dla administratorów sieci, u yt- kowników i programistów. Dla niektórych skutki niepoprawnego stosowania i zarządza- nia kontrolkami ActiveX mogą być ogromne. Inni nigdy nie martwili się tym problemem. Istnieje mo liwość ustanowienia polityki, która zabroni stosowania wszelkich kontrolek i skryptów, ale trzeba tego dokonać na poziomie ka dej maszyny z osobna, a to zabiera du o czasu, zarówno jeśli chodzi o implementację, jak i zarządzanie. Występuje to zwłasz- cza w środowiskach, w których u ytkownicy sami chętnie zmieniają parametry przegląda- rek. Do innych opcji mo na zaliczyć ograniczenie dostępu kontrolek ActiveX, na przykład za pośrednictwem barier firewall i oprogramowania antywirusowego, jednak efektywność takich rozwiązań ogranicza się do przypadków oczywistych i znanych. Mimo e pełna ochrona przed zagro eniami spowodowanymi przez słabości technologii ActiveX jest trudna — jeśli nie niemo liwa — to u ytkownicy na ka dym poziomie mogą podjąć kroki prowadzące do minimalizacji niebezpieczeństw. Ochrona na poziomie sieciowym Administrator sieci powinien rozpocząć dostrajanie ró nych parametrów bezpieczeństwa od sieciowego systemu operacyjnego: Do nało enia ograniczeń na kontrolki mogą słu yć takie mechanizmy, jak strefy bezpieczeństwa czy protokół Secure Sockets Layer (SSL).
  • 13. Rozdział 9. Tworzenie bezpiecznych sieciowych kontrolek ActiveX 265 W rejestrze systemowym dostępny jest wpis %QFG$CUG5GCTEJ2CVJ określający miejsce, z którego system będzie próbował pobierać kontrolki ActiveX. Istnieje narzędzie o nazwie Internet Explorer Administration Kit (IEAK), które mo e słu yć do definiowania i dynamicznego zarządzania kontrolkami ActiveX. Mimo e część tych opcji są bardzo przydatna, nale y równie rozwa yć instalację bariery firewall. Niektóre zapory mają mo liwość monitorowania i wybiórczego filtrowania wy- wołań oraz transferów kontrolek ActiveX. Inne nie oferują takich opcji, dlatego powinno się zbadać mo liwości wybieranej bariery firewall. Ochrona na poziomie klienta Jedną z najistotniejszych rzeczy, które mo e wykonać u ytkownik, jest ciągła aktuali- zacja systemu operacyjnego wraz z jego komponentami i oprogramowaniem antywiru- sowym. Nale y regularnie pobierać bie ące poprawki i bazy danych wirusów. Kolejną opcją dla u ytkowników, a tak e administratorów, są parametry stref bezpieczeństwa w programach Internet Explorer, Outlook oraz Outlook Express. Są to cenne narzędzia bezpieczeństwa i warto skorzystać z ich potencjału. Ustawianie stref bezpieczeństwa Prawidłowo ustawione strefy bezpieczeństwa mogą obni yć poziom ryzyka związany z kontrolkami ActiveX. Istnieje pięć stref bezpieczeństwa: Lokalny intranet, Zaufane witryny, Witryny z ograniczeniami, Internet oraz Mój komputer. Ostatnia strefa, Mój kom- puter, jest dostępna jedynie za pośrednictwem IEAK, nie z poziomu przeglądarki. W przy- padku braku dostępu do pakietu IEAK, mo na zmodyfikować parametry stref bezpie- czeństwa poprzez klucz rejestru o nazwie =*-';A%744'06A75'4>5QHVYCTG>/KETQUQHV> 9KPFQYU>%WTTGPV8GTUKQP>+PVGTPGV 5GVVKPIU><QPGU?. Odpowiednie wartości tego klucza znajdują się w tabeli 9.1. Tabela 9.1. Parametry stref bezpieczeństwa dla programów Internet Explorer, Outlook oraz Outlook Express Wartość klucza rejestru Strefa bezpieczeństwa 0 Mój komputer 1 Lokalny intranet 2 Zaufane witryny 3 Internet 4 Witryny z ograniczeniami Modyfikacja ustawień stref bezpieczeństwa w programie Internet Explorer 5.x mo e się odbyć według następującego schematu: 1. Z menu Narzędzia wybiera się Opcje internetowe. Pojawia się okno dialogowe Opcji internetowych. 2. Nale y wybrać zakładkę Zabezpieczenia. Pojawia się panel opcji zabezpieczeń.
  • 14. 266 Hack Proofing Your Web Applications. Edycja polska 3. Trzeba wybrać strefę do modyfikacji. Dla większości u ytkowników będzie to strefa Internet, ale w zale ności od okoliczności być mo e konieczne będzie powtórzenie tych kroków dla strefy Lokalny intranet. 4. Nale y kliknąć przycisk Poziom niestandardowy. Pojawi się panel Ustawienia zabezpieczeń. 5. Zmiana jednego lub więcej spośród znajdujących się poni ej ustawień pozwoli osiągnąć wymagany poziom bezpieczeństwa: w opcjach Formanty ActiveX i dodatki plug-in nale y wybrać włącz, wyłącz lub monituj. w opcjach Wykonywanie skryptów formantów ActiveX oznaczonych jako bezpieczne nale y wybrać wyłącz lub monituj. 6. Kliknięcie OK zatwierdzi te zmiany. Pojawi się okno dialogowe potwierdzające dokonanie zmian. 7. Nale y kliknąć Tak. 8. Przycisk OK zamknie okno Opcji internetowych i zapisze ustawienia. U ytkownik powinien równie wyrobić w sobie nawyk ostro ności w momencie, gdy otrzymuje monit dotyczący pobrania lub uruchomienia kontrolki ActiveX. Trzeba rów- nie wyłączyć kontrolki ActiveX oraz inne języki skryptowe w aplikacjach pocztowych, co często bywa pomijane. Wiele osób uwa a, e skoro nie u ywają aplikacji pocztowych Microsoftu, to są bezpieczni. Ale jeśli aplikacja pocztowa potrafi wyświetlać strony HTML, to zagro enie ze strony Eudory jest równie prawdopodobne, jak ze strony programu Outlook Express. W przeglądarkach Netscape na dzień dzisiejszy niebezpieczeństwo związane z ActiveX jest niewielkie. Aby uruchomić kontrolkę ActiveX w przeglądarce Netscape wcześniejszej ni wersja 6. trzeba zainstalować moduł rozszerzający. Najbardziej znanym modułem obsługującym ActiveX w przeglądarkach Netscape jest ScriptActive firmy NCompass (NCompass nie oferuje ju jednak tego modułu ani nie obsługuje prze- glądarki Netscape). Nie istnieje standardowy moduł dla Netscape 6 z jądrem Gecko. Uru- chomionych jest jednak kilka projektów mających na celu stworzenie nowych modułów lub bezpośredniej obsługi technologii ActiveX przez Netscape. Na programiście spoczywa największa odpowiedzialność. Stanowi on pierwszą linię obrony przed słabościami modelu ActiveX. Trzeba znać narzędzia dostępne w danej chwili, które pozwolą podnieść poziom bezpieczeństwa i zawsze nale y brać pod uwagę ryzyko zwią- zane z tworzeniem kodu przenośnego. Powinno się stosować do dobrych reguł programo- wania i zachować szczególną ostro ność, by uniknąć powszechnych problemów i pomy- łek otwierających drogę do nadu yć. Przede wszystkim wa na jest dobra ocena i rozsądek oraz testowanie, testowanie, testowanie… Po podpisaniu i opublikowaniu kontrolki staje się ona celem — ka dy mo e jej u yć. Dlatego trzeba mieć pewność, e stworzona kon- trolka ActiveX jest tak bezpieczna jak to tylko mo liwe. Hakerzy z reguły wykorzystują pomysłowe sposoby, by skłonić u ytkownika do kliknięcia pozornie bezpiecznego odnośnika lub otwarcia listu opatrzonego tytułem, np. „W odpo- wiedzi na pański komentarz”.
  • 15. Rozdział 9. Tworzenie bezpiecznych sieciowych kontrolek ActiveX 267 Metodologia tworzenia bezpiecznych kontrolek ActiveX Jak pisać bezpieczne kontrolki ActiveX? Có , jak zawsze, pierwszy krok wymaga trafnej oceny i zdrowego rozsądku. Nale y się upewnić, e działanie kontrolki i jej mo liwości są dokładnie poznane. Dobre reguły in ynierii programowania oraz techniki projektowe równie mogą być pomocne: Trzeba dokładnie udokumentować kontrolkę. To da administratorom i u ytkownikom podstawę do prawidłowej oceny potencjalnego ryzyka związanego z kontrolką. Kontrolka powinna zawierać jak najmniejszą funkcjonalność — konieczną do spełnienia swojego zadania. Ka da dodatkowa funkcja a prosi się o nadu ycie. Nale y zwrócić szczególną uwagę na powszechne pomyłki, jak przepełnienie buforów czy błędy poprawności danych wejściowych. Istotne są metody zabezpieczania kontrolek ActiveX za pomocą odpowiednich parametrów bezpieczeństwa obiektu. Parametry bezpieczeństwa obiektu Zagadnienia bezpieczeństwa obiektów mo na podzielić na dwie grupy: bezpieczeństwo ze względu na inicjalizację oraz bezpieczeństwo ze względu na skrypty. Według definicji Microsoftu bezpieczny ze względu na inicjalizację oznacza, e kontrolka mo e pobierać dowolne argumenty, zaś bezpieczny ze względu na skrypty — ka de zastosowanie wła- ściwości, metod i zdarzeń kontrolki jest bezpieczne. Pamiętając o tym, nale y dokładnie testować kontrolki i upewnić się, e nie wykonują one potencjalnie niebezpiecznych zadań. Przykładami czynności uwa anych za niebezpieczne są tworzenie i usuwanie plików, udostępnianie haseł, podgląd prywatnych informacji o u ytkowniku czy wysyłanie za- pytań SQL. Mimo e Lista zagadnień bezpieczeństwa Kontrolek ActiveX Microsoftu mo e wydawać się subiektywna, właściwa ocena i rozsądek powinny pomóc w zakwalifikowaniu operacji. Jeśli kontrolka wykonuje jakąkolwiek operację spośród wymienionych poni ej, nie powinna być oznaczona jako bezpieczna: Dostęp do informacji o komputerze lokalnym lub u ytkowniku. Udostępnianie prywatnych informacji w komputerze lokalnym bądź w sieci. Modyfikacja lub usuwanie informacji z komputera lokalnego bądź sieci. Błędy kontrolki potencjalnie prowadzące do zakończenia działania przeglądarki. Nadmierne zu ycie czasu i zasobów, takich jak pamięć. Wykonywanie potencjalnie destrukcyjnych wywołań systemowych (włącznie z uruchamianiem plików). Podstępne wykorzystanie kontrolki i powodowanie nieprzewidzianych wyników.
  • 16. 268 Hack Proofing Your Web Applications. Edycja polska Dobre narzędzia Programista, który zamierza opatrzyć kontrolkę ActiveX podpisem, potrzebuje odpowiednich na- rzędzi — certyfikatu, ale by go zastosować potrzebny będzie pakiet ActiveX SDK (ActiveX Software Development Kit) Microsoftu. ActiveX SDK jest zestawem narzędzi koniecznych do podpisywania i testowania plików CAB. Głównymi komponentami tego pakietu są: makecert.exe, cert2spc.exe, signcode.exe oraz checktrust.exe. Narzędzia te wchodzą również w skład wprowadzanego dopiero pakietu Microsoft.NET Framework. Narzędzie tworzenia certyfikatów (makecert.exe) generuje certyfikat X.509, który może służyć jedynie do testowania. Program ten tworzy także publiczny i prywatny klucz na potrzeby podpisów cyfrowych. Narzędzie testowe certyfikatów producentów oprogramowania (Cert2spc.exe) tworzy certyfikat typu Software Publisher’s Certificate (SPC) z jednego lub większej liczby certyfikatów X.509. Należy pamiętać, że program ten służy jedynie do testów. Narzędzie podpisywania plików (signcode.exe) służy do podpisywania przenośnego pliku wykonywanego (portable executable, PE) i nadawania mu żądanych uprawnień, co pozwala twórcom na szczegółową kontrolę ograniczeń nałożonych na ich komponenty. Podpisem można opatrzyć indywidualny komponent lub cały pakiet. Program signcode uruchomiony bez żadnych parametrów włączy kreatora podpisów cyfrowych, który poprowadzi przez cały proces. Narzędzie weryfikacji certyfikatów (chktrust.exe) sprawdza ważność pliku opatrzonego podpisem Authenticode. Jeśli odpowiednie wartości się zgadzają, chktrust uznaje certyfikat za zweryfikowany. Opisane narzędzia przyspieszą podpisywanie i dystrybucję kontrolek ActiveX. Bezpieczne kontrolki ActiveX Komu zaufać, a raczej, kto zaufa mnie? Takie pytanie powinien sobie zadać ka dy twórca, który publikuje kontrolki ActiveX. Niezale nie od tego, czy kontrolka znajdzie zasto- sowanie w internecie czy w korporacyjnej sieci lokalnej, powinna być łatwa w instalacji i informować u ytkowników, e jest godna zaufania. Metoda pozwalająca zdobyć to zaufanie nazywa się podpisywaniem kontrolek. Podpisywanie kontrolek Do podpisania kontrolki konieczny jest cyfrowy certyfikat lub identyfikator (rysunek 9.6) z Organu certyfikującego. Dwoma przewodnimi organami certyfikującymi kontrolki ActiveX w USA są VeriSign (www.verisign.com) oraz Thawte (www.thawte.com). Oby- dwie firmy oferują ró ne wersje certyfikatów — w zale ności od platformy, na której działa projekt. Na przykład istnieją ró ne certyfikaty dla technologii Microsoft Authen- ticode, Netscape Object, Microsoft Office 2000 oraz VBA, Marimba, Macromedia Shoc- kwave, Apple i innych. W chwili obecnej roczny koszt cyfrowego identyfikatora typu Code Signing Digital ID wynosi 400 USD. W przypadku Thawte koszt ich pakietu Develo- per Certificate wynosi 200 USD, zaś co roku obowiązuje opłata odnawiająca w wyso- kości 100 USD. W przeciwieństwie do VeriSign, Thawte proponuje teraz uniwersalny certyfikat, słu ący do podpisywania kodu na wszystkich platformach z wyjątkiem Javy.
  • 17. Rozdział 9. Tworzenie bezpiecznych sieciowych kontrolek ActiveX 269 Rysunek 9.6. Ostrze enie zawierające identyfikator podpisu kodu Firma twierdzi, e pakiet Java 2 Plugin Developer Certificates wcią nie współpracuje z pozostałymi platformami, w związku z czym dla Javy trzeba wykupić osobny certyfikat. Jeśli jednak w grę wchodzi podpisywanie apletów Javy dla Navigatora (JVM) 1.1.x, wy- starczy certyfikat uniwersalny. Jedną z opcji proponowanych przez VeriSign jest dostęp do serwera stempli czasowych. Poniewa certyfikat jest wa ny jedynie przez rok, to po ka dym odnowieniu certyfikatu nale y ponownie podpisać kod. Nie jest to jednak prawdą, jeśli podpis w kodzie zawiera stempel czasowy. Oferta darmowego serwera stempli czasowych VeriSign zmniejsza pracę związaną z dbaniem o stary kod. Jest tylko jeden wyjątek — w chwili obecnej Netscape nie obsługuje stempli czasowych, więc kod dla Netscape musi być podpisywany co roku. Obydwa organy certyfikujące proponują taki sam rodzaj produktu, z których ka dy ma zalety, jak Cadillac i Chevrolet — obydwa są dobrymi produktami. Jeden jest tańszy, drugi zawiera więcej udogodnień, ale obydwa pozwolą osiągnąć cel. Europejscy twórcy mogą współpracować z europejskimi organami certyfikującymi. Najpopularniejszymi orga- nami certyfikującymi w Europie są GlobalSign (www.globalsign.net) oraz TrustWise (www.trustwise.com). Co zrobić z posiadanym ju cyfrowym certyfikatem? Có , poniewa niniejszy rozdział opisuje kontrolki ActiveX, uwaga zostanie skupiona na podpisywaniu kodu dla platformy Microsoftu oraz na Microsoft Authenticode. Mimo że Thawte i VeriSign funkcjonują jak dwie niezależne firmy i wciąż prowadzą dwie oddzielne linie produktów, Thawte zostało wykupione przez VeriSign, Inc. w grudniu 1999 r. Jak stosować Microsoft Authenticode Co to jest i do czego słu y Microsoft Authenticode? Authenticode to metoda zdobycia zaufania klientów. Posiadając cyfrowy certyfikat, kod mo na opatrzyć podpisem. Bez niego u ytkownik otrzymałby komunikat o błędzie informujący, e niemo liwe jest ustalenie
  • 18. 270 Hack Proofing Your Web Applications. Edycja polska twórcy oprogramowania (rysunek 9.7). Gdy kod posiada podpis, wyświetlane są: informa- cje o kontrolce, to samość i kontakt do twórcy, organ certyfikujący oraz opcjonalnie czas i data podpisania kontrolki. Gwarantuje to u ytkownikowi, e kontrolka została udostęp- niona przez zaufanego producenta oraz e nie była modyfikowana od momentu publikacji. Rysunek 9.7. Ostrze enie Authenticode Jak stosować Microsoft Authenticode? Implementacja technologii Authenticode polega na podpisaniu kodu. Sam proces podpisywania jest bardzo prosty. Ukończona (i w miarę potrzeby umieszczona w pliku CAB) kontrolka jest gotowa do podpisu, do czego konieczne będzie narzędzie signcode Microsoftu. Nale y wykonać następujące czynności: 1. Po uruchomieniu pliku signcode.exe, pojawia się Kreator podpisów cyfrowych (rysunek 9.8). Rysunek 9.8. Kreator podpisów cyfrowych 2. Nale y wybrać podpisywany plik. Mo e to być dowolny plik wykonywany (.exe, .ocx lub .dll). Istnieje równie mo liwość podpisania plików CAB, plików katalogów (CAT) oraz plików CTL.
  • 19. Rozdział 9. Tworzenie bezpiecznych sieciowych kontrolek ActiveX 271 3. Po wybraniu pliku mo na zdecydować pomiędzy opcją Typical (typowa) oraz Custom (niestandardowa). W przypadku korzystania z cyfrowego identyfikatora (otrzymanego od organu autoryzującego) wybiera się opcję Custom. 4. Następnie nale y wybrać plik certyfikatu (.cer, .crt lub .cps). 5. W kolejnym kroku trzeba podać plik zawierający klucz prywatny (PVK). W tym momencie u ytkownik jest proszony o wpisanie hasła. Jeśli hasło zaginęło, trzeba wystąpić o wydanie nowego certyfikatu. Poniewa jest to dość popularny problem, ponowne wystawienie certyfikatu przez obydwa organy autoryzujące jest darmowe. 6. Nale y wybrać algorytm mieszający, który zostanie u yty do stworzenia podpisu. U ytkownik będzie miał w miarę potrzeby mo liwość dołączenia dodatkowych certyfikatów. 7. Kolejnym krokiem jest opis danych (bardzo istotne). Są to informacje opisujące kontrolkę, które będą wyświetlane w momencie, gdy u ytkownik instaluje kontrolkę. 8. Następnie pora na stempel czasowy konieczny do utrzymania kontrolki w stanie aktywnym po wygaśnięciu certyfikatu. Posiadacze certyfikatu VeriSign mogą korzystać z firmowego serwera stempli czasowych, w przeciwnym razie stempel będzie musiał pochodzić z innego źródła. 9. Na koniec u ytkownik mo e zobaczyć wszystkie ustawienia. Teraz wystarczy kliknąć przycisk Zakończ, ponownie wprowadzić hasło certyfikatu i to wszystko — kontrolka ActiveX została podpisana! Dla tych, którzy nie przepadają za kreatorami, signcode.exe mo e być równie urucho- miony z wiersza poleceń. Wystarczy jedynie podać odpowiednie parametry, a efekty będą takie same. eby nie wyprzedzać, omówimy jeszcze jedno zagadnienie. Przed podpisa- niem kodu trzeba wiedzieć, jak oznakować kontrolkę. Znakowanie kontrolek Istnieją dwie metody pozwalające na oznakowanie kontrolki jako bezpiecznej: ustawie- nia bezpieczeństwa kreatora pakietów i wersji dystrybucyjnych (Package and Deployment Wizard) w środowisku programistycznym lub implementacja interfejsu IObjectSafety. Najpierw zostanie omówiona łatwiejsza metoda. Ustawienia bezpieczeństwa Do tworzenia pakietów w postaci plików CAB wystarczy kreator wersji dystrybucyjnych (Package and Deployment Wizard). Aby oznaczyć kontrolkę ActiveX jako „bezpieczną ze względu na skrypty” czy „bezpieczną ze względu na inicjalizację”, nale y wybrać opcję Yes w rozwijanej liście obok nazwy kontrolki na ekranie Safety Settings kreatora (rysunek 9.9). Oznakowanie kontrolki jako bezpiecznej pozwoli u ytkownikom upewnić się, e kontrolka nie wykona w systemie operacji niebezpiecznych. Po wybraniu odpo- wiednich parametrów bezpieczeństwa klika się przycisk Dalej, a kreator zadba o resztę. Plik CAB będzie gotowy do instalacji, zaś kontrolka zostanie oznakowana zgodnie z wy- branymi ustawieniami.
  • 20. 272 Hack Proofing Your Web Applications. Edycja polska Rysunek 9.9. Ekran ustawień bezpieczeństwa kreatora wersji dystrybucyjnych IObjectSafety Drugą metodą oznakowania kontrolki jako bezpiecznej jest implementacja w kontrolce metody IObjectSafety. Jest ona interfejsem komponentu dostępnym z poziomu Microsoft Internet Explorera 4.0 i późniejszych. Zapewnia metody słu ące do pobierania i ustawiania opcji bezpieczeństwa aplikacji dla systemu Windows. Jest to bardzo prosty interfejs, który posiada jedynie dwie metody: )GV+PVGTHCEG5CHGV[1RVKQPU 5GV+PVGTHCEG5CHGV[1RVKQPU Nazwy nie pozostawiają wątpliwości co do działania tych metod. )GV+PVGTHCEG5CHGV[ 1RVKQPU pobiera opcje bezpieczeństwa obsługiwane przez obiekt, jak równie bie ące ustawienia opcji bezpieczeństwa obiektu. 5GV+PVGTHCEG5CHGV[1RVKQPU pozwala ozna- kować obiekt jako bezpieczny ze względu na inicjalizację i na skrypty. W językach Visual Basic 5 i późniejszych najlepszym sposobem jest zastosowanie po- lecenia +ORNGOGPVU (listing 9.1). Interfejs IObjectSafety pozwala kontrolce na zwrócenie aplikacji wywołującej metodę (zwanej tak e obiektem kontenerowym — Container Object) odpowiedzi, czy jest bezpieczna, czy nie. Główną zaletą interfejsu IObjectSafety jest mo - liwość implementacji jednej wersji kontrolki, która zachowuje się bezpiecznie w pewnych okolicznościach i niebezpiecznie w innych. Kontrolka mo e programowo zmieniać tryby bezpieczeństwa, tak by dostosowywać się do sytuacji. W przeciwieństwie do innych metod oznakowywania kontrolek, sposób ten nie zale y od wpisów rejestru systemowego. Z punktu widzenia bezpieczeństwa, najistotniejszym powodem stosowania interfejsu IObjectSafety jest fakt, e nikt nie mo e „odpakować” kontrolki i oznaczyć jej jako bez- pieczną, podczas gdy taką nie jest. Listing 9.1. Implementacja interfejsu IObjectSafety w języku Visual Basic 1RVKQP 'ZRNKEKV +ORNGOGPVU +1DLGEV5CHGV[
  • 21. Rozdział 9. Tworzenie bezpiecznych sieciowych kontrolek ActiveX 273 +1DLGEV5CHGV[A)GV+PVGTHCEG5CHGV[1RVKQPU 2TKXCVG 5WD +1DLGEV5CHGV[A)GV+PVGTHCEG5CHGV[1RVKQPU $[8CN TKKF #U .QPI A RFY5WRRQTVGF1RVKQPU #U .QPI RFY'PCDNGF1RVKQPU #U .QPI KO 4E #U .QPI KO T%NU+F #U W)7+ KO ++ #U 5VTKPI KO D++ #U $[VG RFY5WRRQTVGF1RVKQPU +06'4(#%'5#('A(14A7064756'A%#..'4 1T A +06'4(#%'5#('A(14A7064756'A#6# 7UVCY K YTQE QDUNWIKYCPG RTG QDKGMV QRELG DGRKGEGPUVYC +H TKKF 6JGP 5RTCYF YUMCPKM FQ KFGPV[HKMCVQTC KPVGTHGLUW %QR[/GOQT[ T%NU+F $[8CN TKKF .GP T%NU+F CRKU IWKF KPVGTHGLUW FQ UVTWMVWT[ D++ 5VTKPI /#:A)7+.'0 7VYQT VCDNKEG DCLVQY 4E 5VTKPI(TQO)7+ T%NU+F 8CT2VT D++ /#:A)7+.'0 2QDKGT ENUKF G UVTWMVWT[ IWKF 4E +P5VT D++ XD0WNN%JCT 5RTCYF E[ PC MQPEW VGMUVW PKG OC RWUV[EJ PCMQY ++ .GHV 7%CUG D++ 4E 1DGVPKL RWUVG PCMK K COKGP PC YKGNMKG NKVGT[ FNC RQTQYPCPKC 5GNGEV %CUG ++ %CUG ++A+KURCVEJ CFCPG QRELG DGRKGEGPUVYC RFY'PCDNGF1RVKQPU ++H OAH5CHG(QT5ETKRVKPI A +06'4(#%'5#('A(14A7064756'A%#..'4 'ZKV 5WD %CUG ++A+2GTUKUV5VQTCIG ++A+2GTUKUV5VTGCO + +2GTUKUV2TQRGTV[$CI RFY'PCDNGF1RVKQPU ++H OAH5CHG(QT+PKVKCNKKPI A +06'4(#%'5#('A(14A7064756'A#6# 'ZKV 5WD %CUG 'NUG 'TT4CKUG 'A01+06'4(#%' $.# QRELC PKGQDUNWIKYCPC 'ZKV 5WD 'PF 5GNGEV 'PF +H 'PF 5WD +1DLGEV5CHGV[A5GV+PVGTHCEG5CHGV[1RVKQPU 2TKXCVG 5WD +1DLGEV5CHGV[A5GV+PVGTHCEG5CHGV[1RVKQPU $[8CN TKKF #U .QPI $[8CN A FY1RVKQPU5GV/CUM #U .QPI $[8CN FY'PCDNGF1RVKQPU #U .QPI KO 4E #U .QPI KO T%NUF #U W)7+ KO ++ #U 5VTKPI KO D++ #U $[VG +H TKKF 6JGP 5RTCYF YUMCPKM FQ KFGPV[HKMCVQTC KPVGTHGLUW
  • 22. 274 Hack Proofing Your Web Applications. Edycja polska %QR[/GOQT[ T%NU+F $[8CN TKKF .GP T%NU+F CRKU IWKF KPVGTHGLUW FQ UVTWMVWT[ D++ 5VTKPI /#:A)7+.'0 7VYQT VCDNKEG DCLVQY 4E 5VTKPI(TQO)7+ T%NU+F 8CT2VT D++ /#:A)7+.'0 2QDKGT ENUKF G UVTWMVWT[ IWKF 4E P5VT D++ XD0WNN%JCT 5RTCYF E[ PC MQPEW VGMUVW PKG OC RWUV[EJ PCMQY ++ .GHV 7%CUG D++ 4E 1DGVPKL RWUVG PCMK K COKGP PC YKGNMKG NKVGT[ FNC RQTQYPCPKC 5GNGEV %CUG ++ %CUG ++A+KURCVEJ +H FY'PCDNGF1RVKQPU #PF FY1RVKQPU5GV/CUM +06'4(#%'5#(' (14 7064756' A %#..'4 6JGP 'TT4CKUG 'A(#+. DNCF PKGQDUNWIKYCPG 'ZKV 5WD 'PF +H +H 0QV OAH5CHG(QT5ETKRVKPI 6JGP 'TT4CKUG 'A(#+. %[ VGP QDKGMV LGUV DGRKGEP[ G YINGFW PC UMT[RV[! 'ZKV 5WD %CUG ++A+2GTUKUV5VQTCIG ++A+2GTUKUV5VTGCO ++A+2GTUKUV2TQRGTV[$CI +H FY'PCDNGF1RVKQPU #PF FY1RVKQPU5GV/CUM A +06'4(#%'5#('A(14A7064756'A#6# 6JGP 'TT4CKUG 'A(#+. DNCF PKGQDUNWIKYCPG 'ZKV 5WD 'PF +H +H 0QV OAH5CHG(QT+PKVKCNKKPI 6JGP 'TT4CKUG 'A(#+. %[ VGP QDKGMV LGUV DGRKGEP[ G YINGFW PC KPKELCNKCELG! 'ZKV 5WD %CUG 'NUG CFCP[ KPVGTHGLU LGUV PKGPCP[ 'TT4CKUG 'A01+06'4(#%' DNCF PKGQDUNWIKYCPG 'ZKV 5WD 'PF 5GNGEV 'PF +H 'PF 5WD (WPEVKQP5CHG6Q5ETKRV 2WDNKE (WPEVKQP (WPEVKQP5CHG6Q5ETKRV #U $QQNGCP (WPEVKQP5CHG6Q5ETKRV 6TWG 'PF (WPEVKQP (WPEVKQP0165CHG6Q5ETKRV 2WDNKE (WPEVKQP (WPEVKQP0165CHG6Q5ETKRV #U $QQNGCP (WPEVKQP0165CHG6Q5ETKRV 6TWG 'PF (WPEVKQP
  • 23. Rozdział 9. Tworzenie bezpiecznych sieciowych kontrolek ActiveX 275 Oznaczanie kontrolek w rejestrze systemowym Ostatnią opisywaną metodą oznaczania kontrolki jako bezpiecznej jest zastosowanie rejestru systemowego. Mimo e na początku niniejszego rozdziału napisano, i istnieją tylko dwa sposoby oznakowania kontrolki, niniejsza — trzecia jest tylko rozszerzeniem pierwszej z opisanych metod. Oznakowanie kontrolki przez kreatora wersji dystrybucyjnych w istocie polega na mo- dyfikacji wpisów w rejestrze systemowym. Nale y zrozumieć, e pociąga to za sobą pewne koszty. Przede wszystkim kontrolka, która jest oznakowana w ten sposób, przy ka dej inicjalizacji musi odwoływać się do Rejestru. To zajmuje czas, zaś gdy w grę wchodzi wyświetlanie zawartości strony WWW, szybkość jest istotnym czynnikiem. Kolejnym problemem związanym z tego rodzaju oznakowywaniem jest fakt, e nie ist- nieje rozwiązanie pośrednie. Kontrolka jest albo bezpieczna, albo nie. Nie mo na napisać kontrolki, której parametry bezpieczeństwa zale ą od wpisów w rejestrze i która mo e uchodzić za bezpieczną i jednocześnie niebezpieczną. Trzeba byłoby dostarczać obie wersje — bezpieczną w ka dych warunkach i niebezpieczną. Dla u ytkowników, którzy nie mogą się doczekać uruchomienia programu regedit.exe i oglądania wszystkiego w rejestrze systemowym, zostaną zaprezentowane odpowiednie czynności. Jedyne, co trzeba zrobić, to utworzyć następujące klucze w polu CLSID kon- trolki ActiveX, w sekcji Implemented Categories (rysunek 9.10). Rysunek 9.10. Edytor rejestru Windows Aby oznaczyć kontrolkę jako bezpieczną ze względu na skrypty, nale y u yć wartości klucza: %((###%%. Aby oznaczyć kontrolkę jako bezpieczną ze względu na inicjalizację, trzeba u yć wartości klucza: %((###%%. To wszystko, choć pamiętajmy, e kontrolka oznaczona jako bezpieczna nie wymaga pozwolenia u ytkownika na uruchomienie. Wa na jest zatem ostro ność.
  • 24. 276 Hack Proofing Your Web Applications. Edycja polska Podsumowanie Jak się okazuje, z dystrybucją kontrolek ActiveX wią e się wiele problemów bezpieczeń- stwa. Wszystkie wynikają z podejścia firmy Microsoft do tych zagadnień. Nadając kon- trolkom ActiveX takie same mo liwości i prawo dostępu jak u ytkownikowi, Microsoft stworzył potę ne narzędzie tworzenia kodu przenośnego. Jednak wraz z mo liwościami wzrasta te odpowiedzialność, a większość tej odpowiedzialności ponosi programista. To on musi ocenić mo liwości kontrolki ju w fazie projektowania. Nale y unikać po- wszechnych pomyłek, takich jak błędne oznaczenie kontrolki jako bezpiecznej czy wpro- wadzenie wersji z błędami. Poza projektantami tak e administratorzy systemowi i u ytkownicy powinni się przy- czynić do ochrony swoich sieci i komputerów osobistych. Administratorzy powinni ko- rzystać ze wszystkich narzędzi dostarczanych z systemami operacyjnymi i rozwa yć za- stosowanie jakiegoś rodzaju bariery firewall. Administratorzy i u ytkownicy mają równie dostęp do opcji bezpieczeństwa wbudowanych w programy Internet Explorer, Outlook oraz Outlook Express. Powinni dbać o ustawienia w swoich programach oraz uaktualniać oprogramowanie na swoich komputerach. Projektanci powinni zapoznać się z dostępnymi narzędziami, które pozwolą opracowywać bezpieczniejsze kontrolki. Cyfrowe certyfikaty połączone z technologią typu Microsoft Authenticode pozwolą osiągnąć ten cel. Podczas pisania kontrolek nale y zdawać sobie sprawę z ró nych metod oznaczania ich jako bezpieczne oraz znać kryteria kwalifikujące kontrolkę jako bezpieczną lub nie. Zalecaną metodą implementacji tego zadania jest oczywiście interfejs IObjectSafety, jednak obydwie metody spełniają swoje zadanie. Jeśli kontrolka jest całkowicie bezpieczna i nie jest w stanie wyrządzić adnej szkody w ma- cierzystym systemie, powinny wystarczyć ustawienia rejestru. Jeśli jednak istnieje szansa, by kontrolka mogła być u yta w jakimś niewłaściwym celu, naprawdę warto poświęcić dodatkowy czas na implementację interfejsu IObjectSafety. Trzeba pamiętać, e nieza- le nie od sposobu potraktowania przez projektanta bezpieczeństwa w technologii ActiveX, to on mo e stanowić ostatnią linię obrony. Dlatego powinno się być tak dokładnym jak to tylko mo liwe i nigdy nie przeceniać potencjału kontrolki. Skrót rozwiązań Zagrożenia związane z technologią ActiveX Umieszczenie apletu Javy w piaskownicy daje pewność, e aplikacja działa we własnej, chronionej przestrzeni adresowej, odizolowanej od takich rzeczy, jak system plików czy inne aplikacje. Z kolei kontrolki ActiveX mają takie same prawa jak u ytkownik, który je uruchamia po instalacji. Microsoft nie jest w stanie zagwarantować, e to autor kontrolki będzie jej u ywał, tak samo nie ma pewności, e kontrolka zostanie u yta zgodnie z przeznaczeniem — na witrynie lub stronach, dla których powstała. Ponadto nie ma pewności, e właściciel strony czy ktokolwiek inny nie zmodyfikował jej zawartości po umieszczeniu na niej kontrolki.
  • 25. Rozdział 9. Tworzenie bezpiecznych sieciowych kontrolek ActiveX 277 Po oznakowaniu kontrolki jako bezpiecznej inne aplikacje i kontrolki mają mo liwość uruchamiania jej bez pytania u ytkownika o zgodę. Fakt, e programista stworzył kontrolkę z myślą o konkretnym zastosowaniu nie znaczy, e ktoś inny nie znajdzie dla niej innego zastosowania. Powszechnym problemem związanym z kontrolkami ActiveX jest udostępnianie wersji, które nie zostały dokładnie przetestowane i zawierają błędy w rodzaju przepełnienia buforów. Warto poświęcić dodatkowy czas na dokładne testy, które dadzą pewność, e kod implementuje prawidłową kontrolę ograniczeń wobec wszystkich wartości, których długość mo e być zmienna. Do nakładania restrykcji na kontrolki mogą słu yć mechanizmy stref bezpieczeństwa (Security Zones) oraz protokoły SSL. Zmienna %QFG$CUG5GCTEJ2CVJ w rejestrze systemowym określa miejsca, które system bada w poszukiwaniu kontrolek ActiveX. Pakiet IEAK mo e słu yć do definiowania i dynamicznego zarządzania kontrolkami ActiveX. Metodologia tworzenia bezpiecznych kontrolek ActiveX Nale y dokładnie dokumentować kontrolki. Projektowane kontrolki powinny równie oferować minimalną funkcjonalność, konieczną do zrealizowania zadania. Jeśli kontrolka wykonuje jakąkolwiek operację spośród wymienionych poni ej, nie powinna być oznaczona jako bezpieczna: Dostęp do informacji o lokalnym komputerze lub u ytkowniku. Udostępnianie prywatnych informacji w komputerze lokalnym bądź w sieci. Modyfikacja lub usuwanie informacji z komputera lokalnego bądź sieci. Błędy kontrolki potencjalnie prowadzące do zakończenia działania przeglądarki. Nadmierne zu ycie czasu i zasobów, takich jak pamięć. Wykonywanie potencjalnie destrukcyjnych wywołań systemowych (włącznie z uruchamianiem plików). Podstępne wykorzystanie kontrolki i powodowanie nieprzewidzianych efektów. Pakiet ActiveX SDK Microsoftu jest zestawem narzędzi, które są konieczne do podpisywania i testowania plików CAB. Jego głównymi komponentami są programy: makecert.exe, cert2spc.exe, signcode.exe oraz checktrust.exe. Narzędzia te wchodzą równie w skład wchodzącego na rynek pakietu Microsoft.NET Framework. Bezpieczne kontrolki ActiveX Do podpisania kontrolki jest konieczny cyfrowy certyfikat lub identyfikator wystawiony przez organ autoryzujący. Dwoma najwa niejszymi amerykańskimi organami autoryzującymi kontrolki ActiveX są VeriSign (www.verisign.com) oraz Thawte (www.thawte.com).
  • 26. 278 Hack Proofing Your Web Applications. Edycja polska Oferta darmowych usług związanych ze stemplami czasowymi firmy VeriSign pozwoli zaoszczędzić trochę pracy przy dbaniu o starszy kod. VeriSign pozwala korzystać ze swojego serwera stempli czasowych tak e klientom firmy Thawte. Istnieją dwie metody pozwalające na oznakowanie kontrolki jako bezpiecznej: ustawienia bezpieczeństwa kreatora pakietów i wersji dystrybucyjnych (Package and Deployment Wizard) w środowisku programistycznym lub implementacja interfejsu IObjectSafety. Główną zaletą interfejsu IObjectSafety jest mo liwość implementacji jednej wersji kontrolki, która zachowuje się bezpiecznie w pewnych okolicznościach i niebezpiecznie w innych. Kontrolka mo e programowo zmieniać tryby bezpieczeństwa, tak by dostosowywać się do sytuacji. W przeciwieństwie do innych metod oznakowywania kontrolek, sposób ten nie zale y od wpisów rejestru systemowego. Pytania i odpowiedzi Odpowiedzi na poni sze pytania, których udzielili autorzy niniejszej ksią ki, mają za zadanie sprawdzenie stopnia opanowania zagadnień przedstawionych w niniejszym rozdziale oraz pomóc w zastosowaniu tych koncepcji w codziennej praktyce. P: Czy, chcąc podpisać kontrolkę, muszę dokonać zakupu certyfikatu cyfrowego? O: Jeśli firma planuje udostępniać kontrolkę na zewnątrz, trzeba będzie zakupić od wybranego organu certyfikującego wa ny certyfikat. Jednak podczas testów, mo na skorzystać z narzędzi /CMGEGTVGZG i %GTV52%GZG, które stworzą certyfikat testowy. Narzędzia te wchodzą w skład pakietu ActiveX SDK. P: Moja firma posiada certyfikat serwera. Czy mo na go wykorzystać do podpisania kodu? O: Nie, nie da się podpisać kodu za pomocą certyfikatu serwera. Certyfikat serwera spełnia inną funkcję ni certyfikat słu ący do podpisywania kodu. Certyfikat serwera pozwala jedynie na bezpieczną transmisję danych pomiędzy serwerem a klientem. Certyfikat do podpisywania kodu lub identyfikator potwierdza, e oprogramowanie nie zostało zmodyfikowane od momentu sporządzenia podpisu. P: Czy istotna jest stosowana wersja Internet Explorera? O: Tak. Microsoft, wraz z kolejnymi wersjami IE (począwszy od wersji 3.0) publikował ró ne wersje narzędzi związanych z podpisami kontrolek. Nale y się upewnić, e wykorzystywana wersja przeglądarki jest właściwa. P: Czy mój nowy certyfikat mo e słu yć do podpisywania kontrolek na potrzeby IE 3.x? O: Nie. Wersja mechanizmu Authenticode wchodząca w skład przeglądarek IE 3.x nie obsługuje nowych certyfikatów.
  • 27. Rozdział 9. Tworzenie bezpiecznych sieciowych kontrolek ActiveX 279 P: Jakie są zalety opatrywania kontrolek stemplem czasowym? O: Stempel czasowy daje pewność, e kod będzie wa ny po zakończeniu okresu wa ności certyfikatu. W przypadku stosowania certyfikatu VeriSign usługa stempli czasowych jest bezpłatna i zapewnia, e w przypadku ostemplowania kontrolki stemplem czasowym nie trzeba martwić się o ponowne podpisywanie kodu w momencie, gdy okres wa ności certyfikatu dobiega końca. Dzięki stemplom czasowym u ytkownik będzie w stanie stwierdzić ró nicę pomiędzy kodem podpisanym za pomocą przeterminowanego certyfikatu, a kodem podpisanym certyfikatem, który był wa ny w momencie sporządzania podpisu. P: Posiadam certyfikat Thawte i chcę opatrzyć kod stemplem czasowym. Czy Thawte zapewnia stemple czasowe? O: Nie, jednak VeriSign pozwala klientom Thawte na korzystanie ze swojego serwera stempli czasowych. Aby dostać się do serwera, nale y w wierszu poleceń lub w polu serwera stempli czasowych kreatora podpisów cyfrowych wprowadzić po opcji -t adres http://timestamp.verisign.com/scripts/timstamp.dll. P: Czy mogę skorzystać z Authenticode dla apletów Javy? O: Tak, wystarczy aplety Javy umieścić w plikach CAB, a odwoływać się do nich z poziomu HTML-a za pomocą znacznika %#$$#5' (zamiast znacznika #4%*+8' stosowanego w przeglądarkach Netscape). P: W jaki sposób przetestować podpis po jego sporządzeniu? O: Korzysta się z narzędzia chktrust.exe wchodzącego w skład pakietu Microsoft ActiveX SDK. Pozwoli to zweryfikować wa ność podpisu przed rozpoczęciem dystrybucji kontrolki.