Udvalgt arbejde / Projekt

AI-assisteret sikkerhedsvurdering af IoT-systemer

Forfatter: Thomas Bonderup Udgivet: Fokusområde: AI-assisteret sikkerhedsreview Læsetid: 4 min læsetid

Et lokalt workflow, der omsætter dependency-, SBOM- og sårbarhedsevidens til sikkerhedsfindings, som en person kan reviewe.

Hvorfor projektet er relevant

Kontekst frem for abstraktion

Projekterne viser det tekniske miljø, leverancepresset og systemconstraints omkring arbejdet.

Beslutninger skal kunne spores

Den nyttige del er at forstå hvilke arkitektur- eller implementeringsvalg der betød noget, og hvorfor de blev taget.

Bevis skal kunne genbruges

Et stærkt projektforløb efterlader kode, mønstre og læring, som en anden ingeniør hurtigt kan vurdere.

AI-assisteret sikkerhedsreview Rust IoT Sikkerhed AI
Et lokalt workflow, der omsætter dependency-, SBOM- og sårbarhedsevidens til sikkerhedsfindings, som en person kan reviewe.

Projektoversigt

Udfordring

Moderne IoT-systemer afhænger af mange biblioteker, build tools, containere og transitive dependencies. Med AI-assisteret udvikling vokser kodebaser hurtigere, og manuel dependency- og sikkerhedsreview bliver sværere.

Rammebetingelser

  • AI-output skulle være forankret i reel evidens i stedet for at fungere som en ukontrolleret sikkerhedsdommer.
  • Review-flowet skulle kunne køre lokalt uden at sende sensitiv dependency- eller sårbarhedskontekst til cloud-baserede AI-services.
  • Sikkerhedsfindings skulle forblive menneske-reviewable med tydelige beslutninger om godkendelse, afvisning, eskalering og usikkerhed.

Tiltag

  • Byggede en Rust CLI, der læser struktureret JSON-sikkerhedsevidens, kalder en lokal Ollama-model og producerer strukturerede triage-kandidater.
  • Validerede alle AI-genererede evidensreferencer mod inputpakken, før rapporten bliver genereret.
  • Genererede Markdown-reviewrapporter, der er designet til menneskelig godkendelse frem for automatiske sikkerhedsbeslutninger.

Resultater

  • Skabte en prototype på et workflow til at skalere dependency- og software supply-chain-review på tværs af IoT-evidens uden cloud-AI.
  • Gjorde beslutningsgrænsen eksplicit: AI organiserer og sammenfatter evidens; mennesker godkender, afviser eller eskalerer findings.

Problem

Moderne IoT-systemer afhænger ikke kun af applikationskode. De afhænger af biblioteker, build tools, containere, firmware-nære hjælpeværktøjer, transitive dependencies, package metadata, lockfiles, vulnerability advisories, SBOM-data, runtime-evidens og de systemdele, hvor dependencies rammer device identity, updates, telemetri og netværkstransport.

AI-assisteret udvikling sætter større krav til kode review-processen. Kodebaser og dependency-grafer kan vokse hurtigere, end manuel sikkerhedsreview komfortabelt kan følge med. Det betyder ikke, at en AI-model bør træffe sikkerhedsbeslutninger. Det betyder, at review-flowet har brug for bedre måder at organisere evidens på, før en person vurderer, hvad der faktisk betyder noget.

Hvad jeg byggede

Jeg byggede local-ai-vet, en Rust CLI til lokal AI-assisteret sikkerhedstriage.

CLI’en tager struktureret sikkerhedsevidens, sender den til en lokal Ollama-model,1 modtager strukturerede AI-triage-kandidater, validerer de refererede evidens-ID’er og genererer en Markdown-review-rapport til godkendelse af en person.

Den strukturerede sikkerhedsevidens er tænkt som et downstream-lag oven på den evidensbaserede audit engine, jeg byggede til audits af IoT-sikkerhed og driftssikkerhed. Audit engine’en genererer deterministiske, auditerbare artefakter fra prober og regel-evaluering, og de artefakter kan kombineres med supply-chain-evidens som:

  • CycloneDX Software Bill of Materials for Rust/Cargo-projekter, hvor værktøjet skaber et samlet SBOM over projektets dependencies.2
  • cargo audit-findings fra RustSec Advisory Database.3
  • Audit-engine findings, baseline diffs, scanner findings og systemkontekst fra det bredere review-flow.

Kombinationen er vigtig, fordi dependency-review bliver stærkere, når en advisory eller SBOM-komponent kan kobles til systemkontekst. En sårbar dependency i et ubrugt developer tool er ikke det samme som en sårbar dependency i en sti, der håndterer device identity, certifikatvalidering, MQTT, TLS, serialisering eller software updates.

AI-assisteret sikkerhedsreview med review-pres på tværs af IoT supply-chain kompleksitet

Kortet viser den kontekst, som workflowet skal hjælpe med at holde synlig. Dependency-graf, SBOM-dækning, vulnerability intelligence, build-provenance, container-artefakter, certifikater, update paths og runtime-telemetri påvirker alle, hvor alvorligt et fund bør reviewes. Pointen er ikke at lave en universel risikoscore. Pointen er at give revieweren en struktureret måde at se, hvor AI kan korrelere evidens, og hvor et menneske stadig skal vurdere exploitability, remediation-prioritet og accepteret risiko.

