Na naszych warsztatach z modelowania zagrożeń (ang. threat modeling) jedno pytanie wraca jak bumerang: „A jakiego narzędzia powinniśmy używać?”. Czasem pada też w drugiej wersji: „A jakiego narzędzia używają inni?”.
Na warsztacie przedstawiamy kilka narzędzi, ale wyboru nie narzucamy, bo to nie my będziemy z nim potem żyć. Jeśli nie odpowiadamy w organizacji za wdrożenie i projekt procesu, możemy najwyżej podpowiedzieć, w którą stronę sami byśmy poszli. I właśnie tym jest ten artykuł: naszą podpowiedzią, z werdyktami z wdrożeń.
Jedno ustalmy od razu, bo rynek chętnie sugeruje co innego. Modelowanie zagrożeń to nie jest coś, co się kupuje i instaluje. Narzędzie skaluje proces, ale go nie zastąpi. A jeśli procesu nie ma, narzędzie wyskaluje jego brak; pisaliśmy o tym przy okazji procesu modelowania zagrożeń. Dlatego wybór narzędzia to jedna z ostatnich decyzji w budowaniu praktyki, nie pierwsza.
Plan artykułu jest taki: najpierw kryteria wyboru, potem przegląd narzędzi z werdyktami (od tablicy, przez draw.io, po platformy komercyjne), a na końcu gotowe zestawy na 4 typowe scenariusze. Zapraszamy do lektury.
Zanim porównasz narzędzia, ustal, do czego mają służyć
Kiedy budowaliśmy proces modelowania zagrożeń w dużej instytucji finansowej, spisaliśmy sobie listę kryteriów wyboru narzędzia. Jakiś czas później trafiliśmy na taksonomię narzędzi z pracy IEEE z 2022 roku. Okazało się, że to zasadniczo ta sama lista. Skoro 2 niezależne drogi prowadzą do tych samych pytań, warto je zadać i u siebie:
- Forma modelu. Diagram, tekst czy kod? Forma musi pasować do notacji, którą zespół zna; samą notację rozkładamy przy diagramie przepływu danych.
- Reużywalność. Czy model da się wersjonować, kopiować między zespołami i aktualizować po zmianie architektury?
- Biblioteka zagrożeń w środku. Czy narzędzie podpowiada zagrożenia, czy jest pustą kartką? Co konkretnie może podpowiadać i na jakim poziomie, sprawdzisz w tekście o bibliotekach ataków.
- Sugestie mitygacji. Czy narzędzie mówi też, co z zagrożeniem zrobić, czy tylko je kataloguje?
- Integracja z SDLC. Czy wynik trafia do backloga, czy umiera w narzędziu? Na koniec dnia liczą się akcje w backlogu, nie ładny katalog.
A nad tym wszystkim stoi jedno kryterium nadrzędne: czy zespół będzie w tym narzędziu ŻYŁ. Artefakty muszą mieszkać tam, gdzie organizacja realnie na to pozwala. W tym samym wdrożeniu wybraliśmy MS Whiteboard zamiast „lepszego” Miro z jednego powodu: był sankcjonowany, więc modele nie stały się shadow IT.
Od razu zastrzegamy: nie będziemy niżej punktować narzędzi tą listą. Taka ocena ma sens dopiero w konkretnej organizacji, przy jej poziomach i jej procesie. Potraktuj listę jako pomoc we własnej decyzji, a nasze werdykty jako doświadczenie z boju, nie ranking.
Najlepsze narzędzie to to, w którym zespół zostanie po trzeciej sesji.
Poziom zero: tablica, karteczki i aparat
Zacznijmy od odpowiedzi, która rozczarowuje na warsztatach, a wygrywa w praktyce. Sesja modelowania zagrożeń nie potrzebuje żadnego softu. Wystarczy tablica (fizyczna albo online’owa), karteczki i aparat w telefonie. Jak poprowadzić na tym pełną sesję, pokazujemy w przewodniku po sesji krok po kroku. A zdjęcie tablicy to pełnoprawny model zagrożeń na poziomie aplikacji, bo forma artefaktu zależy od poziomu, nie od ambicji.
Kiedy tablica wygrywa? Przez pierwsze miesiące praktyki, gdy zespół siedzi w jednym pokoju albo na jednym boardzie i modeluje aplikację czy pojedyncze funkcjonalności. Kiedy przestaje wystarczać? Gdy zespołów robi się więcej i potrzebna jest wspólna notacja, gdy model trzeba wersjonować, gdy audytor pyta o rejestr modeli.
Że prostota skaluje się dalej, niż myślisz, pokazuje GitLab. Ich proces modelowania zagrożeń, zbudowany na bazie metodyki PASTA, trzyma modele w zwykłych plikach markdown w repozytorium: prostota ponad wyszukane diagramy, świadomie i na skalę całej firmy.
Tablica to nie brak narzędzia, tylko narzędzie z najniższym progiem wejścia, jakie istnieje.
draw.io: nasz wybór
Gdy tablica przestaje wystarczać, naszym domyślnym wyborem jest draw.io (formalnie: diagrams.net). Powody są 3 i wszystkie są prozaiczne. Po pierwsze: w polskich organizacjach ludzie po prostu z niego korzystają, choćby do diagramów architektury i innych projektów, więc nie wprowadzasz nowego narzędzia, tylko nowy szablon do znanego. Po drugie: ma gotowy szablon DFD i threat modelingu. Po trzecie: model żyje jako plik, więc dokładasz go do repozytorium aplikacji albo do dokumentacji systemu na Confluence i wersjonujesz razem z resztą wiedzy o systemie.
Na marginesie, bo w większych organizacjach ten wątek wraca: w Polsce spotkasz też Enterprise Architecta, popularne narzędzie do rysowania architektury, które ma również klocki do modelowania zagrożeń. Z naszej praktyki: do tej roboty jest zbyt toporny. A w wielu organizacjach, które go kupiły, realnie nie jest używany nawet do architektury. Draw.io widzieliśmy stosowany naprawdę, nie tylko na papierze. I to przesądza.
Draw.io wygrywa nie funkcjami, tylko tym, że już jest w organizacji, a model w pliku żyje przy systemie.
Popularne w poradnikach, u nas odradzane: Threat Dragon i MS TMT
Pora na 2 narzędzia, które znajdziesz w niemal każdym poradniku „jak zacząć threat modeling”, po polsku i po angielsku. Wymienia je nawet GitHub we wpisie o tym, jak sam modeluje zagrożenia. Właśnie dlatego jesteśmy Ci winni jasny werdykt.
OWASP Threat Dragon to open source’owy edytor diagramów zagrożeń. Brzmi dobrze, ale z naszej perspektywy nie daje nic ponad to, co draw.io, a dokłada złożoności i toporności. Całość sprawia wrażenie projektu, który bardziej istnieje, niż realnie służy zespołom. Odradzamy. Skoro i tak modelujesz na diagramie, zrób to w narzędziu, które organizacja już zna.
Microsoft Threat Modeling Tool (TMT) jest ciekawszy. To darmowe narzędzie z ekosystemu Microsoftu. Model budujesz od zera na wbudowanych stencilach (gotowych klockach): domyślnie są tam zestawy dla Azure i Windowsa oraz kilka bardziej generycznych. Po rozrysowaniu systemu narzędzie GENERUJE listę zagrożeń wynikających z użytych komponentów, w logice STRIDE. Własną bibliotekę stencili teoretycznie da się dobudować, ale nikt tego nie robi, bo dokłada złożoności: najpierw przy budowie, potem przy utrzymaniu. Częściowa automatyzacja robi wrażenie. Są jednak 2 „ale”: TMT wymaga Windowsa, a przede wszystkim jest toporny. Mnóstwo poradników go poleca, ale ani razu nie widzieliśmy, żeby jakiś zespół używał go zwinnie i z realnym pożytkiem.
Jest jeden uczciwy wyjątek: compliance. Jeśli Twoim głównym celem jest POSIADANIE modeli zagrożeń, bo wymaga ich audyt, TMT zrobi robotę. Rozrysowujesz system, generujesz model, odkładasz do dokumentacji i przy zewnętrznym audycie pokazujesz czarno-na-białym, że modele są. W każdym innym scenariuszu: raczej nie.
Popularność w poradnikach to nie werdykt z boju: oba narzędzia produkują artefakt, żadne nie buduje praktyki.
Threat modeling as code: pytm i Deciduous
Zespoły, które wszystko trzymają w repozytorium, mają trzecią drogę: model zagrożeń jako kod. Piszesz model tekstem, narzędzie generuje z niego diagramy i raporty, a całość wersjonujesz jak każdy inny kod. Model aplikacji żyje wtedy w repozytorium tej aplikacji i zmienia się razem z nią.
Warto tu znać 2 narzędzia, bo różnią się tym, co generują. pytm to klasyka: opisujesz system w Pythonie, a narzędzie generuje diagram z elementami i raport zagrożeń, czyli odpowiednik STRIDE stosowanego element po elemencie. Deciduous generuje co innego: drzewa ataków. A te, jak pokazaliśmy w tekście o metodach modelowania zagrożeń, są zasadniczo innym spojrzeniem na system. Ciekawe, że oba podejścia mają dziś swoje narzędzia oparte na kodzie. Istnieją też Threagile i Threatspec; odnotowujemy je bez werdyktu, bo nie znamy ich z boju.
Ceną za wersjonowanie jest krzywa uczenia, bo składni trzeba się nauczyć. Tyle że tu sporo zmieniły LLM-y: opisujesz system po ludzku, a model językowy ogarnia składnię za Ciebie. Można pójść o krok dalej i próbować utrzymywać model zagrożeń LLM-em na podstawie zmieniającej się architektury aplikacji. To wciąż podejście dla zespołów o inżynierskiej kulturze, ale próg wejścia właśnie zjechał w dół.
Model as code wygrywa tam, gdzie zespół już traktuje wszystko jako kod. I tylko tam.
Komercyjne: IriusRisk i spółka
Na końcu spektrum siedzą platformy komercyjne, z IriusRiskiem na czele. Myśl o nim jak o enterprise’owym rozwinięciu pomysłu z TMT: biblioteka setek zagrożeń, kwestionariusze, integracja z Jirą. Problem w tym, że rozwinięcie pomysłu oznacza też rozwinięcie jego wad.
Nasze doświadczenie z dużego wdrożenia jest jednoznaczne. IriusRisk może pasować do trybu globalnego, ale na pewno nie do iteracyjnego. Jest zamknięty w GUI i w praktyce wymusza obecność bezpiecznika przy każdej sesji, więc zespoły deweloperskie wyłączają się, zanim zobaczą wartość. Jest drogi; licencjonowanie per model przy skali dużej organizacji robi się realnie zaporowe. Jest trudny w utrzymaniu. A przede wszystkim jest skupiony na tym, żeby zbudować artefakt i móc się nim pochwalić, a nie na tym, żeby zespół zaczął myśleć o zagrożeniach na etapie projektowania. To zresztą wspólny mianownik TMT, Threat Dragona i IriusRiska: celem jest produkcja artefaktu, nie zmiana myślenia zespołu.
Kiedy platforma komercyjna ma sens? Duża organizacja, tryb globalny, twarde wymogi rejestru i compliance, osobny zespół bezpieczeństwa jako operator narzędzia.
Platforma komercyjna automatyzuje TWÓJ proces. Jeśli procesu nie ma, automatyzuje jego brak.
Zestawy na 4 scenariusze
Zbierzmy werdykty w gotowe zestawy:
- Mały zespół, start praktyki: tablica (fizyczna albo online’owa) plus aparat. Koniec zestawu. Niczego więcej nie potrzebujesz, dopóki praktyka nie okrzepnie.
- Zespoły z Security Championami, tryb iteracyjny: draw.io. Dostajesz wspólną notację między zespołami, różne spojrzenia na system i artefakt, który modyfikujesz przy okazji kolejnych sesji. Do tego biblioteka ataków dobrana do poziomu i technologii.
- Kultura inżynierska, wszystko jako kod: pytm albo Deciduous, zależnie od tego, czy zespół myśli diagramem z elementami, czy łańcuchami ataku.
- Enterprise, tryb globalny i compliance: MS TMT albo IriusRisk, ze świadomością ich celu (artefakt) i z operatorem po stronie bezpieczeństwa. Jest tu też opcja, którą łatwo przeoczyć: Deciduous. Drzewa ataków dla najbardziej krytycznych systemów, budowane w trybie globalnym, to naturalny sposób pracy tam, gdzie sięga się po cięższe metodyki w rodzaju PASTA.
Na koniec antywzorzec, który spina wszystkie 4 scenariusze: jedno narzędzie na wszystkie poziomy. Możesz tak zrobić, ale wtedy świadomie akceptujesz trade-offy, bo żadne pojedyncze narzędzie nie będzie idealne na każdym poziomie i dla każdej roli; dlaczego tak jest, tłumaczymy przy poziomach modelowania zagrożeń. Jak coś jest do wszystkiego, to jest do niczego.
Dobierz narzędzie do poziomu i kultury zespołu, nie odwrotnie.
Co robić, jak żyć?
Zbierzmy to w 5 praktycznych kroków:
- Zrób pierwszą sesję bez żadnego nowego narzędzia. Tablica, karteczki, aparat. Nic więcej.
- Daj artefaktom dom, który organizacja sankcjonuje. Lepszy sankcjonowany MS Whiteboard niż shadow IT w ładniejszym narzędziu.
- Po 2–3 sesjach dobierz narzędzie według kryteriów z początku tekstu. Dla większości zespołów wynik będzie brzmiał: draw.io.
- Platformę komercyjną rozważaj dopiero wtedy, gdy proces działa i dławi się skalą. Nie wcześniej.
- Nie kupuj narzędzia „na zachętę”. Zachętą jest wynik sesji w backlogu, nie nowa ikonka na pulpicie.
Bo narzędzie skaluje proces, ale go nie zastąpi: najpierw praktyka, potem software.
Damy Ci znać, gdy opublikujemy coś nowego.
Artykuł albo odcinek podcastu. Bez spamu. W każdej chwili możesz się wypisać.
Zapisując się, akceptujesz politykę prywatności.
Referencje i wzmianki: IEEE (2022) — taksonomia narzędzi do modelowania zagrożeń; GitHub — How we threat model (github.blog); GitLab — Creating a threat model that works for GitLab (about.gitlab.com); diagrams.net (draw.io); OWASP Threat Dragon; Microsoft Threat Modeling Tool; pytm (OWASP); Threagile; Threatspec; Deciduous (deciduous.app); IriusRisk.