Atak typu supply chain (atak na łańcuch dostaw) to taki, w którym napastnik nie wali drzwiami od frontu do twojej firmy, tylko włamuje się do zaufanego dostawcy — twórcy oprogramowania, biblioteki, paczki czy aktualizacji — i przez niego przemyca złośliwy kod do wszystkich jego klientów naraz. Ty instalujesz „zwykły update” od sprawdzonego producenta, podpisany cyfrowo i ściągnięty z oficjalnego serwera, a w środku jedzie pasażer na gapę. Zaufanie, które normalnie chroni, staje się tu wektorem ataku.
Sens jest brutalnie ekonomiczny: po co atakować tysiąc firm po kolei, skoro można zatruć jedno źródło, z którego wszystkie te firmy się zaopatrują. Atakujący wstrzykuje kod na którymś etapie łańcucha — w repozytorium źródłowym, w procesie budowania (build/CI/CD), w gotowym artefakcie albo w mechanizmie aktualizacji. Ofiary dostają zainfekowaną wersję jako oficjalne wydanie, więc antywirusy i polityki „instaluj tylko podpisane paczki” przepuszczają ją bez mrugnięcia.
Konkretny przykład
Najgłośniejszy to SolarWinds (2020): napastnicy weszli do procesu budowania platformy Orion i podrzucili backdoora nazwanego SUNBURST. Złośliwa aktualizacja została normalnie podpisana i rozesłana do ~18 000 organizacji, w tym agencji rządowych USA.
Bliżej developera: backdoor w bibliotece xz/liblzma (CVE-2024-3094, 2024). Ktoś przez dwa lata budował zaufanie jako maintainer projektu open source, po czym wstrzyknął kod otwierający zdalny dostęp przez SSH na systemach Linux. Wykryto go niemal przypadkiem, zanim trafił do stabilnych wydań. Stąd codzienna higiena — sprawdzasz, co realnie zaciągasz:
npm audit oraz pip install package==1.2.3 --require-hashes
Na co uważać
Najczęstszy mit: „używam tylko oficjalnych, podpisanych paczek, więc jestem bezpieczny”. Podpis potwierdza, że paczka pochodzi od dostawcy — nie że dostawca nie został zhakowany. Druga pułapka to typosquatting i dependency confusion: ktoś publikuje paczkę o nazwie łudząco podobnej do popularnej (albo o nazwie twojej wewnętrznej zależności) i czeka, aż npm install sam ją pobierze. I nie zapominaj o zależnościach przechodnich — twój projekt ufa kilkuset bibliotekom, których nigdy świadomie nie wybrałeś.
W praktyce broni się przez SBOM (spis składników oprogramowania), pinning wersji z hashami (lockfile), skanery zależności (Dependabot, Snyk) i ograniczanie uprawnień w pipeline CI/CD.
Pojęcia powiązane
SBOM, dependency confusion, typosquatting, CI/CD, backdoor, SolarWinds (SUNBURST), CVE, lockfile, zero trust, code signing.