𝗛𝗶𝗱𝗶𝗻𝗴 𝗶𝘀 𝗡𝗼𝘁 𝘁𝗵𝗲 𝗦𝗮𝗺𝗲 𝗮𝘀 𝗦𝗲𝗰𝘂𝗿𝗶𝗻𝗴
एक गैर-इंजीनियर कार्यकारी (executive) ने हाल ही में दो दिनों में एक B2B SaaS बनाया। उन्होंने सब कुछ लिखने के लिए AI का उपयोग किया। उत्पाद काम करता है। ग्राहक इसका उपयोग करते हैं। फीचर्स तेज़ी से शिप होते हैं।
फिर मुझे इंफ्रास्ट्रक्चर की जिम्मेदारी मिली। मेरा काम उस कोड में जोखिमों को ढूंढना है जो पहले से ही प्रोडक्शन में चल रहा है।
मुझे एक बड़ी सुरक्षा खामी मिली। API key सीधे सोर्स कोड में हार्डकोड की गई थी।
मैंने कार्यकारी को बताया कि यह खतरनाक है। उन्होंने इसे तुरंत ठीक कर दिया।
की (key) कोड से हट गई थी, लेकिन अब यह सेटअप स्टेप के रूप में README फ़ाइल में थी। सीक्रेट कोड से हटकर डॉक्यूमेंटेशन में चला गया था। यह अभी भी रिपॉजिटरी के अंदर ही था। वास्तव में अब इसे ढूंढना और भी आसान था।
मैंने फिर से समस्या समझाई। इस बार, उन्होंने की (key) को डेटाबेस में स्थानांतरित कर दिया।
यह प्रगति जैसा लगा। की (key) रिपॉजिटरी से बाहर थी। लेकिन जब मैंने डेटाबेस की जांच की, तो की (key) वहां प्लेनटेक्स्ट (plaintext) में थी। कोई एन्क्रिप्शन नहीं था। डेटाबेस एक्सेस रखने वाला कोई भी इसे पढ़ सकता था।
की (key) तीन बार स्थानांतरित हुई:
- सोर्स कोड से
- README में
- डेटाबेस में
स्थान बदल गया, लेकिन सुरक्षा में सुधार नहीं हुआ। वे सीक्रेट को केवल छिपा रहे थे, उसे सुरक्षित रूप से गुप्त (conceal) नहीं बना रहे थे।
छिपाने (Hiding) का अर्थ है किसी चीज़ को नज़र से दूर रखना। सुरक्षित रूप से गुप्त बनाने (Concealing) का अर्थ है उसे हमलावर के लिए बेकार बना देना।
सॉफ्टवेयर में, आपको इन नियमों का पालन करना चाहिए:
- अपने रिपॉजिटरी में कभी भी सीक्रेट्स न रखें। इसमें कोड, README फ़ाइलें, या कॉन्फ़िग फ़ाइलें शामिल हैं।
- एनवायरनमेंट वेरिएबल्स (environment variables) या सीक्रेट मैनेजर का उपयोग करके रनटाइम के बाहर से वैल्यूज़ इंजेक्ट करें।
- यदि आप डेटाबेस का उपयोग करते हैं, तो वैल्यू को एन्क्रिप्ट करें। प्लेनटेक्स्ट (plaintext) एक जोखिम है।
- किसी भी ऐसी की (key) को रोटेट (rotate) करें जो कभी भी प्लेनटेक्स्ट में उजागर हुई हो।
ऐसा तब भी हुआ जब कार्यकारी ने उपलब्ध सबसे उन्नत AI मॉडल का उपयोग किया था।
AI आपको ऐसा कोड देने के लिए बनाया गया है जो चलता है। यदि आप इसे अन्यथा नहीं बताते हैं, तो यह खुशी-खुशी ऐसा कोड लिख देगा जिसमें प्लेनटेक्स्ट सीक्रेट शामिल हो। AI क्षमता प्रदान करता है, लेकिन यह स्वचालित रूप से सुरक्षा प्रदान नहीं करता है।
बुद्धिमत्ता तभी सुरक्षा बनती है जब आप जानते हैं कि क्या सुरक्षित करना है।
यदि आपको लगता है कि आपने केवल स्थान बदलकर सुरक्षा की कमी (security hole) को ठीक कर दिया है, तो रुकिए। खुद से पूछें:
- क्या यह अभी भी रिपॉजिटरी में है?
- क्या एक्सेस केवल उन्हीं लोगों तक सीमित है जिन्हें इसकी आवश्यकता है?
- क्या डेटा एन्क्रिप्टेड है?
एक सीक्रेट का स्थान सही होना चाहिए, न कि केवल अदृश्य।
Source: https://dev.to/jun_uen0/playing-hide-and-seek-with-an-api-key-our-cfos-claude-code-kept-hiding-job
Optional learning community: https://t.me/GyaanSetuAi