𝗦𝗲𝗰𝘂𝗿𝗶𝗻𝗴 𝗔𝗜-𝗚𝗲𝗻𝗲𝗿𝗮𝘁𝗲𝗱 𝗕𝗮𝘀𝗵 𝗦𝗰𝗿𝗶𝗽𝘁𝘀
AI ಸುಲಭವಾಗಿ Bash ಬರೆಯುತ್ತದೆ. ಆದರೆ ಅದು ಸುಲಭವಾಗಿ ತಪ್ಪುಗಳನ್ನೂ ಮಾಡುತ್ತದೆ. ಒಂದು ವೇರಿಯೇಬಲ್ (variable) ಖಾಲಿ ಇದ್ದರೆ, ಒಂದು ಸಣ್ಣ ಸ್ಕ್ರಿಪ್ಟ್ ನಿಮ್ಮ ಇಡೀ ಹೋಮ್ ಡೈರೆಕ್ಟರಿಯನ್ನೇ (home directory) ಅಳಿಸಿಹಾಕಬಹುದು. ಒಂದು ಸಾಮಾನ್ಯ ಲಾಗ್ ಸ್ಕ್ರಿಪ್ಟ್ ನಿಮ್ಮ ರಹಸ್ಯಗಳನ್ನು ಸಾರ್ವಜನಿಕ ಸರ್ವರ್ಗೆ ಸೋರಿಕೆ ಮಾಡಬಹುದು.
ನಾನು ಕೆಟ್ಟ 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 ತಪ್ಪುಗಳ ಬಗ್ಗೆ ಎಚ್ಚರವಿರಲಿ:
ಕೊಟ್ಸ್ಗಳ ಕೊರತೆ (Missing Quotes) AI ಹೆಚ್ಚಾಗಿ ಹೀಗೆ ಬರೆಯುತ್ತದೆ:
rm -rf $TARGET_DIRನೀವು ಹೀಗೆ ಬರೆಯಬೇಕು:rm -rf "$TARGET_DIR"ಕೊಟ್ಸ್ಗಳಿಲ್ಲದಿದ್ದರೆ, ಫೋಲ್ಡರ್ ಹೆಸರಿನಲ್ಲಿರುವ ಒಂದು ಸ್ಪೇಸ್ ತಪ್ಪಾದ ಫೈಲ್ಗಳನ್ನು ಅಳಿಸಿಹಾಕಬಹುದು. ಯಾವಾಗಲೂ ನಿಮ್ಮ ವೇರಿಯೇಬಲ್ಗಳನ್ನು ಡಬಲ್ ಕೊಟ್ಸ್ಗಳ ಒಳಗೆ ಇರಿಸಿ.ರಹಸ್ಯಗಳ ಸೋರಿಕೆ (Secret Leaks) AI ಹೆಚ್ಚಾಗಿ ಡಿಬಗ್ ಮಾಡಲು
set -xಅನ್ನು ಬಳಸುತ್ತದೆ. ಇದು ಪ್ರತಿಯೊಂದು ಕಮಾಂಡ್ ಅನ್ನು ನಿಮ್ಮ ಲಾಗ್ಸ್ಗೆ ಪ್ರಿಂಟ್ ಮಾಡುತ್ತದೆ. ನೀವು API ಟೋಕನ್ ಬಳಸುತ್ತಿದ್ದರೆ, ಆ ಟೋಕನ್ ಈಗ ನಿಮ್ಮ CI ಲಾಗ್ಸ್ಗಳಲ್ಲಿ ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತದೆ. ಸೂಕ್ಷ್ಮ ಮಾಹಿತಿಯನ್ನು ಮರೆಮಾಡಲು ಯಾವಾಗಲೂset -xಅನ್ನು ತೆಗೆದುಹಾಕಿ ಅಥವಾset +xಬಳಸಿ.ಅತಿಯಾದ ಅಧಿಕಾರ (Too Much Privilege) AI ಹೆಚ್ಚಾಗಿ ಪ್ರತಿ ಕಮಾಂಡ್ಗೆ
sudoಅನ್ನು ಸೇರಿಸುತ್ತದೆ. ಇದನ್ನು ಮಾಡಬೇಡಿ. ಸಾಧ್ಯವಾದಾಗಲೆಲ್ಲಾ ಸ್ಕ್ರಿಪ್ಟ್ಗಳನ್ನು non-root ಬಳಕೆದಾರರಾಗಿ ಚಲಾಯಿಸಿ. ಇದರಿಂದ ಏನಾದರೂ ತಪ್ಪಾದಲ್ಲಿ ಹಾನಿಯನ್ನು ಮಿತಿಗೊಳಿಸಬಹುದು.ಅಪಾಯಕಾರಿ ಡೌನ್ಲೋಡ್ಗಳು (Dangerous Downloads) ಎಂದಿಗೂ ಹೀಗೆ ಚಲಾಯಿಸಬೇಡಿ:
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 ಔಟ್ಪುಟ್ ಅನ್ನು ಕೇವಲ ಒಂದು ಕರಡು (draft) ಎಂದು ಪರಿಗಣಿಸಿ. ನಿಮ್ಮ ಪ್ರಾಂಪ್ಟ್ನಲ್ಲಿ (prompt) ಸುರಕ್ಷತಾ ಅವಶ್ಯಕತೆಗಳನ್ನು ಸೇರಿಸಿ ಅಥವಾ ಕೋಡ್ ಅನ್ನು ನೀವೇ ಬಲಪಡಿಸಿ. ಮೊದಲು ಪರಿಶೀಲಿಸದೆ AI bash ಸ್ಕ್ರಿಪ್ಟ್ಗಳನ್ನು ಚಲಾಯಿಸಬೇಡಿ.
Source: https://dev.to/devopsaitoolkit/securing-ai-generated-bash-scripts-before-you-run-them-401m
Optional learning community: https://t.me/GyaanSetuAi