മറ്റുള്ളവരുടെ പാക്കേജുകൾ കബളിപ്പിക്കാൻ അനുവദിക്കുന്ന RubyGems.org-ലെ ദുർബലത

RubyGems.org പാക്കേജ് റിപ്പോസിറ്ററിയിൽ ഒരു ഗുരുതരമായ കേടുപാടുകൾ (CVE-2022-29176) തിരിച്ചറിഞ്ഞിട്ടുണ്ട്, ഇത് ശരിയായ അധികാരമില്ലാതെ, നിയമാനുസൃതമായ ഒരു പാക്കേജിന്റെ യാങ്ക് ആരംഭിച്ച് അതിന്റെ സ്ഥാനത്ത് ലോഡുചെയ്യുന്നതിലൂടെ ശേഖരത്തിലെ മറ്റ് ചില ആളുകളുടെ പാക്കേജുകൾ മാറ്റിസ്ഥാപിക്കാൻ അനുവദിക്കുന്നു. അതേ പേരും പതിപ്പ് നമ്പറും ഉള്ള മറ്റൊരു ഫയൽ.

അപകടസാധ്യത വിജയകരമായി പ്രയോജനപ്പെടുത്തുന്നതിന്, മൂന്ന് നിബന്ധനകൾ പാലിക്കേണ്ടതുണ്ട്:

  • പേരിൽ ഹൈഫൻ ഉള്ള പാക്കറ്റുകളിൽ മാത്രമേ ആക്രമണം നടത്താൻ കഴിയൂ.
  • ഒരു ആക്രമണകാരിക്ക് ഹൈഫൻ പ്രതീകത്തിന് മുമ്പായി പേരിന്റെ ഒരു ഭാഗം ഉള്ള ഒരു രത്ന പാക്കേജ് സ്ഥാപിക്കാൻ കഴിയണം. ഉദാഹരണത്തിന്, ആക്രമണം "rails-html-sanitizer" പാക്കേജിലാണെങ്കിൽ, ആക്രമണകാരി സ്വന്തം "rails-html" പാക്കേജ് ശേഖരണത്തിൽ സ്ഥാപിക്കണം.
  • ആക്രമിക്കപ്പെടുന്ന പാക്കേജ് കഴിഞ്ഞ 30 ദിവസത്തിനുള്ളിൽ സൃഷ്‌ടിച്ചതായിരിക്കണം അല്ലെങ്കിൽ 100 ​​ദിവസത്തേക്ക് അപ്‌ഡേറ്റ് ചെയ്‌തിട്ടില്ല.

“യാങ്ക്” ആക്ഷൻ ഹാൻഡ്‌ലറിലെ ഒരു പിശക് മൂലമാണ് അപകടസാധ്യത ഉണ്ടാകുന്നത്, ഇത് ഹൈഫണിന് ശേഷമുള്ള പേരിന്റെ ഭാഗത്തെ പ്ലാറ്റ്‌ഫോമിന്റെ പേരായി വ്യാഖ്യാനിക്കുന്നു, ഇത് പേരിന്റെ ഭാഗവുമായി പൊരുത്തപ്പെടുന്ന വിദേശ പാക്കേജുകൾ ഇല്ലാതാക്കുന്നത് ആരംഭിക്കുന്നത് സാധ്യമാക്കി. ഹൈഫണിന് മുമ്പ്. പ്രത്യേകിച്ചും, "yank" ഹാൻഡ്‌ലർ കോഡിൽ, 'find_by!(full_name: "#{rubygem.name}-#{slug}")" കോൾ പാക്കേജുകൾ കണ്ടെത്താൻ ഉപയോഗിച്ചു, അതേസമയം "സ്ലഗ്" പാരാമീറ്റർ പാസ്സാക്കി നീക്കം ചെയ്യേണ്ട പതിപ്പ് നിർണ്ണയിക്കാൻ പാക്കേജ് ഉടമ. "rails-html" എന്ന പാക്കേജിന്റെ ഉടമയ്ക്ക് "1.2.3" പതിപ്പിന് പകരം "sanitizer-1.2.3" എന്ന് വ്യക്തമാക്കാൻ കഴിയും, ഇത് മറ്റൊരാളുടെ പാക്കേജായ "rails-html-sanitizer-1.2.3-ലേക്ക് പ്രവർത്തനം പ്രയോഗിക്കുന്നതിന് കാരണമാകും. ".

