ಅಡಗಿಸುವುದು ಮತ್ತು ಸುರಕ್ಷಿತಗೊಳಿಸುವುದು ಒಂದೇ ಅಲ್ಲ
ಇತ್ತೀಚೆಗೆ ಒಬ್ಬ ಎಂಜಿನಿಯರ್ ಅಲ್ಲದ ಎಕ್ಸಿಕ್ಯೂಟಿವ್ ಇಬ್ಬರು ದಿನಗಳಲ್ಲಿ B2B SaaS ಅನ್ನು ನಿರ್ಮಿಸಿದರು. ಅವರು ಎಲ್ಲವನ್ನೂ ಬರೆಯಲು AI ಅನ್ನು ಬಳಸಿದರು. ಉತ್ಪನ್ನವು ಕೆಲಸ ಮಾಡುತ್ತದೆ. ಗ್ರಾಹಕರು ಅದನ್ನು ಬಳಸುತ್ತಾರೆ. ಫೀಚರ್ಗಳು ವೇಗವಾಗಿ ಬಿಡುಗಡೆಯಾಗುತ್ತವೆ.
ನಂತರ ನಾನು ಆ ಮೂಲಸೌಕರ್ಯವನ್ನು (infrastructure) ವಹಿಸಿಕೊಂಡೆ. ಪ್ರೊಡಕ್ಷನ್ನಲ್ಲಿ ಈಗಾಗಲೇ ಚಾಲನೆಯಲ್ಲಿರುವ ಕೋಡ್ನಲ್ಲಿನ ಅಪಾಯಗಳನ್ನು ಪತ್ತೆಹಚ್ಚುವುದು ನನ್ನ ಕೆಲಸ.
ನನಗೆ ಒಂದು ದೊಡ್ಡ ಭದ್ರತಾ ಲೋಪ ಕಂಡುಬಂದಿತು. API key ಅನ್ನು ನೇರವಾಗಿ ಸೋರ್ಸ್ ಕೋಡ್ನಲ್ಲಿ ಹಾರ್ಡ್ಕೋಡ್ ಮಾಡಲಾಗಿತ್ತು.
ಇದು ಅಪಾಯಕಾರಿ ಎಂದು ನಾನು ಎಕ್ಸಿಕ್ಯೂಟಿವ್ಗೆ ತಿಳಿಸಿದೆ. ಅವರು ತಕ್ಷಣವೇ ಅದನ್ನು ಸರಿಪಡಿಸಿದರು.
ಕೀಲಿಯು ಕೋಡ್ನಿಂದ ಹೊರಗುಳಿದಿತು, ಆದರೆ ಈಗ ಅದು ಸೆಟಪ್ ಹಂತವಾಗಿ README ಫೈಲ್ನಲ್ಲಿತ್ತು. ರಹಸ್ಯವು ಕೋಡ್ನಿಂದ ಡಾಕ್ಯುಮೆಂಟೇಶನ್ಗೆ ವರ್ಗಾವಣೆಯಾಯಿತು. ಅದು ಇನ್ನೂ ರೆಪೊಸಿಟರಿಯಲ್ಲೇ ಇತ್ತು. ವಾಸ್ತವವಾಗಿ ಈಗ ಅದನ್ನು ಹುಡುಕುವುದು ಇನ್ನೂ ಸುಲಭವಾಗಿತ್ತು.
ನಾನು ಸಮಸ್ಯೆಯನ್ನು ಮತ್ತೆ ವಿವರಿಸಿದೆ. ಈ ಬಾರಿ, ಅವರು ಕೀಲಿಯನ್ನು ಡೇಟಾಬೇಸ್ಗೆ ವರ್ಗಾಯಿಸಿದರು.
ಅದು ಪ್ರಗತಿಯಂತೆ ಭಾಸವಾಯಿತು. ಕೀಲಿಯು ರೆಪೊಸಿಟರಿಯಿಂದ ಹೊರಗೆ ಇತ್ತು. ಆದರೆ ನಾನು ಡೇಟಾಬೇಸ್ ಪರಿಶೀಲಿಸಿದಾಗ, ಕೀಲಿಯು ಪ್ಲೇನ್ಟೆಕ್ಸ್ಟ್ (plaintext) ರೂಪದಲ್ಲಿ ಅಲ್ಲೇ ಇತ್ತು. ಅಲ್ಲಿ ಯಾವುದೇ ಎನ್ಕ್ರಿಪ್ಶನ್ ಇರಲಿಲ್ಲ. ಡೇಟಾಬೇಸ್ ಪ್ರವೇಶ ಹೊಂದಿರುವ ಯಾರೇ ಆದರೂ ಅದನ್ನು ಓದಬಹುದಿತ್ತು.
ಕೀಲಿಯು ಮೂರು ಬಾರಿ ಚಲಿಸಿತು:
- ಸೋರ್ಸ್ ಕೋಡ್ನಿಂದ
- README ಗೆ
- ಡೇಟಾಬೇಸ್ಗೆ
ಸ್ಥಳ ಬದಲಾಯಿತು, ಆದರೆ ಭದ್ರತೆ ಸುಧಾರಿಸಲಿಲ್ಲ. ಅವರು ರಹಸ್ಯವನ್ನು ಅಡಗಿಸುತ್ತಿದ್ದರು (hiding), ಆದರೆ ಅದನ್ನು ಮರೆಮಾಚುತ್ತಿರಲಿಲ್ಲ (concealing).
ಅಡಗಿಸುವುದು (Hiding) ಎಂದರೆ ಯಾವುದನ್ನಾದರೂ ಕಣ್ಣಿಗೆ ಕಾಣದಂತೆ ಇಡುವುದು. ಮರೆಮಾಚುವುದು (Concealing) ಎಂದರೆ ಅದನ್ನು ದಾಳಿಕಾರರಿಗೆ (attacker) ನಿರುಪಯುಕ್ತವಾಗುವಂತೆ ಮಾಡುವುದು.
ಸಾಫ್ಟ್ವೇರ್ನಲ್ಲಿ, ನೀವು ಈ ನಿಯಮಗಳನ್ನು ಅನುಸರಿಸಬೇಕು:
- ನಿಮ್ಮ ರೆಪೊಸಿಟರಿಯಲ್ಲಿ ಎಂದಿಗೂ ರಹಸ್ಯಗಳನ್ನು ಇಡಬೇಡಿ. ಇದು ಕೋಡ್, README ಫೈಲ್ಗಳು ಅಥವಾ ಕಾನ್ಫಿಗರೇಶನ್ ಫೈಲ್ಗಳನ್ನು ಒಳಗೊಂಡಿದೆ.
- ಎನ್ವಿರಾನ್ಮೆಂಟ್ ವೇರಿಯೇಬಲ್ಗಳು (environment variables) ಅಥವಾ ಸೀಕ್ರೆಟ್ ಮ್ಯಾನೇಜರ್ ಬಳಸಿ ರನ್ಟೈಮ್ನ ಹೊರಗಿನಿಂದ ಮೌಲ್ಯಗಳನ್ನು ಇಂಜೆಕ್ಟ್ ಮಾಡಿ.
- ನೀವು ಡೇಟಾಬೇಸ್ ಬಳಸುತ್ತಿದ್ದರೆ, ಮೌಲ್ಯವನ್ನು ಎನ್ಕ್ರಿಪ್ಟ್ ಮಾಡಿ. ಪ್ಲೇನ್ಟೆಕ್ಸ್ಟ್ ಒಂದು ಹೊರೆ (liability).
- ಪ್ಲೇನ್ಟೆಕ್ಸ್ಟ್ ರೂಪದಲ್ಲಿ ಬಹಿರಂಗಗೊಂಡ ಯಾವುದೇ ಕೀಲಿಯನ್ನು ರೋಟೇಟ್ (rotate) ಮಾಡಿ.
ಎಕ್ಸಿಕ್ಯೂಟಿವ್ ಲಭ್ಯವಿರುವ ಅತ್ಯಾಧುನಿಕ AI ಮಾಡೆಲ್ಗಳನ್ನು ಬಳಸಿದ್ದರೂ ಸಹ ಇದು ಸಂಭವಿಸಿತು.
AI ನಿಮಗೆ ಚಾಲನೆಯಲ್ಲಿರುವ ಕೋಡ್ ನೀಡಲು ನಿರ್ಮಿಸಲಾಗಿದೆ. ನೀವು ಇಲ್ಲವೆಂದು ಹೇಳದಿದ್ದರೆ, ಪ್ಲೇನ್ಟೆಕ್ಸ್ಟ್ ರಹಸ್ಯವನ್ನು ಹೊಂದಿರುವ ಕೋಡ್ ಅನ್ನು ಅದು ಸಂತೋಷದಿಂದ ಬರೆಯುತ್ತದೆ. AI ಸಾಮರ್ಥ್ಯವನ್ನು ನೀಡುತ್ತದೆ, ಆದರೆ ಅದು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸುರಕ್ಷತೆಯನ್ನು ನೀಡುವುದಿಲ್ಲ.
ಏನನ್ನು ರಕ್ಷಿಸಬೇಕೆಂದು ನಿಮಗೆ ತಿಳಿದಿದ್ದಾಗ ಮಾತ್ರ ಬುದ್ಧಿವಂತಿಕೆಯು ಸುರಕ್ಷತೆಯಾಗುತ್ತದೆ.
ನೀವು ಕೇವಲ ಸ್ಥಳವನ್ನು ಬದಲಾಯಿಸಿದ್ದರಿಂದ ಭದ್ರತಾ ಲೋಪವನ್ನು ಸರಿಪಡಿಸಿದ್ದೀರಿ ಎಂದು ಭಾವಿಸಿದರೆ, ನಿಲ್ಲಿಸಿ. ನಿಮ್ಮನ್ನು ನೀವೇ ಕೇಳಿಕೊಳ್ಳಿ:
- ಅದು ಇನ್ನೂ ರೆಪೊಸಿಟರಿಯಲ್ಲಿ ಇದೆಯೇ?
- ಪ್ರವೇಶವು ಅಗತ್ಯವಿರುವ ಜನರಿಗೆ ಮಾತ್ರ ಸೀಮಿತವಾಗಿದೆಯೇ?
- ಡೇಟಾ ಎನ್ಕ್ರಿಪ್ಟ್ ಆಗಿದೆಯೇ?
ರಹಸ್ಯವು ಕೇವಲ ಕಣ್ಣಿಗೆ ಕಾಣದ ಸ್ಥಳದಲ್ಲಿರದೆ, ಸರಿಯಾದ ಸ್ಥಳದಲ್ಲಿರಬೇಕು.
ಮೂಲ: https://dev.to/jun_uen0/playing-hide-and-seek-with-an-api-key-our-cfos-claude-code-kept-hiding-job
ಐಚ್ಛಿಕ ಕಲಿಕಾ ಸಮುದಾಯ: https://t.me/GyaanSetuAi