FixVibe
Covered by FixVibehigh

Firebase सुरक्षा नियमहरू: अनधिकृत डाटा एक्सपोजर रोक्न

Firebase सुरक्षा नियमहरू फायरस्टोर र क्लाउड भण्डारण प्रयोग गरेर सर्भररहित अनुप्रयोगहरूको लागि प्राथमिक सुरक्षा हुन्। जब यी नियमहरू धेरै अनुमोदक हुन्छन्, जस्तै उत्पादनमा विश्वव्यापी पढ्न वा लेख्ने पहुँचलाई अनुमति दिने, आक्रमणकारीहरूले संवेदनशील डेटा चोर्न वा मेटाउनको लागि इच्छित अनुप्रयोग तर्कलाई बाइपास गर्न सक्छन्। यस अनुसन्धानले सामान्य गलत कन्फिगरेसनहरू, 'परीक्षण मोड' पूर्वनिर्धारितहरूको जोखिमहरू, र पहिचान-आधारित पहुँच नियन्त्रण कसरी लागू गर्ने भनेर अन्वेषण गर्दछ।

CWE-284CWE-863

Firebase सुरक्षा नियमहरूले फायरस्टोर, रियलटाइम डाटाबेस, र क्लाउड भण्डारण [S1] मा डाटा सुरक्षित गर्न एक दानेदार, सर्भर-लागू संयन्त्र प्रदान गर्दछ। किनकि Firebase अनुप्रयोगहरूले प्राय: ग्राहक पक्षबाट यी क्लाउड सेवाहरूसँग अन्तर्क्रिया गर्दछ, यी नियमहरूले ब्याकइन्ड डाटा [S1] मा अनधिकृत पहुँच रोक्न एकमात्र अवरोध प्रतिनिधित्व गर्दछ।

अनुमति दिने नियमहरूको प्रभाव

गलत कन्फिगर गरिएका नियमहरूले महत्त्वपूर्ण डेटा एक्सपोजर [S2] निम्त्याउन सक्छ। यदि नियमहरू अत्याधिक अनुमति दिने सेट गरिएको छ — उदाहरणका लागि, पूर्वनिर्धारित 'परीक्षण मोड' सेटिङहरू प्रयोग गरेर जसले विश्वव्यापी पहुँचलाई अनुमति दिन्छ — परियोजना ID को ज्ञान भएको कुनै पनि प्रयोगकर्ताले सम्पूर्ण डाटाबेस सामग्री [S2] पढ्न, परिमार्जन गर्न वा मेटाउन सक्छ। यसले सबै क्लाइन्ट-साइड सुरक्षा उपायहरूलाई बाइपास गर्छ र यसले प्रयोगकर्ताको संवेदनशील जानकारी वा कुल सेवा अवरोध [S2] गुमाउन सक्छ।

मूल कारण: अपर्याप्त प्राधिकरण तर्क

यी कमजोरीहरूको मूल कारण सामान्यतया प्रयोगकर्ता पहिचान वा स्रोत विशेषताहरू [S3] मा आधारित पहुँच प्रतिबन्धित विशेष सर्तहरू लागू गर्न असफलता हो। विकासकर्ताहरूले request.auth वस्तु [S3] प्रमाणीकरण नगर्ने उत्पादन वातावरणमा प्रायः पूर्वनिर्धारित कन्फिगरेसनहरू सक्रिय छोड्छन्। request.auth को मूल्याङ्कन नगरीकन, प्रणालीले वैध प्रमाणीकृत प्रयोगकर्ता र एक बेनामी अनुरोधकर्ता [S3] बीच भेद गर्न सक्दैन।

प्राविधिक सुधार

Firebase वातावरण सुरक्षित गर्न खुल्ला पहुँचबाट प्रिन्सिपल-अफ-न्यूनतम-विशेषाधिकार मोडेलमा सर्नु आवश्यक छ।

  • प्रमाणीकरण लागू गर्नुहोस्: request.auth वस्तु शून्य [S3] छैन भनेर जाँच गरेर सबै संवेदनशील पथहरूलाई मान्य प्रयोगकर्ता सत्र आवश्यक छ भनी सुनिश्चित गर्नुहोस्।
  • पहिचानमा आधारित पहुँच लागू गर्नुहोस्: प्रयोगकर्ताको UID (request.auth.uid) लाई कागजात भित्रको फिल्ड वा कागजात ID आफैंमा प्रयोगकर्ताहरूले आफ्नै डाटा [S3] मात्र पहुँच गर्न सक्छन् भन्ने कुरा सुनिश्चित गर्नका लागि नियमहरू कन्फिगर गर्नुहोस्।
  • ग्रेन्युलर अनुमति स्कोपिङ: सङ्कलनका लागि विश्वव्यापी वाइल्डकार्डहरू नदिनुहोस्। यसको सट्टा, सम्भावित आक्रमण सतह [S2] कम गर्न प्रत्येक संग्रह र उप-संकलनको लागि विशिष्ट नियमहरू परिभाषित गर्नुहोस्।
  • इम्युलेटर सुइट मार्फत प्रमाणीकरण: स्थानीय रूपमा सुरक्षा नियमहरू परीक्षण गर्न Firebase इमुलेटर सुइट प्रयोग गर्नुहोस्। यसले प्रत्यक्ष वातावरण [S2] मा तैनात गर्नु अघि विभिन्न प्रयोगकर्ता व्यक्तिहरू विरुद्ध पहुँच नियन्त्रण तर्कको प्रमाणीकरणको लागि अनुमति दिन्छ।

कसरी FixVibe यसको लागि परीक्षण गर्दछ

FixVibe ले अब यसलाई पढ्न-मात्र BaaS स्क्यानको रूपमा समावेश गर्दछ। baas.firebase-rules ले समान-मूल JavaScript बन्डलहरूबाट Firebase कन्फिगरेसन निकाल्छ, आधुनिक initializeApp(...) बन्डल आकारहरू सहित, त्यसपछि रियलटाइम डाटाबेस, फायरस्टोर, र ZXBEZVICVK2SXBEZVICVK2tor सँग जाँच गर्दछ। अप्रमाणित पढ्ने मात्र अनुरोधहरू। Firestore को लागि, यो पहिले रूट संग्रह सूची प्रयास गर्दछ; जब सूची अवरुद्ध हुन्छ, यसले users, accounts, customers, customers, orders, users जस्ता सामान्य संवेदनशील संग्रह नामहरूको पनि जाँच गर्दछ। messages, admin, र settings। यसले सफल अज्ञात पढाइ वा सूचीहरू मात्र रिपोर्ट गर्दछ र ग्राहक कागजात सामग्रीहरू लेख्ने, मेटाउने वा भण्डार गर्दैन।