Sztuka bezpiecznego programowania

Microsoft chce zwiększyć bezpieczeństwo całego ekosystemu aplikacji na platformę Windows udostępniając własne narzędzia do analizy kodu.

Microsoft chce zwiększyć bezpieczeństwo całego ekosystemu aplikacji na platformę Windows udostępniając własne narzędzia do analizy kodu.

Microsoft ogłosił kilka inicjatyw związanych z bezpieczeństwem oprogramowania. Firma zapowiada m.in., że w listopadzie br. bezpłatnie udostępni niezależnym programistom - wykorzystywane dotąd tylko wewnętrznie - narzędzia i metodologie umożliwiające tworzenie bezpieczniejszego kodu aplikacji. Są one oparte na doświadczeniach Microsoftu uzyskanych podczas rozwijania metodologii kontroli i tworzenia bezpiecznego kodu w tzw. procesie SDL (Security Development Lifecycle) przy wykorzystaniu narzędzi SDL Threat Modeling Tool 3.0 i SDL Optimization Model.

Balast powszechnej opinii

Do produktów Microsoftu przyklejona jest potoczna opinia, że oprogramowanie tej firmy zawiera tyle luk i błędów, iż stwarza wiele problemów związanych z bezpieczeństwem, dając pole do popisu dla włamywaczy i cyberprzestępców. Przedstawiciele firmy bronią się jednak udowadniając, że Microsoft jest jednym z największych producentów oprogramowania związanego z bezpieczeństwem systemów IT, a liczby mówiące o wykrytych lukach i błędach są względne i trzeba je odnosić do popularności aplikacji i systemów, a dodatkowo często winę ponoszą producenci aplikacji na platformę Windows, a nie sam Microsoft.

Obiektywnie trzeba przyznać, że w argumentacji Microsoft jest dużo racji, choć można też powiedzieć, że jeśli firma osiągnęła sukces tworząc dominujący obecnie na świecie ekosystem Windows, to jest również odpowiedzialna za jego bezpieczeństwo. Microsoft w pewnym sensie przyznaje rację takiej opinii udostępniając właśnie - chronione dotąd - metodologię i narzędzia SDL.

Siedem lat pracy

Sztuka bezpiecznego programowania

Jak firmy dbają o bezpieczeństwo kodu aplikacji

Bezpieczeństwo oprogramowania Microsoft zaczął traktować poważnie w 2001 r., po serii głośnych ataków na systemy informatyczne. Na początku 2002 r. Bill Gates ogłosił tzw. Trustworthy Computing Initiative. Program miał na celu zwiększenie bezpieczeństwa aplikacji przez ulepszenie procesów tworzenia ich kodu. Dwa lata później pojawiła się pierwsza wersja metodologii SDL (Security Development Lifecycle) określającej podstawowe elementy procesu tworzenia aplikacji i procedury, których przestrzeganie ma zapewnić wysoką jakość i bezpieczeństwo kodu.

Jak mówi Steve Lipner, dyrektor programu Trustworthy Computing Group i współtwórca metodyki SDL, techniki zapewniające tworzenie bezpiecznego kodu były stopniowo wdrażane we wszystkich działach firmy i wkrótce pojawiły się namacalne efekty. W pierwszej połowie 2007 r. udział oprogramowania Microsoft w całkowitej liczbie ujawnionych luk bezpieczeństwa spadł blisko o połowę w porównaniu do podobnego okresu roku 2006 (z 4,2% do 2,5%).

Te liczby - przynajmniej w powszechnej opinii użytkowników - niewiele pomogły jednak firmie w poprawie jej wizerunku związanego z bezpieczeństwem. "Zdaliśmy sobie sprawę, że realna poprawa bezpieczeństwa kodu dotyczy tylko nas, a jakość aplikacji tworzonych przez niezależnych programistów wcale nie jest lepsza. Jeśli więc ktoś korzysta z aplikacji innej firmy, ale oprogramowanie to działa na platformie Windows, to wciąż traktujemy go jak naszego klienta i chcemy, aby czuł się bezpieczny" - mówi Steve Lipner.

Stąd też powstał pomysł, aby bezpłatnie udostępnić wykorzystywane dotąd tylko w Microsoft narzędzia i doświadczenia. "I nie jest to żaden altruizm z naszej strony, lecz przekonanie, że Internet powinien być bardziej bezpieczny, bo wówczas bardziej zadowoleni będą również nasi klienci, którzy oczywiście używają nie tylko oprogramowania Microsoftu" - dodaje.

Narzędzia SDL

