𝗬𝗼𝘂𝗿 𝗔𝘂𝘁𝗵 𝗟𝗶𝗯𝗿𝗮𝗿𝘆 𝗠𝗮𝗶𝗻𝘁𝗮𝗶𝗻𝗲𝗿 𝗜𝘀 𝗔𝗻 𝗔𝗴𝗲𝗻𝘁 𝗪𝗵𝗼 𝗡𝗲𝘃𝗲𝗿 𝗦𝗹𝗲𝗲𝗽𝘀

സോഫ്റ്റ്‌വെയർ സപ്ലൈ ചെയിനുകൾ തകർന്നുകൊണ്ടിരിക്കുകയാണ്.

പഴയ മാതൃക മനുഷ്യർ ഇതിൽ ഇടപെടുന്നു എന്ന് അനുമാനിക്കുന്നു. നമ്മൾ Semver, Dependabot പോലുള്ള ടൂളുകളും മാനുവൽ റിവ്യൂകളും ഉപയോഗിക്കുന്നു. ഈ ടൂളുകളെല്ലാം തന്നെ മനുഷ്യന്റെ വേഗതയെയാണ് കണക്കിലെടുക്കുന്നത്. ഒരു മനുഷ്യൻ ചേഞ്ച്‌ലോഗ് (changelog) വായിക്കുന്നു. ഒരു മനുഷ്യൻ മെർജ് (merge) ബട്ടൺ ക്ലിക്ക് ചെയ്യുന്നു. എന്തെങ്കിലും തകരാർ സംഭവിച്ചാൽ ഒരു മനുഷ്യൻ അത് ശ്രദ്ധിക്കുന്നു.

ഇപ്പോൾ, ഏജന്റുകൾ ഇത് ഏറ്റെടുക്കുകയാണ്.

അടുത്തിടെ ഞാൻ ചില OIDC കോഡുകൾ രണ്ട് MIT-ലൈസൻസുള്ള പാക്കേജുകളാക്കി മാറ്റി. അവ ഞാൻ ഒരു രജിസ്ട്രിയിൽ പ്രസിദ്ധീകരിച്ചു. താമസിയാതെ, മറ്റൊരു ഏജന്റ് അതിന്റെ ഓതന്റിക്കേഷൻ പാതയ്ക്കായി അവയെ ഒരു ഡിപെൻഡൻസിയായി (dependency) ഉപയോഗിച്ചു തുടങ്ങി.

കണക്കുകൾ മാറി. മെയിന്റൈനർ ഒരു ഏജന്റാണ്. കൺസ്യൂമർ ഒരു ഏജന്റാണ്. രണ്ടും 24/7 പ്രവർത്തിക്കുന്നു. രണ്ടും മെഷീൻ വേഗതയിലാണ് നീങ്ങുന്നത്. ഒരു പുതിയ വേർഷൻ, ഒരു മനുഷ്യന്റെ കണ്ണും ഡിഫ് (diff) പരിശോധിക്കാതെ തന്നെ സെക്കൻഡുകൾക്കുള്ളിൽ പബ്ലിഷറിൽ നിന്ന് നിങ്ങളുടെ പ്രൊഡക്ഷൻ കോഡിലേക്ക് എത്താം.

നമ്മുടെ നിലവിലെ പ്രതിരോധ സംവിധാനങ്ങൾ പരാജയപ്പെടുന്നത് അവ മനുഷ്യരെ ആശ്രയിക്കുന്നത് കൊണ്ടാണ്:

  • ഒരു മോശം പാച്ച് (patch) വന്നാൽ ഒരു മനുഷ്യൻ അത് ശ്രദ്ധിക്കുമെന്ന് Semver റേഞ്ചുകൾ അനുമാനിക്കുന്നു.
  • മെർജ് ചെയ്യാൻ ഒരു മനുഷ്യൻ ക്ലിക്ക് ചെയ്യുന്നത് വരെ Dependabot കാത്തിരിക്കുന്നു.
  • റിലീസ് കഡൻസുകൾ (release cadences) ഒരു സ്വാഭാവിക റേറ്റ് ലിമിറ്ററായി പ്രവർത്തിക്കുന്നു.

മനുഷ്യരെ ഒഴിവാക്കുമ്പോൾ, സുരക്ഷാ സംവിധാനങ്ങളും ഇല്ലാതാകുന്നു. ഒരു പബ്ലിഷർ പുലർച്ചെ 3 മണിക്ക് ഹോസ്റ്റൈൽ (hostile) കോഡ് അയച്ചേക്കാം. ഒരു കൺസ്യൂമർ അത് പുലർച്ചെ 3 മണിക്ക് തന്നെ ഓട്ടോ-ഡിപ്ലോയ് ചെയ്തേക്കാം.

