
Trusselsmodellering spørger, hvad der kan gå galt i et bestemt system, og hvad teamet bør gøre ved det. Det brugbare resultat er ikke et katalog over skræmmende muligheder. Det er et sæt design- og implementeringsbeslutninger knyttet til arkitekturen, med ejere og evidens for, at de valgte forsvarsmekanismer virker.
For en CTO er det centrale spørgsmål, om udviklingsorganisationen kan forklare, hvordan vigtige sikkerhedsegenskaber overlever systemets reelle adfærd: genforsøg, baggrundsjob, privilegerede supporthandlinger, nedbrud hos leverandører og ondsindet input. Et diagram gør de samtaler konkrete. En vedligeholdt trusselsmodel gør konklusionerne til leveranceopgaver.
OWASP's vejledning om trusselsmodellering giver et nyttigt fundament: forstå systemet, identificér trusler, beslut, hvordan der skal reageres, og vurder, om arbejdet er tilstrækkeligt. Arbejdsgangen nedenfor anvender den tankegang på tekniske beslutninger.
Begynd med en afgrænset funktionalitet, såsom kundeeksporter, betalingsinitiering eller enhedsopdateringer. At modellere en hel platform på én gang giver ofte overfladiske observationer, fordi ingen kan forklare alle afhængigheder tilstrækkeligt detaljeret.
Angiv aktiverne og sikkerhedsmålene i driftsmæssige termer. „Beskyt kundedata“ er for bredt. „En autentificeret bruger kan kun eksportere poster, der tilhører brugerens autoriserede tenant“ giver teamet en egenskab, der kan testes. Andre mål kan vedrøre transaktioners integritet, tjenestens tilgængelighed, genoprettelse eller henførbarhed af administrative handlinger.
Identificér brugere, tjenester, datalagre, eksterne afhængigheder, indgangspunkter og tillidsgrænser. Tegn de vigtige dataflows, herunder asynkron behandling og administrative veje. Markér flows med de data, de bærer, autentificeringsmekanismen og autorisationskonteksten, hvor det påvirker analysen.
En tillidsgrænse markerer en ændring i antagelser eller bemyndigelse, ikke nødvendigvis en netværksperimeter. En browser, der kalder en API, krydser én grænse. En delt worker, der handler på vegne af en kunde, krydser en anden, selv om begge tjenester kører i samme cluster.
For en multi-tenant-applikation skal I vise, hvor tenant-identiteten fastslås, og hvordan den når frem til autorisationskontroller, baggrundsjob og eksporter. Medtag tjenesteidentiteter, adgang til object storage, supportværktøjer og eksterne callbacks. Ellers kan diagrammet beskrive den lykkelige sti og udelade netop de veje, der mest sandsynligt omgår isoleringen.
Registrér antagelser adskilt fra fakta. „Køen kan ikke skrives af kunder“ kræver understøttende konfigurationsevidens. Ukendte forhold bør blive til undersøgelsesopgaver, ikke forsvarsmekanismer, der accepteres i stilhed.
En metode leverer spørgsmål og struktur. Den afgør ikke, hvilke trusler der betyder mest, beviser ikke, at et design er sikkert, og erstatter ikke viden om systemet.
STRIDE undersøger seks kategorier. Anvend dem på relevante komponenter, flows og grænser i stedet for at tvinge alle kategorier ned over hvert element i diagrammet.
| Kategori | Spørgsmål at stille | Eksempel i en tjeneste til kundeeksport |
|---|---|---|
| Spoofing | Kan en aktør udgive sig for en anden identitet? | Et callback hævder at komme fra en betroet udbyder. |
| Tampering | Kan data eller instruktioner ændres uden autorisation? | Tenant-identifikatoren i et job i køen bliver ændret. |
| Repudiation | Kan en vigtig handling mangle pålidelig henførbarhed? | En supporteksport har ingen henførbar registrering af godkendelse. |
| Information disclosure | Kan information nå en uautoriseret part? | Et downloadlink eksponerer en anden tenants eksport. |
| Denial of service | Kan en aktør opbruge ressourcer eller forstyrre tjenesten? | Gentagne eksporter lægger beslag på delte workers. |
| Elevation of privilege | Kan en aktør opnå større bemyndigelse? | En almindelig bruger kalder en eksport, der kun er for administratorer. |
Ét scenarie kan spænde over flere kategorier. Hold, hvor det er hensigtsmæssigt, én handlingsorienteret post i stedet for at oprette dublerede sager for at tilfredsstille taksonomien.
PASTA, Process for Attack Simulation and Threat Analysis, tilbyder en risikoorienteret tilgang i syv trin, der forbinder forretningsmål, teknisk scope, nedbrydning, trussels- og sårbarhedsanalyse, angrebsmodellering og risikohåndtering. Den passer til dybere analyser, hvor angriberens adfærd og de forretningsmæssige konsekvenser kræver eksplicit opmærksomhed.
Angrebstræer tager udgangspunkt i et angribermål og bryder det ned i alternative eller kombinerede ruter. For „skaf en anden tenants eksport“ kan alternativerne omfatte at omgå API-autorisationen, at forvirre workerens tenant-kontekst eller at stjæle en download-legitimation. AND-relationer repræsenterer betingelser, der skal være opfyldt samtidig; OR-relationer repræsenterer alternativer.
VAST, Visual, Agile, and Simple Threat modeling, lægger vægt på skalerbar modellering på tværs af applikations- og driftsperspektiver. Teams, der overvejer den, bør undersøge, om deres værktøjer og udviklingsproces kan vedligeholde disse visninger konsekvent.
En praktisk anbefaling til at komme i gang er et dataflowdiagram plus STRIDE, efterfulgt af et angrebstræ for det scenarie, der har størst konsekvens. Mere metodik er kun nyttig, når den forbedrer beslutningerne.
Saml de mennesker, der forstår implementering og drift: en udvikler, en arkitekt eller teknisk lead, en sikkerhedsgennemgåer og en person, der kender adfærden i produktion. Inddrag specialister i produkt, privacy eller leverandører, når deres viden påvirker scopet.
Send før mødet diagrammet, sikkerhedsmålene, relevant konfiguration og uafklarede antagelser rundt. Gennemgå under mødet én anmodning eller hændelse fra indgang til afslutning. Spørg, hvor identiteten skifter, hvor data persisteres, hvad der bliver forsøgt igen, og hvilken komponent der har bemyndigelse til at godkende en handling.
Skriv trusler som scenarier, ikke som etiketter. „Autorisationsproblem“ er ikke brugbart nok. En stærkere formulering er: „En autentificeret bruger udskifter eksportidentifikatoren med en anden tenants; download-endpointet kontrollerer login, men ikke ejerskab af objektet, og eksponerer dermed kundeposter.“
Adskil tre begreber:
En trussel kan være værd at undersøge, før en sårbarhed er bekræftet. Omvendt fastslår fundet af en svaghed ikke, at ethvert tænkeligt angreb er gennemførligt.
Medtag misbrug fra legitime brugere, privilegerede insidere, konfigurationsfejl og leverandørsvigt ved siden af eksterne angreb. Spørg, hvad der sker, når en afhængighed får timeout eller returnerer et uventet svar. Fail-open-adfærd og inkonsekvente genforsøg dukker ofte op i disse drøftelser.
Følgende eksempel er en illustration. Antag, at en SaaS-applikation har en browserklient, en API, en delt database, en jobkø, en eksport-worker og object storage. Tenant-brugere anmoder om CSV-eksporter; workeren genererer filerne, og API'en udsteder midlertidige downloadlinks. Supportadministratorer har en separat brugerflade til fejlfinding.
Sikkerhedsmålene er tenant-isolering, autoriseret igangsættelse af eksporter, begrænset ressourceforbrug og henførbare supporthandlinger. Antag, at workeren har så bred databaseadgang, at den kan betjene flere tenants. Det gør dens håndtering af tenant-kontekst til en central beslutning snarere end en mindre implementeringsdetalje.
I API'en knyttes den autentificerede principal til et tilladt tenant-medlemskab. En tenant-identifikator, som browseren leverer, er en anmodning om valg, ikke et bevis på autorisation. API'en kontrollerer medlemskab og eksportrettighed, før den opretter en uforanderlig jobpost, der indeholder den autoriserede tenant, anmoderen og det tilladte eksportscope.
Beskeden i køen henviser til den post. Workeren validerer jobbet og håndhæver tenant-afgrænset dataadgang, når den producerer eksporten. Metadata i storage knytter det resulterende objekt til jobbet og tenanten. Før API'en udsteder et downloadlink, kontrollerer den den aktuelle anmoders autorisation mod den tilknytning.
Dette design kræver stadig eksplicitte beslutninger om tilbagekaldelse af adgang: Skal en bruger, der mister sit medlemskab efter at have anmodet om en eksport, beholde adgangen til den færdige fil? Teamet skal definere den politik og implementere den konsekvent.
| Scenarie | Beslutning om håndtering | Evidens for verifikation |
|---|---|---|
| Brugeren udskifter identifikatoren med en anden tenants | Udled det tilladte scope fra serverside-medlemskab, og kontrollér ejerskab af objektet | Negative API-test med to tenants og flere roller |
| Workeren behandler en forkert tenant-kontekst | Validér job mod autoritative poster, og anvend tenant-afgrænsede forespørgsler | Worker-test med uoverensstemmende, manglende og fejlformateret kontekst |
| Downloadlinket slipper ud via logs eller supportsager | Hold legitimationsoplysninger ude af logs, og begræns linkets gyldighed i forhold til eksponeringen | Gennemgang af logning, test af linkudløb og gennemgang af adgangsveje |
| Én tenant oversvømmer eksportkøen | Anvend kvoter pr. tenant, grænser for samtidighed og begrænsninger på arbejdsbyrden | Belastningstest, der viser tjenestens adfærd ved misbrug |
| Supportmedarbejdere eksporterer data uden ansvarlighed | Kræv eksplicit privilegeret autorisation og henførbare hændelsesregistreringer | Rolletest og gennemgåede stikprøver af administrative hændelser |
Midlertidige links medfører et resterende eksponeringsvindue: Afhængigt af mekanismen kan besiddelse af linket give adgang indtil udløb. Teamet bør afgøre, om det er acceptabelt for de pågældende data, eller om downloads kræver et autentificeret mellemled med aktuelle autorisationskontroller.
Luk ikke modellen efter kun at have testet den synkrone API. Verificér forsinkede job, genforsøg, annullerede anmodninger, udløbet medlemskab, slettede tenants og delvise fejl. Et job, der forsøges igen, må for eksempel ikke genbruge et objekt, der er knyttet til en anden tenant, eller offentliggøre en ufuldstændig eksport som vellykket.
Det resulterende leverede resultat er en gennemgået arkitektur, et trusselsregister, implementeringsopgaver og tilknyttede verifikationsresultater. Det er ikke blot diagrammet.
Prioritér plausible scenarier ud fra eksponering, konsekvens, forudsætninger og eksisterende forsvarsmekanismer. Skeln mellem et direkte tilgængeligt autorisationssvigt og et scenarie, der kræver flere ubeviste kompromitteringer. Tag, hvor det er relevant, højde for berørte data, driftsforstyrrelser, økonomiske konsekvenser, sikkerhedsmæssige konsekvenser for mennesker og vanskeligheden ved genoprettelse.
Brug en enkel, konsekvent skala, hvis det hjælper teamet, men registrér begrundelsen bag vurderingen. En numerisk score med uforklarede input skaber falsk præcision. CVSS kan informere vurderingen af en konkret sårbarhed; den kan ikke erstatte forståelsen af den forretningsmæssige konsekvens eller et arkitektonisk misbrugsscenarie.
Valgene af håndtering omfatter at ændre designet, reducere eksponeringen, tilføje forebyggende eller detekterende kontroller, undlade funktionaliteten eller acceptere den resterende risiko. Leverandørkontrakter kan fordele ansvar, men de fjerner ikke tekniske fejlformer.
Restrisiko bør have en navngiven beslutningstager, en begrundelse, en udløbsdato eller en udløser for gennemgang og eventuelle driftsbetingelser. At udviklingsarbejdet er afsluttet, og at risikoen accepteres, er to forskellige beslutninger. En sag kan være lukket, mens der stadig er væsentlig risiko.
Registrér for hvert væsentligt scenarie dets identifikator, berørte komponenter, forudsætninger, konsekvens, eksisterende forsvarsmekanismer, håndtering, ejer og verifikationsmetode. Knyt posten til arkitekturversionen og det relevante implementeringsarbejde, så gennemgåere kan se, hvilket design der blev vurderet.
Omsæt håndteringer til testbare acceptkriterier. „Forbedr adgangskontrollen“ er vagt. „Tenant A kan ikke anmode om, forespørge på, annullere eller downloade Tenant B's eksport via noget understøttet endpoint“ identificerer en adfærd, som udviklingsteamet kan verificere.
Brug evidens, der passer til påstanden:
Ingen enkelt artefakt beviser hele modellen. Et skærmbillede af en indstilling beviser ikke, at alle workers bruger den, og en bestået test påviser ikke en utestet vej. Registrér testmiljø, scope, resultater og begrænsninger.
Trusselsmodellering supplerer sikker kodning, vurdering af afhængigheder, sårbarhedsscanning og penetrationstest. Dens særlige bidrag er arkitektonisk ræsonnement: Den kan afsløre en farlig fordeling af bemyndigelse, selv når de enkelte komponenter ikke har nogen kendt sårbarhed.
Et delt diagram og et struktureret register kan understøtte en fokuseret første gennemgang. Dedikerede værktøjer bliver nyttige, når teams har brug for genbrugelige komponentbiblioteker, konsekvente identifikatorer, samarbejde og pålidelige forbindelser mellem trusler og leveranceregistreringer.
Evaluer, om et værktøj understøtter tillidsgrænser, brugerdefinerede scenarier, versionshistorik, eksporterbare poster, ejerskab og henvisninger til evidens. Automatisk genererede trusler er spørgsmål, der skal undersøges, ikke bekræftede fund. Lange lister uden kontekst kan skjule de få beslutninger, der betyder noget.
AI-assistance kan udarbejde udkast til scenariebeskrivelser, foreslå manglende veje eller sammenligne ændringer med en tidligere model. Menneskelige gennemgåere skal stadig validere arkitektur, gennemførlighed, dækning af modforanstaltninger og restrisiko. Hold fortrolige diagrammer og legitimationsoplysninger ude af ikke-godkendte tjenester. Generering af trusselsmodeller er også noget andet end detektion under drift; at producere en model etablerer ikke kontinuerlig overvågning eller automatiseret afhjælpning.
Opdatér modellen ved nye integrationer, ændringer i autentificering, privilegerede handlinger, datakategorier, netværkseksponering og større ændringer i afhængigheder. En hændelse eller et uventet testresultat kan også ugyldiggøre en tidligere antagelse.
Forskellige systemer kræver forskellig vægtning. Cloudapplikationer kræver opmærksomhed på identitetsrettigheder og adgang til management-planet. Mobilklienter bør behandles som miljøer, angriberen kontrollerer, snarere end som betroede håndhævelsespunkter. Forbundne enheder medfører fysisk adgang, integritet i opdateringer, genoprettelse og potentielt konsekvenser for menneskers sikkerhed. AI-baserede funktioner tilføjer ubetroet indhold og grænser for værktøjsbrug; autorisationen skal begrænse handlinger uanset modellens output.
Mål, om vigtige flows har aktuelle modeller, om højt prioriterede håndteringer har evidens for verifikation, om antagelser stadig er uafklarede, og om accepterede risici har forsinkede gennemgange. At tælle trusler alene belønner mængde frem for brugbar analyse. Bed jævnligt en uafhængig gennemgåer om at udfordre ét kritisk scenarie og dets evidens.
Secani kan bevare arbejdsgangen omkring disse beslutninger ved at modellere relevante systemer og afhængigheder, tildele ejere og gennemgåere og forbinde evidens med krav, kontroller og beslutninger. Uafklarede antagelser bliver til opgaver; kildemateriale og menneskelige godkendelser forbliver knyttet til gennemgangen. Eventuelle AI-understøttede forslag bør kontrolleres før godkendelse.
Begynd med ét kritisk dataflow. Følg bemyndigelsen fra ende til anden, identificér en håndfuld plausible scenarier, og afslut med håndteringer, der har en ejer, og eksplicitte verifikationskriterier. Planlæg den næste gennemgang omkring de arkitekturændringer, der kan ugyldiggøre disse beslutninger.
Secani forbinder scopes, dokumentation, opgaver og AI-agenter i ét fælles arbejdsområde.
Forbind kritiske tjenester med genopretningsmål, afhængigheder, øvelser og korrigerende handlinger, så kontinuitetsplaner afspejler den faktiske evne.
Gennemgå identitet, eksponering, kryptering, genopretning og logning i skyen med dokumentation knyttet til de faktiske konti, tjenester og data.
Kombinér tilbagevendende tekniske kontroller og periodisk vurdering med klar dækning, sund indsamling, tærskler og ejerskab af opfølgning.