അറിയപ്പെടുന്ന ഓപ്പൺ സോഴ്‌സ് പ്രോജക്‌റ്റുകളിലെ സുരക്ഷാ പ്രശ്‌നങ്ങൾ കണ്ടെത്തുന്നതിനുള്ള HackerOne-ന്റെ ബൗണ്ടി പ്രോഗ്രാമിന്റെ ഭാഗമായി ഒരു സുരക്ഷാ ഗവേഷകൻ ഈ പ്രശ്‌നം തിരിച്ചറിഞ്ഞു. മെയ് 5-ന് RubyGems.org-ൽ പ്രശ്നം പരിഹരിച്ചു, ഡെവലപ്പർമാർ പറയുന്നതനുസരിച്ച്, കഴിഞ്ഞ 18 മാസമായി ലോഗുകളിലെ അപകടസാധ്യത ചൂഷണം ചെയ്തതിന്റെ സൂചനകളൊന്നും അവർ ഇതുവരെ തിരിച്ചറിഞ്ഞിട്ടില്ല. അതേസമയം, ഉപരിപ്ലവമായ ഒരു ഓഡിറ്റ് മാത്രമാണ് ഇതുവരെ നടന്നിട്ടുള്ളത്, ഭാവിയിൽ കൂടുതൽ ആഴത്തിലുള്ള ഓഡിറ്റ് ആസൂത്രണം ചെയ്തിട്ടുണ്ട്.

നിങ്ങളുടെ പ്രോജക്റ്റുകൾ പരിശോധിക്കുന്നതിന്, Gemfile.lock ഫയലിലെ പ്രവർത്തനങ്ങളുടെ ചരിത്രം വിശകലനം ചെയ്യാൻ ശുപാർശചെയ്യുന്നു; പേര്, പതിപ്പ് സംരക്ഷിക്കപ്പെടുകയോ പ്ലാറ്റ്ഫോം മാറ്റുകയോ ചെയ്യുന്ന മാറ്റങ്ങളുടെ സാന്നിധ്യത്തിൽ ക്ഷുദ്രകരമായ പ്രവർത്തനം പ്രകടിപ്പിക്കുന്നു (ഉദാഹരണത്തിന്, രത്നനാമം- 1.2.3 പാക്കേജ് ജെംനെയിം-1.2.3-ജാവയിലേക്ക് അപ്ഡേറ്റ് ചെയ്തു). തുടർച്ചയായ സംയോജന സംവിധാനങ്ങളിലോ പ്രൊജക്‌റ്റുകൾ പ്രസിദ്ധീകരിക്കുമ്പോഴോ മറഞ്ഞിരിക്കുന്ന പാക്കേജ് മാറ്റിസ്ഥാപിക്കുന്നതിൽ നിന്ന് പരിരക്ഷിക്കുന്നതിനുള്ള ഒരു പരിഹാരമെന്ന നിലയിൽ, ഡിപൻഡൻസികൾ പരിഹരിക്കുന്നതിന് "--ഫ്രോസൺ" അല്ലെങ്കിൽ "--ഡിപ്ലോയ്‌മെന്റ്" ഓപ്‌ഷനുകൾക്കൊപ്പം ബണ്ട്‌ലർ ഉപയോഗിക്കാൻ ഡെവലപ്പർമാർ ശുപാർശ ചെയ്യുന്നു.

അവലംബം: opennet.ru

ഒരു അഭിപ്രായം ചേർക്കുക