1 Modelowanie zagrożeń Opracowali: dr inż. Maciej Miłostan 1,2, Gerard Frankowski2 1) Instytut Informatyki Politechniki Poznańskiej 2) Poznańskie Centrum Superkomputerowo-Sieciowe Na podstawie: IT Infrastructure Threat Modeling Guide, Solution Accelerators – Security and Compliance
2 Skrócone wprowadzenie do ITI TMSkrócona prezentacja dot. ITI TM (IT Infrastructure Threat Modeling) Oparta na IT Infrastructure Threat Modeling Guide, Solution Accelerators – Security and Compliance Cele procesu ITI TM Identyfikacja zagrożeń Model zagrożeń STRIDE Model oceny ryzyka DREAD Krótkie ćwiczenie Adresowanie zagrożeń Pełna wersja prezentacji:
3 OWASP o ITI TM OWASP recommends Microsoft’s threat modeling process because it works well for addressing the unique challenges facing web application security and is simple to learn and adopt by designers, developers, code reviewers, and the quality assurance team. Więcej: https://www.owasp.org/index.php/Threat_Risk_Modeling
4 Microsoft.com/SolutionAcceleratorsAgenda Wprowadzenie i główne cele Proces modelowania zagrożeń infrastruktury IT (z ang. ITI TM) Wizja Model Identyfikacja zagrożeń Środki zaradcze Walidacja Materiały szkoleniowe Microsoft.com/SolutionAccelerators
5 Microsoft.com/SolutionAcceleratorsCele ITI TM Kto? Kto powinien kierować procesem ITI TM? Kto powinien w tym procesie uczestniczyć? Co? Powtarzalny proces mający na celu pomoc w identyfikacji i adresowaniu zagrożeń bezpieczeństwa infrastruktury IT Kiedy? Im wcześniej zaczniemy modelowanie zagrożeń (TM), tym więcej czasu mamy na planowanie i środki zaradcze Najgorszym momentem jest czas w trakcie audytu lub po ataku Dlaczego? Jeśli my („good guys”) sami nie przeanalizujemy zagrożeń, to zapewne zrobią to inni z niekoniecznie dobrymi intencjami („bad guys”) Po to, by znaleźć błędy w istniejącym systemie, jeśli jeszcze (lub już) jest czas na ich usunięcie Wykryć problemy w projektowanym systemie na tyle wcześnie, aby można go było przeprojektować Microsoft.com/SolutionAccelerators
6 Microsoft.com/SolutionAcceleratorsCele ITI TM: Kto? Kto powinien kierować procesem ITI TM? Operatorzy systemów Inżynierowie systemowi Architekci systemów Zespół bezpieczeństwa Każda z powyższych grup może kierować procesem modelowania zagrożeń Kto powinien w tym procesie uczestniczyć? Zespoły operacyjne / implementacyjne Zespoły odpowiedzialne za produkt Pentesterzy Audytorzy Eksperci nie zorientowani na bezpieczeństwo Wszyscy powinni uczestniczyć, każda grupa ma coś do zaoferowania Microsoft.com/SolutionAccelerators
7 Microsoft.com/SolutionAcceleratorsCele ITI TM: Co? Analiza, dyskusja i dokumentacja zagadnień bezpieczeństwa w sposób ustrukturalizowany Przegląd i dokumentacja Komponenty / system jako całość Cechy/funkcje produktu związane z bezpieczeństwem Płaszczyzna ataku Upewnienie się, że proces modelowania zagrożeń (ITI TM) został wykonany dokładnie i starannie Microsoft.com/SolutionAccelerators
8 Microsoft.com/SolutionAcceleratorsCele ITI TM: Kiedy? Przed: Znajdź problemy przed przystąpieniem do implementacji, tak aby w implementacji uwzględnić wypracowane środki zaradcze W trakcie: Analiza bezpieczeństwa na bieżąco w trakcie implementacji może być uciążliwa i łatwo niektóre problemy przeoczyć Później (Za późno ;-) ): Modelowanie zagrożeń (ITI TM) wykonywane jako reakcja na zdarzenie Wystąpił (często udany) atak lub niepomyślny audyt Microsoft.com/SolutionAccelerators
9 Microsoft.com/SolutionAcceleratorsCele ITI TM: Dlaczego? Atakujący myśli inaczej Nie będziesz myśleć jak atakujący (każdy patrzy na system inaczej) Dla pewności, że istniejące systemy są bezpieczne Po to by znaleźć problemy bezpieczeństwa w trakcie fazy projektowania i implementacji Poprawić architekturę i wdrożenie Po to by zapewnić zgodność produktu z wymaganiami, zadbać o wysoki poziom bezpieczeństwa i jednocześnie zmieścić się w budżecie Microsoft.com/SolutionAccelerators
10 Microsoft.com/SolutionAcceleratorsKrok 1 procesu - Wizja Microsoft.com/SolutionAccelerators
11 Microsoft.com/SolutionAcceleratorsWizja Opracuj wizję każdego komponentu Gdzie komponent będzie wykorzystywany? Jak komponent będzie używany? Microsoft.com/SolutionAccelerators
12 Microsoft.com/SolutionAcceleratorsKrok 2 procesu: Model Microsoft.com/SolutionAccelerators
13 Różne poziomy diagramówDiagram 1 poziomu Wysoki poziom abstrakcji; pojedynczy komponent / scenariusz Diagram 2 poziomu Niższego poziomu; szczegóły komponentów podrzędnych i zależności Diagram 3 poziomu Znacznie bardziej szczegółowy Zwykle trzy poziomy wystarczają – wyjątek stanowią projekty dużej skali Microsoft.com/SolutionAccelerators
14 Microsoft.com/SolutionAcceleratorsDiagram 1 poziomu Scenariusz wysokiego poziomu (diagram kontekstowy) Microsoft.com/SolutionAccelerators
15 Microsoft.com/SolutionAcceleratorsDiagram 2 poziomu Niższego poziomu; szczegóły komponentów podrzędnych i zależności Microsoft.com/SolutionAccelerators
16 Microsoft.com/SolutionAcceleratorsDiagram 3 poziomu Bardziej szczegółowy; specyfika produktu, technologii i protokołu Microsoft.com/SolutionAccelerators
17 Microsoft.com/SolutionAcceleratorsTworzenie diagramów Rozpocznij od wysokiego poziomu abstrakcji Kilka zewnętrznych połączeń interaktywnych Jeden lub dwa procesy Jedno lub dwa miejsca przechowywania danych (opcjonalnie) Przepływy danych, żeby je połączyć Sprawdź wynik swojej pracy Czy diagram przedstawia „opowieść”/kontekst w sposób wystarczająco ogólny? Czy diagram odzwierciedla rzeczywistość? Przypisz etykiety wszystkim elementom na diagramie Microsoft.com/SolutionAccelerators
18 Tworzenie diagramów – ciąg dalszyUżyj diagramów przepływów danych (ang. data flow diagrams (DFDs)) Diagramy przepływów danych są jednym ze sposobów reprezentacji systemu Uwzględnij punkty wejście, procesy, magazyny danych, przepływy danych Zdefiniuj granice przywilejów (ang. trust boundaries) Diagram na scenariusz (takie podejście bywa pomocne) Zaktualizuj diagramy po zmianie w komponentach Wylistuj założenia i zależności Microsoft.com/SolutionAccelerators
19 Elementy diagramów - przykładyLudzie Inne systemy Komponenty Usługi Usługi sieciowe/ Web Services Ruch Sieciowy Zdalne wywołania procedur (RPC) Baza danych Plik Rejestr Pamięć współdzielona Kolejka/Stos Jednostka zewnętrzna Przepływ Danych Proces Magazyn danych Granice przywilejów Zapora, urządzenie brzegowe Granice procesów System plików Microsoft.com/SolutionAccelerators
20 Microsoft.com/SolutionAcceleratorsGranice przywilejów Każdy proces komunikujący się za pośrednictwem sieci zawsze posiada granice przywilejów (ang. trust boundary) Nawet w przypadku kanałów szyfrowanych wciąż możemy wyróżnić niezależne byty Szyfrowanie ruchu sieciowego jest „instynktownym” środkiem zaradczym, ale nie w pełni adresuje problem manipulacji (celowej modyfikacji) danych (ang. tampering) lub problem podszywania się (ang. spoofing) Zdefiniuj granice przywilejów, przecinające przepływy danych Zidentyfikuj punkty i płaszczyzny, w których atakujący może się podłączyć (ang. interject) Microsoft.com/SolutionAccelerators
21 Microsoft.com/SolutionAcceleratorsAnaliza diagramów Dokonaj analizy procesów i magazynów danych Dokonaj identyfikacji interakcji, które pomiędzy nimi zachodzą A co, jeśli konieczne jest dodatkowe uściślenie / identyfikacja komponentu? Zaznacz, że konieczne jest dalsze uściślenie, żeby w pełni wyjaśnić wpływ implementacji na bezpieczeństwo Wskaż, co przekracza granice przywilejów Słowa i zwroty takie jak „czasami”, „w niektórych przypadkach” oraz „także” oznaczają, że prawdopodobnie mamy do czynienia z połączeniem elementów, które może warto zdekomponować Microsoft.com/SolutionAccelerators
22 Tworzenie diagramów: analiza czy synteza?Strategia „top down” (od ogółu do szczegółu) Kontekst jest wyrażony na diagramie pierwszego poziomu Koncentruje się na systemie jako całości Strategia jest bardziej pracochłonna na początku Strategia „bottom up” (od szczegółu do ogółu) Eksperci znają funkcje komponentów Procesy nie są zaprojektowane w sposób ułatwiający syntezę Więcej pracy w skali całego projektu Jeśli czas pozwala, zastosuj obie strategie Microsoft.com/SolutionAccelerators
23 Standardy oceny diagramówCzy dane pojawiają się w sposób magiczny? Klient Zamówienie Potwierdzenie Baza danych SQL Serwer WWW Dane pochodzą od jednostek zewnętrznych lub z magazynów danych Microsoft.com/SolutionAccelerators
24 Standardy oceny diagramów – ciąg dalszyCzy są ujścia danych (ang. data sink)? transakcja Serwer WWW Baza danych SQL Raport dla działu HR Nie zapisujesz danych bez powodu; komuś są one potrzebne Microsoft.com/SolutionAccelerators
25 Standardy oceny diagramów – ciąg dalszyDane nie przepływają w sposób magiczny… Baza zwrotów Baza zamówień Baza zamówień Autoryzacja Zwrotu Towaru AZT Baza zwrotów …wymiana odbywa się poprzez procesy Microsoft.com/SolutionAccelerators
26 Krok 3 procesu: Identyfikacja ZagrożeńMicrosoft.com/SolutionAccelerators
27 Identyfikacja zagrożeńEksperci mogą przeprowadzić burzę mózgów, ale co w przypadku, gdy nie czujesz się ekspertem? Użyj metodyki STRIDE, żeby przeanalizować elementy diagramu Pomyśl w jaki sposób zagrożenia są manifestowane Threat/Zagrożenie Property/Właściwość Spoofing / Podszywanie się Authentication (Uwierzytelnianie) Tampering / Modyfikacja Integrity (Spójność) Repudiation / Zaprzeczenie Non-repudiation (Niezaprzeczalność) Information Disclosure / Ujawnienie informacji Confidentiality (Poufność) Denial of Service / Odmowa usługi Availability (Dostępność) Elevation of Privilege /Eskalacja przywilejów Authorization (Autoryzacja) Microsoft.com/SolutionAccelerators
28 Zrozumienie zagrożeń Zagrożenie (Threat) Właściwość (Property)Definicja Przykład Podszywanie się (Spoofing) Uwierzytelnianie (Authentication) Podszywanie się pod kogoś lub pod coś Udawanie, że jest się dyrektorem, albo witryną microsoft.com, lub biblioteki ntdll.dll. Modyfikacja (Tampering) Spójność, Integralność (Integrity) Modyfikacja danych lub kodu Modyfikacja pliku DLL na dysku lub innym nośniku pamięci, modyfikacja pakietu w trakcie przesyłu przez sieć LAN. Zaprzeczenie, wyparcie się (Repudiation) Niezaprzeczalność (Non-repudiation) Utrzymywanie, że nie wykonało się określonej akcji „Nie wysłałem tego a,” „To nie ja zmodyfikowałem plik,” „Mój drogi, ja z pewnością nie odwiedziłem tej strony!” Ujawnienie Informacji (Information Disclosure) Poufność (Confidentiality) Ekspozycja informacji w sposób umożliwiający ich zobaczenie przez osoby do tego nie uprawnione Umożliwienie komuś odczytu kodu źródłowego systemu Windows®; publikowanie listy klientów w witrynie internetowej. Odmowa Usługi (Denial of Service) Dostępność (Availability) Uniemożliwienie dostępu do usługi uprawnionym użytkownikom lub zdegradowanie poziomu ich obsługi Destabilizacja pracy systemu lub usługi sieciowej (np. portalu), rozsyłanie pakietów i zużywanie cennych sekund czasu procesora, lub przekierowywanie pakietów do czarnej dziury. Eskalacja przywilejów (Elevation of Privilege) Autoryzacja (Authorization) Uzyskiwanie możliwości działania bez właściwej autoryzacji Pozwalanie zdalnym nieuwierzytelnionym użytkownikom na wykonywanie kodu, uzyskanie uprawnień administratora przy korzystaniu z konta zwykłego użytkownika
29 Zrozumienie zagrożeń – ciąg dalszyRóżne rodzaje zagrożeń wpływają na każdy rodzaj elementów modelowanego systemu Element S T R I D E Jednostka zewnętrzna Proces Magazyn danych Przepływ danych
30 Metod DREAD – ocena ryzkaPięć składowych Damage potential (potencjalne uszkodzenia) Reproducibility (odtwarzalność) Exploitablity (możliwość wykorzystania) Affected users (użytkownicy, których dotyka) Discoverability (wykrywalność) Dla każdej składowej przyznajemy punkty ze zdefiniowanego przedziału np. [0-3] Miara oceny ryzyka jest średnią z ocen składowych Microsoft.com/SolutionAccelerators
31 Ćwiczenie Proszę ocenić następującą potencjalną podatność przy wykorzystaniu metodyki oceny ryzyka DREAD (skala 0-3): Damage potential (potencjalne uszkodzenia) Reproducibility (odtwarzalność) Exploitablity (możliwość wykorzystania) Affected users (użytkownicy, których dotyka) Discoverability (wykrywalność) Czas: 3 minuty Uwierzytelniony użytkownik w Aplikacji może załadować plik z treścią multimedialną. Nazwa pliku wyświetlana jest w aplikacji. Jeżeli przechwyci się żądanie HTTP i zmieni nazwę zbioru na zawierającą odpowiednio sformatowany fragment kodu JavaScript, istnieje możliwość kradzieży tokena sesji
32 Ćwiczenie – przykładowa odpowiedźPoszczególne oceny mogą się nieco różnić Proponowane ryzyka cząstkowe DREAD: Damage potential – 1 (można przejąć tożsamość użytkownika, ale tylko w aplikacji – zakładamy, że nie umożliwi to wykonania kodu) Reproducibility – 3 (można wywołać za każdym powtórzeniem) Exploitability – 2 (eksploitacja możliwa, jeśli uwierzytelniony użytkownik odwiedzi konkretną podstronę z treścią, co jest prawdopodobne, ale nie musi zdarzyć się za każdym razem) Affected users – 2 (dotyka wszystkich uwierzytelnionych użytkowników, którzy odwiedzą podatną podstronę) Discoverability – 1 (podatność może zauważyć tylko uwierzytelniony użytkownik o złośliwych intencjach – konieczne użycie HTTP proxy) Ogólna ocena: 1,8 / 3 (podatność średnio krytyczna)
33 Krok 4 procesu: propozycja środków zaradczych – adresowanie zagrożeńMicrosoft.com/SolutionAccelerators
34 Microsoft.com/SolutionAcceleratorsPropozycja środków zaradczych: kluczowy punkt procesu modelowania zagrożeń Adresowanie lub łagodzenie zagrożenia Ochrona zasobów Implementacja zabezpieczonych systemów Po co w ogóle zajmować się modelowaniem zagrożeń, jeśli nie chcemy szukać środków zaradczych? Znajdź problemy i je zaadresuj Microsoft.com/SolutionAccelerators
35 Jak adresować zagrożenia?Cztery sposoby adresowania zagrożeń: Przeprojektuj, by wyeliminować Zastosuj standardowe techniki/środki zaradcze Stwórz (wymyśl) nowe techniki/środki zaradcze (bardziej ryzykowne) Zaakceptuj lukę w architekturze lub implementacji Upewnij się, że zaadresowano każde wykryte zagrożenie Microsoft.com/SolutionAccelerators
36 Przykładowe środki zaradcze*Podszywanie się (Spoofing) Uwierzytelnianie (Authentication) Uwierzytelnianie podstawowe (Basic authentication) Uwierzytelnianie w oparciu o funkcje skrótu (Digest authentication) Uwierzytelnianie w oparciu o „ciasteczka” (Cookie authentication) Uwierzytelnianie oparte o mechanizmy Windows (Windows authentication (NTLM)) Uwierzytelnianie przy wykorzystaniu systemu Kerberos (Kerberos authentication) Systemy oparte o infrastrukturę klucza publicznego (PKI systems such as SSL/TLS and certificates) Certyfikaty cyfrowe (Digital signatures) Funkcje hashowe (Hashes) Modyfikacja (Tampering) Integralność (Integrity) Listy kontroli dostępu (ACLs) Podpisy cyfrowe (Digital signatures) Kod uwierzytelniania wiadomości (Message Authentication Codes) Zaprzeczenie (Repudiation) Niezaprzeczalność (Non Repudiation) Silne mechanizmy uwierzytelniania (Strong Authentication) Bezpieczne logowanie i audyty (Secure logging and auditing) Podpisy cyfrowe (Digital Signatures) Bezpieczne znaczniki czasowe (Secure time stamps) Wykorzystanie zaufanych stron trzecich (Trusted third parties) * Lista nie wyczerpuje wszystkich możliwości
37 Przykładowe środki zaradcze* - cd.Ujawnienie informacji (Information Disclosure) Poufność (Confidentiality) Szyfrowanie (Encryption) Listy kontrolne (ACLS) Odmowa Usługi (Denial of Service) Dostępność (Availability) Filtrowanie (Filtering) Kwoty (Quotas) Uwierzytelnianie (Authorization) Architektura wysokodostępna (High availability designs) Eskalacja przywilejów (Elevation of privilege) Autoryzacja (Authorization) Listy kontrolne (ACLs) Grupy i role (Group or role membership) Własność przywilejów (Privilege ownership) Uprawnienie (Permissions) Weryfikacja wejścia (Input validation) * Lista nie wyczerpuje wszystkich możliwości Microsoft.com/SolutionAccelerators
38 Tworzenie (ang. inventing) nowych środków zaradczych jest trudneŚrodki zaradcze leżą w zakresie dziedzin eksperckich takich jak: sieci komputerowe, systemy baz danych, kryptografia Amatorzy popełniają błędy i profesjonaliści też Niewłaściwe rozwiązania będą uważane za poprawnie funkcjonujące dopóty, dopóki: Nie spojrzy na nie ekspert… … i ekspert będzie po Twojej stronie Kiedy musisz zaproponować nowe rozwiązanie wykrytego problemu, to: Uzyskaj pomoc eksperta Upewnij się, że dobrze przetestowałeś proponowane rozwiązanie Microsoft.com/SolutionAccelerators
39 Krok 5 procesu: walidacjaMicrosoft.com/SolutionAccelerators
40 Microsoft.com/SolutionAcceleratorsWalidacja procesu Dokonaj walidacji całego procesu modelowania zagrożeń Czy diagram odpowiada implementacji? Czy wszystkie znane zagrożenia zostały wymienione? Minimum: metodyka STRIDE została zastosowana dla każdego elementu, który „dotyka” granicy przywilejów Czy model został zweryfikowany w fazie testów? Podejście testowe często znajduje problemy w modelu zagrożeń lub szczegółach Czy każde zagrożenie zostało zaadresowane? Czy zaadresowano je we właściwy sposób? Czy zastosowane środki zaradcze zostały przetestowane? Microsoft.com/SolutionAccelerators
41 Walidacja zagrożeń i środkówZagrożenia Przegląd ataku Przegląd kontekstu Przegląd skutków Środki zaradcze Powiązanie z zagrożeniami Opis metody adresującej zagrożenie Przypisanie etykiety do środka zaradczego/metody adresującej zagrożenie (dokumentacja!) Bezpieczeństwo / testy penetracyjne są elementem taktyki, a nie środkiem zaradczym Microsoft.com/SolutionAccelerators
42 Walidacja uchwyconych informacjiZależności Jakie inne komponenty współpracują ze sobą? Jakie funkcje bezpieczeństwa są w tych innych komponentach? Jesteś pewien? Założenia Rzeczy, które zanotowałeś w trakcie procesu modelowania zagrożeń Microsoft.com/SolutionAccelerators
43 Przykładowe środki zaradczeHasła / Polityki nieaktywności Środek (ang. mitigation) #1: Urządzenia mobilne muszą być chronione hasłem / blokowane i licznik czasu nieaktywności musi wykorzystywany do automatycznego blokowania urządzenia Środek #2: Magazyn danych na urządzeniu musi być szyfrowany Środek #3: Zdalne wymazanie (możliwość skasowania ze zdalnej lokalizacji wszystkich danych na urządzeniu mobilnym) musi być dostępne. Microsoft.com/SolutionAccelerators
44 Modelowanie zagrożeń – organizacja efektywnych spotkańZacznijcie od przeglądu diagramów przepływów (DFD) Zidentyfikujcie najbardziej interesujące komponenty Istotne zasoby (aktywa) Punkty wejścia / granice przywilejów Zastosuj STRIDE do tych zagrożeń, które przekraczają granice komponentów / powtórz ten krok Rozważ standardy Microsoft.com/SolutionAccelerators
45 Materiały szkolenioweArtykuł MSDN® “Uncover Security Design Flaws Using The STRIDE Approach” Microsoft Security Risk Management Guide Modelowanie zagrożeń/Threat Modeling, książka autorstwa Franka Swiderskiego i Windowa Snydera, 2004 (dostępna w języku polskim i angielskim) Microsoft Operations Framework (MOF) 4.0 Microsoft.com/SolutionAccelerators
46 Do dzieła / Call to ActionModeluj zagrożenia Twojej infrastruktury IT! Zacznij wcześnie Śledź zmiany Dyskutuj „zależności” i założenia bezpieczeństwa z odpowiednimi zespołami Pogłębiaj wiedzę Książki, kursy online, artykuły MSDN Microsoft.com/SolutionAccelerators
47 „Niekończąca się opowieść”Zapewnianie bezpieczeństwa jest nigdy nie kończącym się procesem Proces biegnie cyklicznie nawet wtedy, gdy implementacja komponentu lub systemu uzyskała status produkcyjny Zadbaj o to, by Diagramy odwzorowywały implementacje Zagrożenia i środki zaradcze zostały zidentyfikowane dla wszystkich elementów na diagramach Środki zaradcze były walidowane poprzez kontrolę jakości i testy Microsoft.com/SolutionAccelerators
48 Microsoft.com/SolutionAcceleratorsCopyright © 2009 Microsoft Corporation. All rights reserved. Complying with the applicable copyright laws is your responsibility. By using or providing feedback on this documentation, you agree to the license agreement below. If you are using this documentation solely for non-commercial purposes internally within YOUR company or organization, then this documentation is licensed to you under the Creative Commons Attribution-NonCommercial License. To view a copy of this license, visit or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA. This documentation is provided to you for informational purposes only, and is provided to you entirely "AS IS". Your use of the documentation cannot be understood as substituting for customized service and information that might be developed by Microsoft Corporation for a particular user based upon that user’s particular environment. To the extent permitted by law, MICROSOFT MAKES NO WARRANTY OF ANY KIND, DISCLAIMS ALL EXPRESS, IMPLIED AND STATUTORY WARRANTIES, AND ASSUMES NO LIABILITY TO YOU FOR ANY DAMAGES OF ANY TYPE IN CONNECTION WITH THESE MATERIALS OR ANY INTELLECTUAL PROPERTY IN THEM. Microsoft may have patents, patent applications, trademarks, or other intellectual property rights covering subject matter within this documentation. Except as provided in a separate agreement from Microsoft, your use of this document does not give you any license to these patents, trademarks or other intellectual property. Information in this document, including URL and other Internet Web site references, is subject to change without notice. Unless otherwise noted, the example companies, organizations, products, domain names, addresses, logos, people, places and events depicted herein are fictitious. Microsoft, ActiveSync, MSDN, Windows, and Windows Mobile are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries. The names of actual companies and products mentioned herein may be the trademarks of their respective owners. You have no obligation to give Microsoft any suggestions, comments or other feedback ("Feedback") relating to the documentation. However, if you do provide any Feedback to Microsoft then you provide to Microsoft, without charge, the right to use, share and commercialize your Feedback in any way and for any purpose. You also give to third parties, without charge, any patent rights needed for their products, technologies and services to use or interface with any specific parts of a Microsoft software or service that includes the Feedback. You will not give Feedback that is subject to a license that requires Microsoft to license its software or documentation to third parties because we include your Feedback in them. Microsoft.com/SolutionAccelerators