ஒரு SBOM நீங்கள் எதை நிறுவினீர்கள் என்பதை நிரூபிக்கிறது. ஆனால் நீங்கள் அதை நிறுவ வேண்டுமா என்பதை அது நிரூபிக்க முடியாது.

ஒரு SBOM என்பது ஒரு ரசீது போன்றது. நீங்கள் எதை நிறுவினீர்கள் என்பதை அது உங்களுக்குச் சொல்கிறது. ஆனால் அதை நிறுவுவது சரியா இல்லையா என்பதை அது சொல்லாது.

பெரும்பாலான குழுக்கள் தங்கள் CI/CD குழாய்களில் (pipelines) SBOM மற்றும் CVE ஸ்கேன்களைப் பயன்படுத்துகின்றனர். ஏற்கனவே உள்ள தொகுப்புகளில் (packages) அறியப்பட்ட பாதிப்புகளைக் கண்டறிய இந்த கருவிகள் சிறந்தவை. ஆனால் AI கோடிங் ஏஜென்ட்களைப் (AI coding agents) பயன்படுத்தும்போது, அவற்றுக்கு ஒரு மிகப்பெரிய குறைபாடு உள்ளது.

ஒரு AI ஏஜென்ட் ஒரு தொகுப்பின் பெயரைப் பரிந்துரைக்கிறது. அந்தப் பெயர் உண்மையானதாக இருந்தாலும், ஒரு கற்பனையாக (hallucination) இருந்தாலும் அல்லது ஒரு 'typosquat' ஆக இருந்தாலும், அது அதே நம்பிக்கையுடன் இதைச் செய்கிறது.

ஒரு தாக்குதல் நடத்துபவர் நேற்று ஒரு தீய தொகுப்பின் பெயரைப் பதிவு செய்திருந்தால், அதற்கு இன்னும் CVE இருக்காது. உங்கள் 'post-install' ஸ்கேன் அதைத் தடையற்றதாகக் (clean) கருதும். அந்த ஸ்கேன் உண்மையானதுதான், ஆனால் அது தவறான கேள்விக்கு விடையளிக்கிறது. "இது தீயது என்று அறியப்பட்டதா?" என்பதற்குப் பதிலாக, "இந்தத் தொகுப்பின் பெயர் நமது கட்டமைப்பில் (stack) இருக்க வேண்டுமா?" என்ற கேள்விக்கு அது விடையளிக்கத் தவறிவிடுகிறது.

ஒரு தீய தொகுப்பை SBOM பதிவு செய்யும் போது, பாதிப்பு ஏற்கனவே நடந்துவிடுகிறது. தீய குறியீடுகள் (malicious code) பெரும்பாலும் 'postinstall scripts' மூலம் நிறுவும் கட்டத்தின் போதே இயங்கத் தொடங்கும். உங்கள் ஸ்கேனர் கோப்பு மரத்தை (file tree) பார்ப்பதற்கு முன்பே, அது உங்கள் 'environment variables' மற்றும் 'CI secrets'-களைத் திருடக்கூடும்.

பக்கவிளைவுகள் ஏற்படுவதற்கு முன்பே உங்களுக்கு ஒரு தீர்ப்பு தேவை.

இதைத் தீர்க்க நான் ஒரு எளிய கருவியை உருவாக்கினேன். இது ஒரு 'pre-install provenance gate' ஆகும். இது ஒரு ஸ்கேனரை விட வித்தியாசமாகச் செயல்படுகிறது:

• இது npm install இயங்குவதற்கு முன்பே பெயர்களைச் சரிபார்க்கிறது. • இது அங்கீகரிக்கப்பட்ட அடிப்படைத் தரவுகளுக்கு (vouched baseline) எதிராக 'default-deny' அணுகுமுறையைப் பயன்படுத்துகிறது. • பிரபலமான தொகுப்புகளிலிருந்து 'edit distance'-ஐ அளவிடுவதன் மூலம் 'typosquats'-களைக் கண்டறிகிறது. • அறியப்பட்ட நல்ல பெயர்களுடன் பொருந்தாத கற்பனையான (hallucinations) பெயர்களைப் பிடிக்கிறது. • நீங்கள் ஒரு போலிப் பதிவேட்டை (rogue registry) அணுகவில்லை என்பதை உறுதிப்படுத்த உங்கள் .npmrc-ஐச் சரிபார்க்கிறது.

இந்தக் கருவி ஆஃப்லைனில் (offline) இயங்கக்கூடியது, சாவிகள் (keyless) தேவையில்லை மற்றும் Python தரநிலை நூலகத்தை (standard library) மட்டுமே பயன்படுத்துகிறது. இது நெட்வொர்க்குடன் இணையாது. இது தொகுப்புகளைத் தீர்க்காது (resolve). இது முன்மொழியப்பட்ட பெயர்களைப் பார்த்து, "இந்தப் பெயரை நாங்கள் அங்கீகரிக்கிறோமா?" என்று மட்டுமே கேட்கிறது.

அந்தப் பெயர் உங்கள் அங்கீகரிக்கப்பட்ட ஸ்னாப்ஷாட்டில் (vouched snapshot) இல்லாமலும், பிரபலமான அடிப்படைத் தரவிலும் இல்லாமலும் இருந்தால், அந்த நுழைவாயில் (gate) 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