Strategia zabezpieczeń WPF - projekt zabezpieczeń

Godne zaufania przetwarzanie to inicjatywa firmy Microsoft umożliwiająca zapewnienie produkcji bezpiecznego kodu. Kluczowym elementem inicjatywy Trustworthy Computing jest cykl projektowania zabezpieczeń firmy Microsoft (SDL). SDL to praktyka inżynieryjna używana w połączeniu ze standardowymi procesami inżynieryjnymi w celu ułatwienia dostarczania bezpiecznego kodu. SDL składa się z dziesięciu faz, które łączą najlepsze rozwiązania z formalizacją, miasurability i dodatkową strukturą, w tym:

  • Analiza projektu zabezpieczeń

  • Testy jakości oparte na narzędziach

  • Testy penetracyjne

  • Ostateczny przegląd zabezpieczeń

  • Po wydaniu zarządzanie zabezpieczeniami produktów

Specyfika WPF

Zespół inżynierów WPF stosuje i rozszerza SDL, co obejmuje następujące kluczowe aspekty:

Modelowanie zagrożeń

Narzędzia do analizy zabezpieczeń i edytowania

Techniki testowania

Krytyczne zarządzanie kodem

Modelowanie zagrożeń

Modelowanie zagrożeń jest podstawowym składnikiem języka SDL i służy do profilowania systemu w celu określenia potencjalnych luk w zabezpieczeniach. Po zidentyfikowaniu luk w zabezpieczeniach modelowanie zagrożeń zapewnia również zastosowanie odpowiednich środków zaradczych.

Na wysokim poziomie modelowanie zagrożeń obejmuje następujące kluczowe kroki przy użyciu sklepu spożywczego jako przykładu:

  1. Identyfikowanie zasobów. Aktywa sklepu spożywczego mogą obejmować pracowników, bezpieczne, kasy i zapasy.

  2. Wyliczanie punktów wejścia. Punkty wejścia sklepu spożywczego mogą obejmować przednie i tylne drzwi, okna, dok ładowania i klimatyzację.

  3. Badanie ataków na zasoby przy użyciu punktów wejścia. Jednym z możliwych ataków może być bezpieczny zasób sklepu spożywczego przez punkt wejścia klimatyzacji; urządzenie klimatyzacji może być unscrewed, aby umożliwić bezpieczne pociągnięcie przez niego i z sklepu.

Modelowanie zagrożeń jest stosowane w całym WPF i obejmuje następujące elementy:

  • Jak analizator XAML odczytuje pliki, mapuje tekst na odpowiednie klasy modelu obiektów i tworzy rzeczywisty kod.

  • Sposób tworzenia uchwytu okna (hWnd), wysyłania komunikatów i jest używany do renderowania zawartości okna.

  • Jak powiązanie danych uzyskuje zasoby i współdziała z systemem.

Te modele zagrożeń są ważne dla identyfikowania wymagań projektowych zabezpieczeń i ograniczania ryzyka zagrożeń podczas procesu programowania.

Narzędzia do analizy źródła i edytowania

Oprócz ręcznego przeglądu kodu zabezpieczeń elementów SDL zespół WPF używa kilku narzędzi do analizy źródła i skojarzonych edycji w celu zmniejszenia luk w zabezpieczeniach. Używany jest szeroki zakres narzędzi źródłowych i obejmuje następujące elementy:

  • FXCop: znajduje typowe problemy z zabezpieczeniami w kodzie zarządzanym, począwszy od reguł dziedziczenia po użycie zabezpieczeń dostępu do kodu, po sposób bezpiecznego współdziałania z kodem niezarządzanym. Zobacz FXCop.

  • Prefiks/Prefast: znajduje luki w zabezpieczeniach i typowe problemy z zabezpieczeniami w niezarządzanym kodzie, takie jak przekroczenia buforu, problemy z ciągami formatu i sprawdzanie błędów.

  • Zakazane interfejsy API: wyszukuje kod źródłowy w celu zidentyfikowania przypadkowego użycia funkcji, które są dobrze znane z powodowania problemów z zabezpieczeniami, takich jak strcpy. Po zidentyfikowaniu te funkcje są zastępowane alternatywami, które są bezpieczniejsze.

Techniki testowania

WPF używa różnych technik testowania zabezpieczeń, które obejmują:

  • Testowanie whitebox: Testerzy wyświetlają kod źródłowy, a następnie kompilują testy wykorzystujące luki w zabezpieczeniach.

  • Testowanie blackbox: testerzy próbują znaleźć luki w zabezpieczeniach, sprawdzając interfejs API i funkcje, a następnie próbują zaatakować produkt.

  • Regresja problemów z zabezpieczeniami z innych produktów: w stosownych przypadkach są testowane problemy z zabezpieczeniami powiązanych produktów. Na przykład zidentyfikowano odpowiednie warianty około sześciudziesiąt problemów z zabezpieczeniami dla programu Internet Explorer i próbowano zastosować je do platformy WPF.

  • Narzędzia oparte na testach penetracyjnych za pośrednictwem rozmywania plików: rozmycie plików to wykorzystanie zakresu danych wejściowych czytnika plików za pośrednictwem różnych danych wejściowych. Jednym z przykładów w WPF, w którym ta technika jest używana, jest sprawdzenie niepowodzenia w kodzie dekodowania obrazu.

Krytyczne zarządzanie kodem

W przypadku aplikacji przeglądarki XAML (XBAPs) platforma WPF tworzy piaskownicę zabezpieczeń przy użyciu obsługi platformy .NET Framework do oznaczania i śledzenia kodu krytycznego dla zabezpieczeń, który podnosi poziom uprawnień (zobacz Metodologia krytycznego zabezpieczeń w strategii zabezpieczeń WPF — zabezpieczenia platformy). Biorąc pod uwagę wymagania dotyczące wysokiej jakości zabezpieczeń kodu krytycznego dla zabezpieczeń, taki kod otrzymuje dodatkowy poziom kontroli zarządzania źródłami i inspekcji zabezpieczeń. Około 5% do 10% WPF składa się z kodu o znaczeniu krytycznym dla zabezpieczeń, który jest przeglądany przez dedykowany zespół ds. przeglądu. Kod źródłowy i proces ewidencjonowania jest zarządzany przez śledzenie kodu krytycznego dla zabezpieczeń i mapowanie każdej jednostki krytycznej (tj. metody zawierającej kod krytyczny) na stan wylogowania. Stan logowania zawiera nazwy co najmniej jednego recenzenta. Każda codzienna kompilacja WPF porównuje krytyczny kod z tym w poprzednich kompilacjach, aby sprawdzić, czy nie zostały zatwierdzone zmiany. Jeśli inżynier modyfikuje kod krytyczny bez zatwierdzenia od zespołu recenzowania, zostanie on zidentyfikowany i naprawiony natychmiast. Ten proces umożliwia stosowanie i konserwację szczególnie wysokiego poziomu kontroli nad kodem piaskownicy WPF.

Ostrzeżenie

XBAPs wymagają obsługi starszych przeglądarek, takich jak Internet Explorer i Firefox. Te starsze wersje przeglądarki są zwykle nieobsługiwane w systemach Windows 10 i Windows 11. Nowoczesne przeglądarki nie obsługują już technologii wymaganej dla aplikacji XBAP ze względu na zagrożenia bezpieczeństwa. Wtyczki obsługujące XBAPs nie są już obsługiwane.

Zobacz też