Den digitala leverantörskedjan är inte en enda kedja. Det är en uppsättning överlappande, ömsesidigt beroende kedjor som löper samtidigt genom varje teknikstack i världen. Lagren är olika till teknisk karaktär och tätt kopplade i sina beroenden, och en förändring i något av dem färdas vidare genom allt som byggts ovanpå det.
Vilket lager ett fynd ligger i avgör vad som kan göras åt det. Hur lagren samverkar är det som gav upphov till fyndet från början.
Stacken

Vem äger varje lager

En matris över de åtta lagren i den digitala leverantörskedjan. För varje lager: vem som ansvarar, vilket underlag som finns, och om det granskas rutinmässigt. Granskningskolumnen lyder sällan, nästan aldrig, delvis, vid integration, vid integration, sällan, nej och nej.
Struktur

Åtta lager ligger mellan en förfrågan och det en människa ser

Från kabeln i marken till bilden på skärmen. Varje lager är beroende av dem under sig, och vart och ett är en annan uppsättning parters ansvar, granskat enligt ett annat schema, av människor som sällan talar med varandra.

01

Nätverk och infrastruktur
Kabel, fiber, spektrum, satellit, routerutrustning och datahallarna som rymmer allt annat. Ovanför det fysiska ligger det logiska: namnsystemet som gör en adress till ett mål, routingprotokollet som väljer väg, och certifikatutfärdarna som varje säker förbindelse vilar på. En kapad väg eller ett bedrägligt utfärdat certifikat placerar en part i vägen som applikationen ovanför inte har något sätt att upptäcka. Hänglåset visas fortfarande.

02

Programvara och fast programvara
Den inbyggda programvara som styr hur hårdvara beter sig, och som ligger under operativsystemet i nätverksutrustning, servrar, slutanvändarmaskiner och industriell hårdvara. Den skrivs av tillverkarna, utsätts sällan för den granskning som tillämpas på applikationskod, och uppdateras genom kanaler de flesta organisationer inte bevakar. Den överlever också nästan allt som görs med lagren ovanför.

03

Hårdvara och enheter
Den maskin en människa faktiskt sitter framför, servrarna bakom varje leverantör i kedjan, apparaterna däremellan, och den växande uppsättningen av industri-, fastighets-, vård- och försörjningssystem som numera har webbläsarbaserade operatörsgränssnitt. Dessa gränssnitt sätts ihop av samma leverantörskedja som varje annan webbapplikation, och besluten som fattas utifrån det de visar får fysiska följder.

04

Tjänster och utvecklingspaket
De kommersiella API:er och utvecklingspaket organisationer integrerar i stället för att bygga. Ett utvecklingspaket är ingen passiv datakoppling; det är körbar kod som löper med rättigheterna hos den applikation som rymmer den. Organisationen granskade version ett vid integrationen. Leverantören skickar ut version fjorton, med väsentligt bredare förmågor, till alla som någonsin integrerat någon version.

05

Kod och programvarubibliotek
Egen kod, och den betydligt större mängd tredjepartskod som hämtas in utifrån. En del av den kompileras in i applikationen och låses till den version som valts. Mycket av den gör det inte: den hålls av andra parter och laddas från deras system när applikationen körs, och det är därför en komponentförteckning, som är en registrering av vad som sattes ihop, inte beskriver den.

06

Data, modeller och uppgifter
Applikationer laddar inte bara kod. De laddar konfiguration, funktionsflaggor, innehållsflöden, översättningstexter, API-svar och i allt högre grad resultat från modeller som drivs av tredje part. Var och en av dem är en insatsvara i leverantörskedjan som applikationen behandlar och i de flesta fall sätter på skärmen. Det är också det minst dokumenterade lagret i stacken: det finns sällan någon registrering av vilka ändpunkter en applikation frågar, än mindre av vem som håller dem, och modelleverantörer har kommit som en klass av underbiträden snabbare än praxis för att redovisa underbiträden hunnit anpassa sig till dem.

07

Resurser och filer
Bilder, teckensnitt, stilmallar, video, ljud och dokument. Inte körbara, och inte passiva heller: en stilmall avgör vad som syns och vad som skyms, ett teckensnitt avgör vilka tecken som ritas, en bild bär uppgifter rakt in i en människas omdöme, och ett dokument som levereras genom en applikation läses som originalet för att ingenting på sidan antyder annat.

08

Gränssnittet
Varje lager under möts här, i den enda bild en människa läser och handlar utifrån. Det är den enda plats där den sammansatta kedjan syns som helhet, och det är den plats inget ramverk i allmänt bruk tittar på. Vart och ett av dem byggdes för att bekräfta att enskilda komponenter fungerar som specificerat, och en sammansättning är ingen komponent.
Som system

Exponeringen kommer ur samspelet mellan lagren

Kod är beroende av data. Data färdas över nätverk. Nätverk routar genom hårdvara. Hårdvara kör fast programvara. Tjänster förbrukar och producerar de data koden handlar på. Resurser levereras av leverantörer som själva är nätverk av hårdvara som kör fast programvara. En förändring i vilket lager som helst fortplantar sig genom varje lager ovanför som är beroende av det.
Angreppsytan är därför inte summan av svagheterna i varje lager för sig. Det är mängden av vägar där en förändring i ett lager når gränssnittet genom flera andra. Det är just det verktyg på komponentnivå är byggda för att missa: förändringen är utspridd, underlaget är splittrat över lager som ägs av olika parter, och det sammansatta resultatet syns bara där de möts.
En leverantörskedjegraf som visar en källdomän kopplad utåt till mer än hundra tredjepartsdomäner och värdar som observerats i en enda session.
Lagren som de framträder i en observerad session, snarare än som ett arkitekturdiagram. Läs kartläggningsmetoden.
Underlag

Vissa lager lämnar en registrering. Flera lämnar nästan ingen.

Ingen enskild källa täcker stacken. Fyra underlagsmängder kommer tillsammans nära, och var och en har satts ihop av olika människor av olika skäl. Det mesta av värdet ligger där de motsäger varandra.
Observerat beteende
Vad applikationen faktiskt gjorde: förfrågningarna den skickade, koden den körde, nyttolasten den sände, lagringen den skrev till. Primärt underlag för lagren för kod, data, resurser och tjänster, och den enda källa som speglar sammansättningen och inte delarna.
Tekniska register
Domänregistrering, adresstilldelning, routingannonseringar, certifikatöppenhet och hostinguppgifter. Dessa gör en observerad värd till en namngiven operatör, och det är så nätverkslagret blir något en människa kan resonera om.
Redovisningar och avtal
Listor över underbiträden, personuppgiftsbiträdesavtal, revisionsrapporter, komponentförteckningar och inköpshandlingar. Inte den faktiska bilden, utan påståendet som prövas. Där redovisning är obligatorisk är en utelämning i sig anmälningsbar.
Bolagsuppgifter
Register, inlämnade handlingar, finansieringsuppgifter, sanktions- och tillsynsdata. Dessa för en operatör vidare till ett företag, dess ägare och den jurisdiktion vars lag styr vad det gör med dina data. Därifrån tar kartläggning av ägarkedjan vid.

En session korsar alla åtta lagren samtidigt

Ingen organisation kan revidera åtta lager som tillhör hundratals parter, och ingen behöver det. En enda inspelad session registrerar varje part den sammansatta applikationen faktiskt kontaktade, över alla åtta lagren på en gång, utan att fråga någon av dem om en lista. Metoden är att fastställa vilka företag de parterna är, och ställa resultatet mot det som redovisats.