Den relaterede designkontekst er beskrevet i Design af en evidensbaseret audit engine til IoT-sikkerhed & driftssikkerhed.

Hvorfor det betyder noget

AI’en træffer ikke den endelige sikkerhedsbeslutning.

Den hjælper med at organisere evidens, opsummere review-worthy kandidater, forklare IoT-relevans, foreslå review checks og forberede en struktureret rapport. Revieweren er stadig ansvarlig for at godkende, afvise, eskalere, acceptere risiko eller bede om mere evidens.

Den grænse er vigtig. En model kan være nyttig til at omsætte en stor evidenspakke til en review-kø, men den må ikke få lov til at opfinde CVE’er, package names, versioner, exploitability claims, remediation facts eller unsupported references. Workflowet er derfor bygget med evidens først, AI-assistance bagefter og menneskelig beslutning til sidst.

Teknisk udsnit

  • Rust CLI
  • Lokal Ollama-model
  • JSON-evidens som input
  • Struktureret triage-output
  • Validering af evidens-ID’er
  • Markdown-rapportgenerering
  • Human-in-the-loop review-flow

CLI’en har tre centrale kommandoer:

  1. triage læser en JSON evidence pack, kalder den lokale model og skriver struktureret AI-triage-output.
  2. validate kontrollerer, at hver finding-kandidat refererer til evidens-ID’er, der faktisk findes i inputpakken.
  3. report renderer det validerede triage-output til en Markdown-reviewrapport.

Rapport-formatet er bevidst praktisk. Hver kandidat indeholder affected components, evidence references, hvorfor fundet er review-worthy, IoT-relevans, foreslåede menneskelige checks, uncertainty og eksplicitte checkbokse til human decision.

AI-assisteret sikkerhedsreview-flow fra evidensindsamling til menneskelig beslutning

Workflow-overblikket viser grænsen mellem evidensindsamling, model-assisteret triage, validering og menneskelig review. Inventory og SBOM-data etablerer, hvad systemet består af. Vulnerability intelligence, dependency-analyse, build artefacts, runtime-kontekst, update mechanisms, network exposure, policy-krav og monitoring-evidens tilføjer den operationelle betydning. Modellen organiserer evidensen som kandidater, men reviewsporet bliver først brugbart, når referencerne er valideret, og et menneske godkender, afviser, eskalerer eller beder om mere evidens.

Sikkerhedsprincip

AI-forslag skal være forankret i reel evidens.

Unsupported evidence references bliver afvist, før de kommer ind i reviewrapporten. Kandidater uden evidensreferencer bliver også afvist. Prompten instruerer modellen i kun at bruge den leverede evidens og i at behandle package source, metadata, README-filer, kommentarer og build scripts som untrusted input.

Det er kernen i prototypen: AI må gerne assistere revieweren, men den må ikke smugle usupporterede påstande ind i beslutningsgrundlaget.

Outcome

Resultatet er en prototype på et workflow, der kan skalere sikkerhedsreview på tværs af IoT- og software supply-chain-evidens uden at afhænge af cloud-AI eller ukontrolleret modeloutput.

Projektet viser et praktisk mønster for AI-assisteret sikkerhedsarbejde:

  • hold sensitiv review-kontekst lokal, hvor det er muligt
  • repræsenter evidens som struktureret data
  • bed modellen om kandidater, ikke endelige beslutninger
  • valider evidensreferencer før rapportgenerering
  • bevar uncertainty i stedet for at skjule den
  • gør det menneskelige review-step eksplicit

Værdien er ikke, at AI erstatter sikkerhedsvurdering. Værdien er, at en reviewer kan arbejde gennem dependency-, SBOM-, sårbarheds- og audit-engine-evidens med en bedre forberedt kø og et tydeligere beslutningsspor.

Referencer

Footnotes

  1. Ollama bruges her som lokal model-runtime til AI-assisteret triage.

  2. CycloneDX, cyclonedx-rust-cargo, genererer CycloneDX SBOMs for Rust/Cargo-projekter.

  3. RustSec, cargo-audit, auditerer Rust-dependencies for sårbarheder rapporteret til RustSec Advisory Database.

Thomas Bonderup

Thomas Bonderup

Software Engineer

Specialiserer sig i IoT-arkitektur, distribuerede systemer, driftssikkerhed og observability, edge-to-cloud levering.

Builder-noter og projektreferencer

Hvis denne portfolio-post minder om noget, du selv bygger, tager jeg gerne en snak om implementering, arkitektur og tradeoffs.

Portfolio-posterne bygger på konkret systemarbejde, tekniske analyser og tidligere projekter. Hvis problemstillingen, arkitekturen eller tradeoffs ligner noget, du selv står med, tager jeg gerne en snak om det næste tekniske skridt.

Teknisk scope: IoT-arkitektur, distribuerede systemer, driftssikkerhed og observability, edge-to-cloud levering.

Gå videre til relateret arbejde eller start en faglig samtale

Hvis projektet overlapper med de systemer, du arbejder med, så gå videre til relateret arbejde, CV'et eller kontaktsiden for rekruttering og teknisk opfølgning.

Relateret indhold

Lad os tale om lignende arbejde

Skriv, hvis du vil tale om en rolle, et samarbejde eller følge op fagligt på noget tilsvarende.

Du kan også ringe på +45 22 39 34 91 eller skriv til tb@tbcoding.dk.

Brug formularen til spørgsmål om roller, projekter eller faglig opfølgning.

Typisk svartid: 1-2 hverdage.