ఒక SBOM మీరు ఏమి ఇన్స్టాల్ చేశారో నిరూపిస్తుంది. కానీ మీరు దానిని ఇన్స్టాల్ చేయాల్సి ఉందా లేదా అనేది నిరూపించలేదు.
SBOM అనేది ఒక రసీదు వంటిది. మీరు ఏమి ఇన్స్టాల్ చేశారో అది మీకు చెబుతుంది. కానీ దానిని ఇన్స్టాల్ చేయడం సరైన నిర్ణయమా కాదా అనేది అది చెప్పదు.
చాలా బృందాలు తమ CI/CD పైప్లైన్లలో SBOM మరియు CVE స్కాన్లను ఉపయోగిస్తాయి. ఇప్పటికే ఉన్న ప్యాకేజీలలో తెలిసిన లోపాలను (vulnerabilities) కనుగొనడానికి ఈ సాధనాలు చాలా ఉపయోగకరంగా ఉంటాయి. కానీ AI కోడింగ్ ఏజెంట్లను ఉపయోగించేటప్పుడు వీటికి ఒక పెద్ద లోపం (blind spot) ఉంటుంది.
ఒక AI ఏజెంట్ ఒక ప్యాకేజీ పేరును సూచిస్తుంది. ఆ పేరు నిజమైనదైనా, హాలూసినేషన్ (hallucination) అయినా లేదా టైపోస్క్వాట్ (typosquat) అయినా, అది ఒకే విధమైన నమ్మకంతో చెబుతుంది.
ఒకవేళ దాడి చేసే వ్యక్తి (attacker) నిన్ననే ఒక హానికరమైన ప్యాకేజీ పేరును రిజిస్టర్ చేసి ఉంటే, దానికి ఇంకా CVE ఉండదు. మీ పోస్ట్-ఇన్స్టాల్ స్కాన్ దానిని చూసి 'క్లీన్' అని గుర్తిస్తుంది. ఆ స్కాన్ నిజాయితీగా ఉన్నప్పటికీ, అది తప్పు ప్రశ్నకే సమాధానం ఇచ్చింది. అది "ఇది హానికరమైనదని మనకు తెలుసా?" అని అడిగింది కానీ, "ఈ పేరు మన స్టాక్లో ఉండాలా?" అని అడగలేదు.
ఒక హానికరమైన ప్యాకేజీని SBOM నమోదు చేసే సమయానికి, నష్టం జరిగిపోతుంది. హానికరమైన కోడ్ తరచుగా ఇన్స్టాల్ దశలో postinstall స్క్రిప్ట్ల ద్వారా రన్ అవుతుంది. మీ స్కానర్ ఫైల్ ట్రీని చూడకముందే, అది మీ ఎన్విరాన్మెంట్ వేరియబుల్స్ (environment variables) మరియు CI సీక్రెట్లను దొంగిలించగలదు.
దుష్ప్రభావం (side effect) కలిగే ముందే మీకు ఒక తీర్పు (verdict) అవసరం.
దీనిని పరిష్కరించడానికి నేను ఒక సాధారణ సాధనాన్ని రూపొందించాను. ఇది ఒక pre-install provenance gate. ఇది స్కానర్ కంటే భిన్నంగా పనిచేస్తుంది:
• ఇది npm install రన్ కావడానికి ముందే పేర్లను తనిఖీ చేస్తుంది. • ఇది ఒక ధృవీకరించబడిన బేస్లైన్ (vouched baseline) ఆధారంగా 'default-deny' విధానాన్ని ఉపయోగిస్తుంది. • ఇది ప్రముఖ ప్యాకేజీల నుండి ఎడిట్ డిస్టెన్స్ను (edit distance) కొలవడం ద్వారా టైపోస్క్వాట్లను (typosquats) గుర్తిస్తుంది. • ఇది తెలిసిన మంచి పేర్లతో సరిపోలని హాలూసినేషన్లను (hallucinations) పట్టుకుంటుంది. • మీరు ఏదైనా అనుమానాస్పద రిజిస్ట్రీని (rogue registry) ఉపయోగిస్తున్నారా లేదా అని నిర్ధారించడానికి ఇది మీ .npmrcని తనిఖీ చేస్తుంది.
ఈ సాధనం ఆఫ్లైన్, కీలెస్ (keyless) మరియు కేవలం Python standard libraryని మాత్రమే ఉపయోగిస్తుంది. ఇది నెట్వర్క్కు కనెక్ట్ అవ్వదు. ఇది ప్యాకేజీలను రిజాల్వ్ (resolve) చేయదు. ఇది కేవలం సూచించబడిన పేర్లను చూసి ఇలా అడుగుతుంది: "మేము ఈ పేరును ధృవీకరిస్తున్నామా?"
ఒకవేళ ఆ పేరు మీ ధృవీకరించబడిన స్నాప్షాట్లో మరియు ప్రముఖ బేస్లైన్లో లేకపోతే, గేట్ DENY అని తిరిగి ఇస్తుంది.
జరిగిన వాటి రికార్డులపై మాత్రమే ఆధారపడటం ఆపండి. ఏమి జరగవచ్చో నిర్ణయించడం ప్రారంభించండి.
Source: https://dev.to/alex_spinov/an-sbom-proves-what-you-installed-it-cant-prove-you-should-have-117c
Optional learning community: https://t.me/GyaanSetuAi
