,

Insignary Clarity AIR: luka w SBOM dotyczy 90% aplikacji

Deklaratywne zestawienia SBOM i manifesty pakietów ignorują do 90% faktycznego kodu źródłowego, do którego trafiły niezaewidencjonowane fragmenty Open Source oraz kod wygenerowany przez sztuczną inteligencję. Premiera platformy Insignary Clarity AIR wprowadza skanowanie na poziomie snippetów i linii kodu, ujawniając rzeczywiste pochodzenie komponentów oraz generując AIBOM (AI Bill of Materials). Dla dyrektorów ds. bezpieczeństwa (CISO) oraz CTO w Polsce i Unii Europejskiej oznacza to konieczność przejścia z deklaracji deweloperskich na niezależną weryfikację kodu, szczególnie w obliczu 92% liderów zaniepokojonych ryzykiem kodu AI i 48 000 nowych podatności CVE ujawnionych w samym 2025 roku.

Mechanizm niewidzialnego długu: dlaczego manifesty SBOM zawodzą

Tradycyjne narzędzia do analizy kompozycji oprogramowania (SCA) opierają się wyłącznie na plikach manifestów zadeklarowanych przez deweloperów, takich jak menedżery pakietów. Pomiędzy menedżerem a produkcją powstaje luka: kod wklejany z forów, fragmenty Open Source oraz bloki wygenerowane przez asystentów AI trafiają do archiwum bez wpisu w haście zależności.

Systemy budowania oprogramowania traktują kod źródłowy jako czarną skrzynkę, w której szacunkowo 70–90% aplikacji bazuje na komponentach otwartych. Gdy deweloper korzysta z narzędzi typu GitHub Copilot czy ChatGPT, model generuje fragmenty kodu, które nie przechodzą przez standardowe repozytoria pakietów. W efekcie deklaratywna deklaracja SBOM (Software Bill of Materials) staje się niespójna ze stanem faktycznym.

Rozwiązanie Insignary Clarity AIR usuwa tę lukę poprzez skanowanie kodu źródłowego na poziomie poszczególnych linii i fragmentów (snippet-level scanning). Wykorzystuje ono opatentowane odciskowanie cyfrowe (fingerprinting), które dopasowuje kod do bazy danych ekosystemu Open Source, nawet jeśli fragment został zmodyfikowany, dostosowany lub przeredagowany przez model językowy. Platforma klasyfikuje kod linia po linii, przypisując wskaźnik pewności (confidence score) określający udział sztucznej inteligencji, a każdy wynik generuje audytowalny dokument AIBOM (AI Bill of Materials).

Skala zjawiska: 97% deweloperów z asystentami AI i brak procesów

Masowa adopcja asystentów programistycznych zmienia rolę inżyniera z autora w kuratora kodu, wprowadzając do repozytoriów niesprawdzone wzorce syntetyczne. Z badań wynika, że 97% deweloperów w dużych przedsiębiorstwach korzysta z asystentów AI, podczas gdy 60% organizacji nie posiada formalnych procedur oceny kodu wygenerowanego przez modele.

Ilościowy wzrost tempa pisania kodu nie przekłada się na skrócenie cyklu wydawniczego. Z badania przeprowadzonego na 300 liderach inżynierii wynikają następujące wskaźniki: – 35% kodu wygenerowanego przez AI trafia na produkcję zanim zespół w pełni go zrozumie. – 42% czasu pracy (16,9 godziny tygodniowo) inżynierowie spędzają na debugowaniu i diagnozowaniu usterek, podczas gdy na samo pisanie kodu przeznaczają średnio 9,8 godziny tygodniowo. – 79% liderów inżynierii wskazuje, że konieczność odwikływania barier w kodzie AI powoduje, że łączny czas wydania oprogramowania nie jest szybszy niż przed wdrożeniem asystentów. – 81% zespołów doświadczyło awarii produkcyjnej w ciągu ostatnich 6 miesięcy z powodu usterek w kodzie, a 93% napotkało błędną diagnozę z powodu halucynacji AI.

Wielkoskalowe analizy statyczne przeprowadzone na ponad 500 000 próbkach kodu w językach Python i Java potwierdzają głębokie różnice strukturalne między kodem ludzkim a syntetycznym:

Metryka / Cechy Kod napisany przez człowieka Kod wygenerowany przez AI (LLM)
Średnia złożoność cyclomatic (CCN) 3,97 (Python) / 3,48 (Java) 1,84 – 2,47 (Python) / 1,83 – 2,35 (Java)
Długość funkcji (NLOC) Średnio 12,7 – 13,4 linii Średnio 4,5 – 8,4 linii
Różnorodność słownika (Unique Tokens) 70 542 (Python) / 57 356 (Java) 60 199 – 63 265 (Python) / 47 737 – 52 540 (Java)
Główne kategorie usterek (ODC) Złożoność algorytmiczna, obsługa wyjątków Unused arguments, redefiniowanie zmiennych, debagowanie System.out.println
Profil podatności bezpieczeństwa Niższa gęstość, błędy logiczne i brak kontroli skrajnych stanów Wysoka gęstość podatności wysokiego ryzyka (CWE-78, CWE-798, CWE-532)

Badania wykazują, że kod wygenerowany przez modele LLM jest zwięzły i powtarzalny, ale wykazuje płytszą strukturę logiczną oraz wyższą podatność na wprowadzenie błędów konstrukcyjnych.

Jakie ryzyka licencyjne i podatności kryje niezaewidencjonowany kod AI?

Pojawienie się asystentów programistycznych wiąże się z dwoma krytycznymi wektorami zagrożeń: naruszeniami praw autorskich licencji Open Source oraz wprowadzaniem do kodu produkcyjnego podatności o najwyższym stopniu krytyczności. Modele sztucznej inteligencji zapamiętują i odtwarzają kod z treningowych zbiorów danych, co prowadzi do zjawiska tzw. prania licencji.

Wskaźnik odtwarzania dosłownego kodu (regurgitation rate) w niektórych modelach sięga 80%. Wygenerowanie fragmentu objętego restrykcyjną licencją copyleft (np. GPL lub AGPL) wewnątrz zamkniętego oprogramowania komercyjnego rodzi ryzyko wymuszonego ujawnienia całego kodu źródłowego lub wysokich odszkodowań finansowych. Przykładem jest wyrok Sądu Apelacyjnego w Paryżu z 2024 roku, który nakazał firmie Orange S.A. zapłatę ponad 900 000 euro odszkodowania za naruszenie licencji GPL. Klauzule indemnifikacyjne oferowane przez dostawców komercyjnych modeli AI zawierają wyłączenia obejmujące modyfikację kodu lub jego łączenie z innymi narzędziami — praktyki nieuniknione w codziennym SDLC.