SDL to próba zdefiniowania formalnego procesu budowy bezpiecznych aplikacji, zgodnie ze znanymi obecnie zasadami dobrych praktyk, mechanizmów zapewniających ich przestrzeganie oraz narzędzi wspomagających analizę kodu pod względem jego bezpieczeństwa. Będące elementem SDL narzędzie Threat Modeling Tool 3.0 ma długą historię. Po raz pierwszy pojawiło się ono już w 1998 r., a obecnie jest to już jego ósma wersja wykorzystywana wewnętrznie w Microsoft. Jej opracowanie zajęło ponad rok, a oprogramowanie zostało tak zmodyfikowane, aby mogło być użyteczne dla programistów, którzy nie są specjalistami w dziedzinie bezpieczeństwa kodu.

Modelowanie zagrożeń koncentruje się na technikach ataków i opiera na tym, w jaki sposób włamywacz myśli i planuje swoje działania. Tego typu podejście jest obce dla typowego inżyniera tworzącego oprogramowanie. Trudno od niego żądać, by myślał jak włamywacz. Dlatego narzędzie powinno ułatwiać mu zadanie dostarczając informacji, jakie elementy kodu powodują potencjalne zagrożenie. Tego typu założenie było podstawą przy opracowywaniu narzędzia Threat Modeling Tool, które zostało wyposażone w przewodniki dotyczące procesu projektowania bezpiecznego kodu i zestaw porad praktycznych. W efekcie narzędzie to ma więc również funkcję szkoleniową. "Prezentuje programistom, jaki wpływ na bezpieczeństwo ma ich projekt i daje szansę zdobycia wiedzy na temat potencjalnych zagrożeń w sensie szerszym niż tylko same luki w kodzie" - mówi Adam Shostack z Security Development Lifecycle Team.

SDL Threat Modeling Tool 3.0 można wykorzystać przy tworzeniu nowych aplikacji, ale też do analizy kodu już istniejącego oprogramowania. Narzędzie pozwala m.in. na wykrywanie fragmentów kodu podatnych na ataki typu cross-scripting w aplikacjach AJAX oraz prezentację diagramów ilustrujących przepływ danych. Oprogramowanie ma być dostępne w listopadzie na stronie Microsoft Developer Network.

Drugim narzędziem, które Microsoft zamierza bezpłatnie udostępnić jest SDL Optimization Model. "W zasadzie jest to środowisko typu framework umożliwiające analizę procesu projektowania i jego ocenę pod kątem bezpieczeństwa oraz jakości kodu" - mówi Steve Lipner. Umożliwia ono samodzielną ocenę jakości procedur wpływających na bezpieczeństwo tworzonego oprogramowania. Trzecim elementem nowej oferty Microsoft będzie zaś SDL Pro Network. Tym razem jest to płatna usługa konsultacyjna świadczona przez dziewięciu partnerów Microsoftu, a polegająca na analizie procesów projektowania aplikacji i wspomagania niezależnych producentów we wrażaniu tzw. najlepszych praktyk programowania. W listopadzie zostanie uruchomiona pilotowa jej wersja.

Przedstawiciele Microsoft przekonują, że udostępnienie tych wszystkich narzędzi leży w dobrze rozumianym interesie firmy. "Zależy nam na zwiększeniu bezpieczeństwa Internetu i ekosystemu Windows. Jeśli bowiem firmy wykorzystujące oprogramowanie działające na platformie Windows będą się czuły bardziej bezpieczne, będzie to dobre dla Microsoft z biznesowego punktu widzenia" - stwierdza Steve Lipner. Po pierwszej publicznej premierze tych narzędzi można oczekiwać kolejnych. Być może będą to programy niezależnych producentów lub też nowa wersja Threat Modeling Tool, m.in. wyposażona w mechanizmy analizy rozproszonej (fuzzing process).

Wczesny dostęp do poprawek

Microsoft wprowadza tzw. program MAPP (Microsoft Active Protections Program), który polega na udostępnianiu niektórym producentom oprogramowania i systemów do zabezpieczeń technicznych informacji o szczegółach dotyczących łat i poprawek, których publikację Microsoft dopiero przygotowuje. W efekcie firmy te będą mogły z wyprzedzeniem je przetestować pod kątem dobrej współpracy z ich rozwiązaniami i ewentualnie wprowadzić odpowiednie modyfikacje. Inicjatywa ta jest adresowana tylko do dużych firm sprzedających popularne, komercyjne oprogramowanie zabezpieczające dla systemu Windows, a wyłączeni są z niej np. producenci narzędzi do penetracyjnych analiz bezpieczeństwa systemów.

W ostatnich latach cyber-kryminaliści zaczęli korzystać z zaawansowanych narzędzi do analizy kodu nowych poprawek, które umożliwiają przygotowanie eksploitów nawet w ciągu kilku godzin. Dlatego wcześniejszy dostęp do informacji daje dodatkową przewagę producentom systemów zabezpieczeń. "Nawet jeśli nasza firma dostanie techniczne informacje o poprawkach na 24 godziny przed ich opublikowaniem, to jest to czas wystarczający do przygotowania i przetestowania odpowiedniego filtru" - mówi David Endler, dyrektor z TippingPoint.


TOP 200