FixVibe
Covered by FixVibehigh

Firebase സുരക്ഷാ നിയമങ്ങൾ: അനധികൃത ഡാറ്റ എക്സ്പോഷർ തടയൽ

Firebase സുരക്ഷാ നിയമങ്ങൾ ഫയർസ്റ്റോറും ക്ലൗഡ് സ്റ്റോറേജും ഉപയോഗിക്കുന്ന സെർവർലെസ് ആപ്ലിക്കേഷനുകൾക്കുള്ള പ്രാഥമിക പ്രതിരോധമാണ്. ഉൽപ്പാദനത്തിൽ ആഗോള വായന അല്ലെങ്കിൽ എഴുത്ത് ആക്സസ് അനുവദിക്കുന്നത് പോലുള്ള ഈ നിയമങ്ങൾ വളരെ അനുവദനീയമായിരിക്കുമ്പോൾ, ആക്രമണകാരികൾക്ക് സെൻസിറ്റീവ് ഡാറ്റ മോഷ്ടിക്കാനോ ഇല്ലാതാക്കാനോ ഉദ്ദേശിച്ച ആപ്ലിക്കേഷൻ ലോജിക് മറികടക്കാൻ കഴിയും. ഈ ഗവേഷണം പൊതുവായ തെറ്റായ കോൺഫിഗറേഷനുകൾ, 'ടെസ്റ്റ് മോഡ്' ഡിഫോൾട്ടുകളുടെ അപകടസാധ്യതകൾ, ഐഡൻ്റിറ്റി അധിഷ്‌ഠിത ആക്‌സസ് കൺട്രോൾ എങ്ങനെ നടപ്പിലാക്കാം എന്നിവ പര്യവേക്ഷണം ചെയ്യുന്നു.

CWE-284CWE-863

Firebase സുരക്ഷാ നിയമങ്ങൾ ഫയർസ്റ്റോർ, റിയൽടൈം ഡാറ്റാബേസ്, ക്ലൗഡ് സ്റ്റോറേജ് [S1] എന്നിവയിൽ ഡാറ്റ പരിരക്ഷിക്കുന്നതിന് ഗ്രാനുലാർ, സെർവർ-നിർവഹിച്ച സംവിധാനം നൽകുന്നു. Firebase ആപ്ലിക്കേഷനുകൾ ക്ലയൻ്റ് വശത്ത് നിന്ന് നേരിട്ട് ഈ ക്ലൗഡ് സേവനങ്ങളുമായി ഇടപഴകുന്നതിനാൽ, ഈ നിയമങ്ങൾ ബാക്കെൻഡ് ഡാറ്റ [S1]-ലേക്കുള്ള അനധികൃത ആക്സസ് തടയുന്ന ഒരേയൊരു തടസ്സത്തെ പ്രതിനിധീകരിക്കുന്നു.

അനുവദനീയമായ നിയമങ്ങളുടെ സ്വാധീനം

തെറ്റായി ക്രമീകരിച്ച നിയമങ്ങൾ [S2] ഗണ്യമായ ഡാറ്റ എക്സ്പോഷറിലേക്ക് നയിച്ചേക്കാം. നിയമങ്ങൾ അമിതമായി അനുവദനീയമായി സജ്ജീകരിച്ചിട്ടുണ്ടെങ്കിൽ-ഉദാഹരണത്തിന്, ആഗോള ആക്സസ് അനുവദിക്കുന്ന സ്ഥിരസ്ഥിതി 'ടെസ്റ്റ് മോഡ്' ക്രമീകരണങ്ങൾ ഉപയോഗിച്ച് - പ്രോജക്റ്റ് ഐഡിയെക്കുറിച്ച് അറിവുള്ള ഏതൊരു ഉപയോക്താവിനും [S2] മുഴുവൻ ഡാറ്റാബേസ് ഉള്ളടക്കവും വായിക്കാനോ പരിഷ്ക്കരിക്കാനോ ഇല്ലാതാക്കാനോ കഴിയും. ഇത് എല്ലാ ക്ലയൻ്റ്-സൈഡ് സുരക്ഷാ നടപടികളെയും മറികടക്കുന്നു, ഇത് സെൻസിറ്റീവ് ഉപയോക്തൃ വിവരങ്ങൾ നഷ്‌ടപ്പെടുന്നതിനും അല്ലെങ്കിൽ [S2] സേവനത്തിൻ്റെ മൊത്തത്തിലുള്ള തടസ്സത്തിനും കാരണമാകും.

മൂലകാരണം: അപര്യാപ്തമായ ഓതറൈസേഷൻ ലോജിക്

ഉപയോക്തൃ ഐഡൻ്റിറ്റി അല്ലെങ്കിൽ റിസോഴ്സ് ആട്രിബ്യൂട്ടുകൾ [S3] അടിസ്ഥാനമാക്കി ആക്സസ് നിയന്ത്രിക്കുന്ന നിർദ്ദിഷ്ട വ്യവസ്ഥകൾ നടപ്പിലാക്കുന്നതിലെ പരാജയമാണ് ഈ കേടുപാടുകളുടെ മൂല കാരണം. request.auth ഒബ്‌ജക്റ്റ് [S3] സാധൂകരിക്കാത്ത പ്രൊഡക്ഷൻ എൻവയോൺമെൻ്റുകളിൽ ഡെവലപ്പർമാർ പതിവായി സ്ഥിരസ്ഥിതി കോൺഫിഗറേഷനുകൾ സജീവമാക്കുന്നു. request.auth മൂല്യനിർണ്ണയം ചെയ്യാതെ, സിസ്റ്റത്തിന് ഒരു നിയമാനുസൃത ആധികാരിക ഉപയോക്താവും ഒരു അജ്ഞാത അപേക്ഷകനും തമ്മിൽ വേർതിരിച്ചറിയാൻ കഴിയില്ല [S3].