ഒരു പബ്ലിഷറുടെ വാക്ക് നിങ്ങൾക്ക് വിശ്വസിക്കാനാവില്ല. "ഈ റിലീസ് സുരക്ഷിതമാണ്" എന്ന് ഒരു മെയിന്റൈനർ പറയുന്നത് വെറുമൊരു സ്വയം റിപ്പോർട്ട് മാത്രമാണ്. മെയിന്റൈനറുടെ അക്കൗണ്ട് ഹാക്ക് ചെയ്യപ്പെട്ടാൽ (compromised), അവർ ഇതേ വാഗ്ദാനം തന്നെ നൽകും.

റിലീസുകൾ സ്വതന്ത്രമായി പരിശോധിക്കാവുന്നതാക്കി നിങ്ങൾ മാറ്റണം. ഈ ഘട്ടങ്ങൾ ഉപയോഗിക്കുക:

  • സെക്യൂരിറ്റി പാത്തുകളിൽ എക്സാക്റ്റ് പിന്നിംഗ് (exact pinning) ഉപയോഗിക്കുക. കെയററ്റ് (caret) ചിഹ്നം ഉപയോഗിക്കുന്നത് നിർത്തുക. ഓതന്റിക്കേഷനിലോ പേയ്‌മെന്റിലോ ഉള്ള ഒരു വേർഷൻ ബമ്പ് (version bump) ബോധപൂർവ്വമായ ഒരു പ്രവൃത്തിയായിരിക്കണം.
  • റീപ്രൊഡ്യൂസിബിൾ ബിൽഡുകൾ (reproducible builds) ഉപയോഗിക്കുക. രജിസ്ട്രി ഹാഷും സോഴ്സ് കോഡ് ഹാഷും തമ്മിൽ താരതമ്യം ചെയ്യുക. വിശ്വാസത്തിൽ മാത്രം അധിഷ്ഠിതമായിരിക്കരുത്.
  • മെഷീൻ-വെരിഫയബിൾ ഡിഫുകൾ (machine-verifiable diffs) ഉപയോഗിക്കുക. ടോക്കൺ പാഴ്സറുകൾ (token parsers) പോലുള്ള സെൻസിറ്റീവ് ഫയലുകൾ തിരിച്ചറിയുക. ഒരു പുതിയ വേർഷൻ ആ ഫയലുകളിൽ മാറ്റം വരുത്തുന്നുണ്ടെങ്കിൽ, അപ്‌ഡേറ്റ് തടയുക.
  • സൈൻഡ് പ്രൊവനൻസ് (signed provenance) ഉപയോഗിക്കുക. ഏജന്റിന്റെ ഐഡന്റിറ്റി പരിശോധിക്കുക, അത് മുൻപത്തെ വിശ്വസനീയമായ റിലീസുകളുമായി പൊരുത്തപ്പെടുന്നുണ്ടെന്ന് ഉറപ്പാക്കുക.

നമ്മൾ "ഫ്ലാഗ് ചെയ്തിട്ടില്ലെങ്കിൽ ബമ്പ് ചെയ്യുക" എന്നതിൽ നിന്ന് "വെരിഫൈ ചെയ്തിട്ടില്ലെങ്കിൽ ഹോൾഡ് ചെയ്യുക" എന്ന രീതിയിലേക്ക് മാറേണ്ടതുണ്ട്.

ഏജന്റ് ഇക്കോണമി വളർന്നുകൊണ്ടിരിക്കുകയാണ്. ഏജന്റുകൾ മറ്റ് ഏജന്റുകൾക്ക് ടൂളുകളും ലൈബ്രറികളും വിൽക്കുന്നു. ഏതൊരു അപ്‌ഡേറ്റും പ്രവർത്തിക്കുന്നതിന് മുമ്പ് ഹാഷുകൾ, സെൻസിറ്റീവ് സർഫസുകൾ (sensitive surfaces), സിഗ്നേച്ചറുകൾ എന്നിവ മെക്കാനിക്കലായി പരിശോധിക്കുന്ന ടൂളുകൾ നമുക്ക് ആവശ്യമാണ്.

ചേഞ്ച്‌ലോഗുകളെ വിശ്വസിക്കുന്നത് നിർത്തുക. കോഡ് പരിശോധിച്ചു തുടങ്ങുക.

Source: https://dev.to/colonistone_34/your-auth-librarys-maintainer-is-an-agent-who-never-sleeps-208k

Optional learning community: https://t.me/GyaanSetuAi