നിങ്ങൾ എന്താണ് ഇൻസ്റ്റാൾ ചെയ്തതെന്ന് ഒരു SBOM തെളിയിക്കുന്നു. എന്നാൽ അത് ഇൻസ്റ്റാൾ ചെയ്യേണ്ടതായിരുന്നു എന്ന് തെളിയിക്കാനാവില്ല.

ഒരു SBOM എന്നത് ഒരു രസീത് പോലെയാണ്. നിങ്ങൾ എന്താണ് ഇൻസ്റ്റാൾ ചെയ്തതെന്ന് അത് നിങ്ങളോട് പറയുന്നു. എന്നാൽ അത് ഇൻസ്റ്റാൾ ചെയ്തത് ശരിയാണോ എന്ന് അത് പറയുന്നില്ല.

മിക്ക ടീമുകളും അവരുടെ CI/CD പൈപ്പ്‌ലൈനുകളിൽ SBOM-ഉം CVE സ്കാനുകളും ഉപയോഗിക്കുന്നു. നിലവിലുള്ള പാക്കേജുകളിലെ അറിയപ്പെടുന്ന സുരക്ഷാ പിഴവുകൾ (vulnerabilities) കണ്ടെത്തുന്നതിന് ഈ ടൂളുകൾ മികച്ചതാണ്. എന്നാൽ AI കോഡിംഗ് ഏജന്റുകൾ ഉപയോഗിക്കുമ്പോൾ അവയ്ക്ക് വലിയൊരു പോരായ്മയുണ്ട് (blind spot).

ഒരു AI ഏജന്റ് ഒരു പാക്കേജ് പേര് നിർദ്ദേശിക്കുന്നു. ആ പേര് യഥാർത്ഥമാണോ, ഒരു ഹാലൂസിനേഷൻ (hallucination) ആണോ, അതോ ടൈപ്പോസ്ക്വാട്ട് (typosquat) ആണോ എന്നത് പരിഗണിക്കാതെ ഒരേ ആത്മവിശ്വാസത്തോടെയാണ് അത് ചെയ്യുന്നത്.

ഒരു ആക്രമണകാരി ഇന്നലെ ഒരു മാലീഷ്യസ് പാക്കേജ് പേര് രജിസ്റ്റർ ചെയ്തതെങ്കിൽ, അതിന് ഇതുവരെ ഒരു CVE ഉണ്ടായിരിക്കില്ല. നിങ്ങളുടെ പോസ്റ്റ്-ഇൻസ്റ്റാൾ സ്കാൻ അത് കണ്ട് സുരക്ഷിതമാണെന്ന് അടയാളപ്പെടുത്തും. സ്കാൻ കൃത്യമാണ്, പക്ഷേ അത് തെറ്റായ ചോദ്യത്തിനാണ് ഉത്തരം നൽകിയത്. "ഇത് മോശമാണെന്ന് അറിയപ്പെടുന്നുണ്ടോ?" എന്നതിന് പകരം "ഈ പേര് നമ്മുടെ സ്റ്റാക്കിൽ ഉണ്ടാകേണ്ടതുണ്ടോ?" എന്ന ചോദ്യത്തിനാണ് ഇവിടെ ഉത്തരം വേണ്ടത്.

ഒരു മാലീഷ്യസ് പാക്കേജ് ഒരു SBOM രേഖപ്പെടുത്തുമ്പോഴേക്കും നാശനഷ്ടങ്ങൾ സംഭവിച്ചു കഴിഞ്ഞിട്ടുണ്ടാകും. മാലീഷ്യസ് കോഡുകൾ പലപ്പോഴും ഇൻസ്റ്റാൾ ഘട്ടത്തിൽ തന്നെ postinstall സ്ക്രിപ്റ്റുകൾ വഴി പ്രവർത്തിക്കുന്നു. നിങ്ങളുടെ സ്കാനർ ഫയൽ ട്രീ കാണുന്നതിന് മുമ്പ് തന്നെ ഇത് നിങ്ങളുടെ എൻവയോൺമെന്റ് വേരിയബിളുകളും CI രഹസ്യങ്ങളും (secrets) ചോർത്താൻ സാധ്യതയുണ്ട്.

പാർശ്വഫലങ്ങൾ ഉണ്ടാകുന്നതിന് മുമ്പ് നിങ്ങൾക്ക് ഒരു തീരുമാനം (verdict) ആവശ്യമാണ്.

ഇത് പരിഹരിക്കാനായി ഞാൻ ഒരു ലളിതമായ ടൂൾ നിർമ്മിച്ചു. ഇതൊരു pre-install provenance gate ആണ്. ഇത് ഒരു സ്കാനറിൽ നിന്ന് വ്യത്യസ്തമായാണ് പ്രവർത്തിക്കുന്നത്:

• npm install പ്രവർത്തിക്കുന്നതിന് മുമ്പ് തന്നെ ഇത് പേരുകൾ പരിശോധിക്കുന്നു. • അംഗീകരിക്കപ്പെട്ട ഒരു ബേസ്‌ലൈനിനെ (vouched baseline) അടിസ്ഥാനമാക്കി 'default-deny' രീതിയാണ് ഇത് ഉപയോഗിക്കുന്നത്. • പ്രശസ്തമായ പാക്കേജുകളിൽ നിന്നുള്ള എഡിറ്റ് ഡിസ്റ്റൻസ് (edit distance) അളക്കുന്നതിലൂടെ ഇത് ടൈപ്പോസ്ക്വാറ്റുകളെ (typosquats) തിരിച്ചറിയുന്നു. • അറിയപ്പെടുന്ന നല്ല പേരുകളുമായി പൊരുത്തപ്പെടാത്ത ഹാലൂസിനേഷനുകളെ (hallucinations) ഇത് പിടികൂടുന്നു. • നിങ്ങൾ ഒരു വ്യാജ രജിസ്ട്രിയിലേക്ക് (rogue registry) ബന്ധപ്പെടുന്നില്ലെന്ന് ഉറപ്പാക്കാൻ ഇത് നിങ്ങളുടെ .npmrc പരിശോധിക്കുന്നു.

ഈ ടൂൾ ഓഫ്‌ലൈൻ ആണ്, കീലെസ്സ് (keyless) ആണ്, കൂടാതെ Python standard library മാത്രമേ ഉപയോഗിക്കുന്നുള്ളൂ. ഇത് നെറ്റ്‌വർക്കുമായി ബന്ധപ്പെടുന്നില്ല. ഇത് പാക്കേജുകളെ റെസൾവ് (resolve) ചെയ്യുന്നില്ല. ഇത് നിർദ്ദിഷ്ട പേരുകൾ നോക്കി ചോദിക്കുന്നു: "ഈ പേരിനെ ഞങ്ങൾ അംഗീകരിക്കുന്നുണ്ടോ?"

പേര് നിങ്ങളുടെ അംഗീകരിച്ച സ്നാപ്പ്ഷറ്റിലോ (vouched snapshot) പ്രശസ്തമായ ബേസ്‌ലൈനിലോ ഇല്ലെങ്കിൽ, ഗേറ്റ് 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