സാങ്കേതിക പരിഹാരങ്ങൾ

ഒരു Firebase പരിതസ്ഥിതി സുരക്ഷിതമാക്കുന്നതിന് ഓപ്പൺ ആക്‌സസിൽ നിന്ന് പ്രിൻസിപ്പൽ ഓഫ് ലിസ്റ്റ് പ്രിവിലേജ് മോഡലിലേക്ക് മാറേണ്ടതുണ്ട്.

  • പ്രാമാണീകരണം നടപ്പിലാക്കുക: request.auth ഒബ്‌ജക്റ്റ് ശൂന്യമല്ല [S3] എന്ന് പരിശോധിച്ച് എല്ലാ സെൻസിറ്റീവ് പാഥുകൾക്കും സാധുവായ ഒരു ഉപയോക്തൃ സെഷൻ ആവശ്യമാണെന്ന് ഉറപ്പാക്കുക.
  • ഐഡൻ്റിറ്റി അടിസ്ഥാനമാക്കിയുള്ള ആക്‌സസ് നടപ്പിലാക്കുക: ഉപയോക്താക്കൾക്ക് അവരുടെ സ്വന്തം ഡാറ്റ [S3] മാത്രമേ ആക്‌സസ് ചെയ്യാൻ കഴിയൂ എന്ന് ഉറപ്പാക്കാൻ ഉപയോക്താവിൻ്റെ യുഐഡി (request.auth.uid) ഡോക്യുമെൻ്റിനുള്ളിലെ ഒരു ഫീൽഡുമായോ ഡോക്യുമെൻ്റ് ഐഡിയുമായോ താരതമ്യം ചെയ്യുന്ന നിയമങ്ങൾ കോൺഫിഗർ ചെയ്യുക.
  • ഗ്രാനുലാർ പെർമിഷൻ സ്കോപ്പിംഗ്: ശേഖരങ്ങൾക്കായി ആഗോള വൈൽഡ്കാർഡുകൾ ഒഴിവാക്കുക. പകരം, ആക്രമണ സാധ്യതയുള്ള [S2] പരമാവധി കുറയ്ക്കുന്നതിന് ഓരോ ശേഖരത്തിനും ഉപ-ശേഖരത്തിനും പ്രത്യേക നിയമങ്ങൾ നിർവ്വചിക്കുക.
  • എമുലേറ്റർ സ്യൂട്ട് വഴിയുള്ള മൂല്യനിർണ്ണയം: പ്രാദേശികമായി സുരക്ഷാ നിയമങ്ങൾ പരിശോധിക്കുന്നതിന് Firebase എമുലേറ്റർ സ്യൂട്ട് ഉപയോഗിക്കുക. [S2] ഒരു തത്സമയ പരിതസ്ഥിതിയിലേക്ക് വിന്യസിക്കുന്നതിന് മുമ്പ് വിവിധ ഉപയോക്തൃ വ്യക്തിത്വങ്ങൾക്കെതിരായ ആക്സസ് കൺട്രോൾ ലോജിക് പരിശോധിക്കുന്നതിന് ഇത് അനുവദിക്കുന്നു.

എങ്ങനെയാണ് FixVibe അതിനായി പരീക്ഷിക്കുന്നത്

FixVibe ഇപ്പോൾ ഇത് ഒരു റീഡ്-ഒൺലി BaaS സ്കാൻ ആയി ഉൾപ്പെടുത്തിയിട്ടുണ്ട്. baas.firebase-rules, ആധുനിക initializeApp(...) ബണ്ടിൽ രൂപങ്ങൾ ഉൾപ്പെടെ, അതേ-ഉത്ഭവ ജാവാസ്ക്രിപ്റ്റ് ബണ്ടിലുകളിൽ നിന്ന് Firebase കോൺഫിഗറേഷൻ എക്‌സ്‌ട്രാക്‌റ്റുചെയ്യുന്നു, തുടർന്ന് തത്സമയ ഡാറ്റാബേസ്, ഫയർസ്റ്റോർ, ZBXCVETOR എന്നിവ ഉപയോഗിച്ച് പരിശോധിക്കുന്നു. ആധികാരികതയില്ലാത്ത വായന-മാത്രം അഭ്യർത്ഥനകൾ. ഫയർസ്റ്റോറിനായി, ഇത് ആദ്യം റൂട്ട് കളക്ഷൻ ലിസ്റ്റിംഗ് പരീക്ഷിക്കുന്നു; ലിസ്‌റ്റിംഗ് ബ്ലോക്ക് ചെയ്യപ്പെടുമ്പോൾ, users, accounts, customers, orders, ZXCV6VIXCV6 messages, admin, settings. ഇത് വിജയകരമായ അജ്ഞാത വായനകളോ ലിസ്റ്റിംഗുകളോ മാത്രമേ റിപ്പോർട്ട് ചെയ്യുന്നുള്ളൂ കൂടാതെ ഉപഭോക്തൃ പ്രമാണ ഉള്ളടക്കങ്ങൾ എഴുതുകയോ ഇല്ലാതാക്കുകയോ സംഭരിക്കുകയോ ചെയ്യുന്നില്ല.