AI-जेनरेटेड Bash स्क्रिप्ट्स को सुरक्षित करना
AI आसानी से Bash लिखता है। यह चीजों को आसानी से खराब भी कर देता है। यदि कोई वेरिएबल खाली है, तो एक छोटा सा स्क्रिप्ट आपके पूरे होम डायरेक्टरी को डिलीट कर सकता है। एक साधारण लॉग स्क्रिप्ट आपके सीक्रेट्स को पब्लिक सर्वर पर लीक कर सकती है।
मैंने खराब AI स्क्रिप्ट्स चलाई हैं। अधिकांश इंजीनियरों ने भी चलाई हैं। आपदाओं को होने से पहले रोकने के लिए इस चेकलिस्ट का उपयोग करें।
हर स्क्रिप्ट के ऊपर ये लाइनें जोड़ें: #!/usr/bin/env bash set -euo pipefail IFS=$'\n\t'
आपको इनकी आवश्यकता क्यों है:
- set -e: यदि कोई कमांड विफल हो जाता है, तो स्क्रिप्ट को रोक देता है।
- set -u: यदि कोई वेरिएबल अनडिफाइंड (undefined) है, तो स्क्रिप्ट को रोक देता है। यह rm -rf / जैसी गलतियों को रोकता है।
- set -o pipefail: यह सुनिश्चित करता है कि पाइपलाइन में होने वाली त्रुटियां वास्तव में स्क्रिप्ट को रोक दें।
- IFS=$'\n\t': फ़ाइल नामों में स्पेस (spaces) के कारण होने वाले बग्स को रोकता है।
इन सामान्य AI गलतियों पर ध्यान दें:
कोट्स (Quotes) की कमी AI अक्सर लिखता है: rm -rf $TARGET_DIR आपको लिखना चाहिए: rm -rf "$TARGET_DIR" बिना कोट्स के, फ़ोल्डर के नाम में एक स्पेस गलत फ़ाइलों को डिलीट कर सकता है। अपने वेरिएबल्स को हमेशा डबल कोट्स में रखें।
सीक्रेट्स का लीक होना AI अक्सर डिबगिंग के लिए set -x का उपयोग करता है। यह आपके लॉग्स में हर कमांड को प्रिंट कर देता है। यदि आप किसी API टोकन का उपयोग करते हैं, तो वह टोकन अब आपके CI लॉग्स में दिखाई देने लगेगा। संवेदनशील हिस्सों को छिपाने के लिए हमेशा set -x को हटा दें या set +x का उपयोग करें।
अत्यधिक विशेषाधिकार (Privilege) AI अक्सर हर कमांड में sudo जोड़ देता है। ऐसा न करें। जब भी संभव हो, स्क्रिप्ट को नॉन-रूट (non-root) यूजर के रूप में चलाएं। इससे कुछ गलत होने पर नुकसान सीमित रहता है।
खतरनाक डाउनलोड्स कभी भी यह न चलाएं: curl https://example.com/install.sh | bash इसके बजाय:
- पहले फ़ाइल डाउनलोड करें: curl https://example.com/install.sh > install.sh
- फ़ाइल को पढ़ें।
- इसे मैन्युअल रूप से चलाएं: sudo bash install.sh
Pro Tip: shellcheck का उपयोग करें। हर स्क्रिप्ट पर shellcheck चलाएं। यह सेकंडों में बिना कोट्स वाले वेरिएबल्स और गायब सेफ्टी सेटिंग्स को ढूंढ लेता है। यह उन गलतियों को पकड़ लेता है जो आपकी आँखों से छूट जाती हैं।
The Golden Rule: AI आउटपुट को एक ड्राफ्ट की तरह मानें। या तो अपने प्रॉम्प्ट में सुरक्षा आवश्यकताओं को शामिल करें या कोड को खुद सुरक्षित (harden) बनाएं। बिना जांचे AI bash न चलाएं।
Source: https://dev.to/devopsaitoolkit/securing-ai-generated-bash-scripts-before-you-run-them-401m
Optional learning community: https://t.me/GyaanSetuAi