W obszarze bezpieczeństwa danych, badania ilościowe z użyciem statycznej analizy SonarQube i Semgrep wykazały obecność poważnych luk w kodzie syntetycznym: – Brak korelacji między Pass@1 a jakością: Wysoki wskaźnik zaliczenia testów jednostkowych (np. 77,04% dla Claude Sonnet 4) nie oznacza braku luk — modele wygenerowały średnio 1,45 do 2,11 usterek statycznych na każde poprawne zadanie. – Podatności najwyższej krytyczności: Ponad 59% do 70,7% podatności wykrytych w kodzie wygenerowanym przez modele LLM (Llama 3.2 90B, GPT-4o, Claude) zakwalifikowano jako krytyczne lub blokujące (’BLOCKER’ / 'CRITICAL’). – Kluczowe słabości CWE: Kod AI wykazuje powtarzalne wzorce podatności, takie jak wstrzykiwanie poleceń systemu operacyjnego (CWE-78), zaszyfrowane hasła i klucze w kodzie (CWE-798), niekontrolowane zużycie zasobów (CWE-400), podatności XML External Entity (CWE-611) oraz wycieki danych w logach (CWE-532).

Porównanie podejść do nadzoru: weryfikacja binarna vs skanowanie źródeł

Zapewnienie zgodności oprogramowania wymaga wdrożenia wielowarstwowych mechanizmów kontroli na każdym etapie cyklu rozwoju oprogramowania (SDLC). Porównanie dostępnych metod skanowania pozwala inżynierom oraz zespołom ds. bezpieczeństwa dobrać właściwe narzędzia do wymogów regulatorów i specyfiki posiadanego stacku technologicznego.

Odpowiedzią rynkową na niekontrolowany przepływ kodu AI są ramowe procedury zarządcze, takie jak DevLicOps (integracja licencyjna w DevOps), oraz trójpoziomowe modele przeglądu kodu rekomendowane przez JetBrains Research (orientacja ogólna, stratyfikacja ryzyka na poziomie plików, analiza fragmentów).

Cecha / Narzędzie Deklaratywne SCA (npm, Maven) Insignary Clarity (Binary SCA) Insignary Clarity AIR (Source Snippet)
Źródło danych Pliki manifestów (package.json, pom.xml) Skompilowane pliki binarne (bez kodu źródłowego) Kod źródłowy (skanowanie linii i snippetów)
Wykrywanie kodu AI Brak możliwości wykrycia Identyfikacja komponentów w plikach binarnych Klasyfikacja linii kodu + wskaźnik AI (AIBOM)
Skanowanie ukrytego Open Source Wyłącznie zdeklarowane zależności Wykrywanie niezdeklarowanych bibliotek w plikach binarnych Wykrywanie modyfikowanych snippetów i wklejonego kodu
Analiza osiągalności (Reachability) Brak Tak (badanie osiągalności ścieżek wykonywalnych) Analiza kontekstowa snippetów

Rygor weryfikacji wymuszają bezpośrednio regulacje prawne w Ameryce Północnej i Europie: – U.S. OMB Memorandum M-26-05: Wymaga od agencji federalnych niezależnej weryfikacji deklaracji SBOM dostarczanych przez dostawców oprogramowania. – FDA Section 524B: Nakłada obowiązek dołączania zweryfikowanego binarnego SBOM dla każdego połączonego wyrobu medycznego. – Kanadyjska ustawa CCSPA (Bill C-8): Wprowadza od czerwca 2026 roku obowiązkowe zarządzanie ryzykiem łańcucha dostaw w sektorze bankowym, telekomunikacyjnym i energetycznym. – EU Cyber Resilience Act (CRA): Egzekwuje odpowiedzialność za podatności i skład komponentów w produktach cyfrowych na rynku unijnym.

Wnioski praktyczne i rekomendacje

  1. Skonfiguruj skanowanie na poziomie kodu źródłowego i plików binarnych: Wdróż Insignary Clarity AIR w potoku CI/CD na etapie code push, aby wychwytywać niezaewidencjonowane fragmenty Open Source oraz kod wygenerowany przez asystentów AI przed połączeniem z gałęzią główną.
  2. Zweryfikuj warunki licencyjne i klauzule indemnifikacyjne: Przeprowadź audyt używanych asystentów programistycznych pod kątem wyłączeń z ochrony prawnej, wprowadzając zasady zachowania ochrony (Indemnity Preserving Practices – IPP) lub przechodząc na modele trenowane na licencjach permisywnych (np. StarCoder).
  3. Wdróż ramowy proces DevLicOps oraz dedykowany katalog izolowany: Utwórz odrębne repozytorium (np. //third_party) dla kodu pochodzącego z zewnętrznych asystentów AI oraz ustanów zespół audytowy odpowiedzialny za ręczną weryfikację zmian w modułach krytycznych (logika biznesowa, rurociągi danych).
  4. Zmierz udział kodu syntetycznego i wygeneruj dokument AIBOM: Uruchom cykliczny pomiar gęstości usterek oraz udziału linii napisanych przez AI, generując audytowalne zestawienia AI Bill of Materials wymagane przy certyfikacji zgodności z wymogami OMB M-26-05 oraz dyrektywą CRA.

Źródła

Przemysław Majdak

Przemysław Majdak · AI Automation Engineer

Założyciel Baluarte i wydawca BitBiz.pl. Członek ISSA Polska. Ekspert z 18-letnim stażem w branży IT — wdraża bezpieczne automatyzacje AI, systemy full-stack i zaawansowane procedury cyberbezpieczeństwa dla firm. Wszystkie artykuły autora →

💬 Kliknij tutaj, aby dodać komentarz

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *