BrassCoders ಅವರು ತಾವು ಪರಿಶೀಲಿಸಿದ ಹದಿನೈದು AI-ಸೃಷ್ಟಿತ Python ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳಲ್ಲಿ ಎರಡು ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳಲ್ಲಿ ಹಾರ್ಡ್-ಕೋಡ್ ಮಾಡಲಾದ ರಹಸ್ಯಗಳನ್ನು (hard-coded secrets) ಪತ್ತೆಹಚ್ಚಿದ್ದಾರೆ. ಇದು ದೊಡ್ಡ ಭಾಷಾ ಮಾದರಿಗಳ (large language models) ಔಟ್‌ಪುಟ್‌ನಿಂದ ನೇರವಾಗಿ ಕೋಡ್ ಅನ್ನು ಕಾಪಿ-ಪೇಸ್ಟ್ ಮಾಡುವ ಅಭಿವೃದ್ಧಿಪಡಿಸುವವರಿಗೆ (developers) ಒಂದು ನಿರ್ದಿಷ್ಟ ಅಪಾಯವನ್ನು ಎದುರಿಸುವಂತೆ ಮಾಡುತ್ತದೆ. ಒಂದು ತಪ್ಪಾದ ಕೀ ಅಥವಾ ಪಾಸ್‌ವರ್ಡ್, ಉಪಯುಕ್ತ ಕೋಡ್ ಸ್ನಿಪ್ಪೆಟ್ ಅನ್ನು ವರ್ಷನ್ ಕಂಟ್ರೋಲ್ ಮತ್ತು ಪ್ರೊಡಕ್ಷನ್ ಪರಿಸರಗಳಲ್ಲಿ ಕ್ರೆಡೆನ್ಶಿಯಲ್ ಸೋರಿಕೆಯಾಗುವಂತೆ ಮಾಡಬಹುದು ಎಂದು ಈ ಸಂಶೋಧನೆ ತೋರಿಸುತ್ತದೆ.

ಪರೀಕ್ಷೆಯು ಏನನ್ನು ಬಹಿರಂಗಪಡಿಸಿತು

ಮೊದಲ ಸ್ಕ್ರಿಪ್ಟ್, token_check.py, ಸೆಷನ್ ಟೋಕನ್‌ಗಳಿಗೆ ಸಹಿ ಹಾಕಲು ಒಂದು ಫಂಕ್ಷನ್ ಮತ್ತು ಅದಕ್ಕೆ ಒಂದು "ಬಳಸಬಹುದಾದ ಉದಾಹರಣೆಯನ್ನು" (usable example) ಕೇಳುವ ಪ್ರಾಂಪ್ಟ್‌ನಿಂದ ತಯಾರಿಸಲ್ಪಟ್ಟಿದೆ. ಕೋಡ್ ಅನ್ನು ರನ್ ಮಾಡುವಂತ ለማድረግ, ಮಾಡೆಲ್ ನೇರವಾಗಿ ಸೋರ್ಸ್ ಫೈಲ್‌ನಲ್ಲೇ ಒಂದು HMAC ಸೈನಿಂಗ್ ಕೀಯನ್ನು ಸೇರಿಸಿದೆ.

  • ಸಮಸ್ಯೆ: ರಹಸ್ಯ ಕೀ (secret key) ಕೋಡ್ ಬೇಸ್‌లోనే ಅಡಗಿದೆ.
  • ಅಪಾಯ: ರೆಪೊಸಿಟರಿಯನ್ನು ಓದುವ ಪ್ರವೇಶವಿರುವ ಯಾರೇ ಆದರೂ ಕೀಯನ್ನು ನೋಡಬಹುದು ಮತ್ತು ಆ ಫೈಲ್ ಅನ್ನು ಬಳಸುವ ಯಾವುದೇ ಡಿಪ್ಲಾಯ್ಮೆಂಟ್ ಈ ರಹಸ್ಯವನ್ನು ಪಡೆದುಕೊಳ್ಳುತ್ತದೆ.
  • ಪರಿಣಾಮ: ಕೀಯನ್ನು ಪಡೆಯುವ ದಾಳಿಕೋರರು (attacker) ಮಾನ್ಯವಾದ ಸೆಷನ್ ಟೋಕನ್‌ಗಳನ್ನು ಸೃಷ್ಟಿಸಬಹುದು ಮತ್ತು ಅಥೆಂಟಿಕೇಶನ್ ಪರಿಶೀಲನೆಗಳನ್ನು ಬೈಪಾಸ್ ಮಾಡಬಹುದು.

ಎರಡನೇ ಸ್ಕ್ರಿಪ್ಟ್, email_sender.py, SMTP ಮೂಲಕ ಇಮೇಲ್ ಕಳುಹಿಸುವ ಫಂಕ್ಷನ್ ವಿನಂತಿಗೆ ಉತ್ತರಿಸಿತು. ಉದಾಹರಣೆಯು ತಕ್ಷಣವೇ ಕೆಲಸ ಮಾಡಲಿ ಎಂಬ ಉದ್ದೇಶದಿಂದ ಮಾಡೆಲ್ ಮತ್ತೊಮ್ಮೆ ನೇರವಾದ ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಒದಗಿಸಿದೆ.

  • ಸಮಸ್ಯೆ: ಫಂಕ್ಷನ್ ಕಾಲ್‌ನಲ್ಲಿ ಪಾಸ್‌ವರ್ಡ್ ಪ್ಲೇನ್-ಟೆಕ್ಸ್ಟ್ ಸ್ಟ್ರಿಂಗ್ ಆಗಿ ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತದೆ.
  • ಅಪಾಯ: ಪಾಸ್‌ವರ್ಡ್ ಬದಲಾಯಿಸಲು ಕೋಡ್ ಬದಲಾವಣೆ ಮತ್ತು ಹೊಸ ಡಿಪ್ಲಾಯ್ಮೆಂಟ್ ಅಗತ್ಯವಿರುತ್ತದೆ, ಮತ್ತು ಆ ಕ್ರೆಡೆನ್ಶಿಯಲ್ ಫೈಲ್ ಬಳಸುವ ಪ್ರತಿಯೊಂದು ಪರಿಸರಕ್ಕೂ ಹರಡುತ್ತದೆ.
  • ಪರಿಣಾಮ: ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಸೋರ್ಸ್ ಕಂಟ್ರೋಲ್, ಲಾಗ್‌ಗಳು ಅಥವಾ ಕಂಪೈಲ್ ಮಾಡಲಾದ ಪ್ಯಾಕೇಜ್‌ಗಳಿಂದ ಪಡೆಯಬಹುದು, ಇದು ಇಮೇಲ್ ಸರ್ವರ್‌ಗೆ ಅನಧಿಕೃತ ಪ್ರವೇಶವನ್ನು ನೀಡುತ್ತದೆ.

AI ಏಕೆ ರಹಸ್ಯಗಳನ್ನು ನೀಡುತ್ತದೆ

ದೊಡ್ಡ ಭಾಷಾ ಮಾದರಿಗಳು ಪ್ರಾಂಪ್ಟ್ ಅನ್ನು ಪೂರ್ಣಗೊಳಿಸುವ ಮೂಲಕ ಪಠ್ಯವನ್ನು ಸೃಷ್ಟಿಸುತ್ತವೆ. ಬಳಕೆದಾರರು "ಬಳಸಬಹುದಾದ ಉದಾಹರಣೆ" ಎಂದು ಕೇಳಿದಾಗ, ಮಾಡೆಲ್ ಅದನ್ನು "ಹೆಚ್ಚುವರಿ ಸೆಟಪ್ ಇಲ್ಲದೆ ರನ್ ಆಗುವ ಕೋಡ್" ಎಂದು ಅರ್ಥೈಸಿಕೊಳ್ಳುತ್ತದೆ. ಆದ್ದರಿಂದ ಅದು ಬಿಟ್ಟುಹೋದ ಮೌಲ್ಯಗಳನ್ನು—API ಕೀಗಳು, ಪಾಸ್‌ವರ್ಡ್‌ಗಳು, ಟೋಕನ್‌ಗಳು—ಸಮಂಜಸವಾದ ಪ್ಲೇಸ್‌ಹೋಲ್ಡರ್‌ಗಳಿಂದ ತುಂಬುತ್ತದೆ. ಪ್ರಾಂಪ್ಟ್‌ನಲ್ಲಿ ಸ್ಪಷ್ಟವಾಗಿ ಉಲ್ಲೇಖಿಸದ ಹೊರತು ರಹಸ್ಯ ನಿರ್ವಹಣೆಯ (secret-management) ಉತ್ತಮ ಪದ್ಧತಿಗಳ ಬಗ್ಗೆ ಮಾಡೆಲ್‌ಗೆ ಅರಿವಿರುವುದಿಲ್ಲ.

AI-ಸೃಷ್ಟಿತ ಕೋಡ್‌ನ ಇತ್ತೀಚಿನ Veracode ವಿಶ್ಲೇಷಣೆಯು, 45% ಸ್ನಿಪ್ಪೆಟ್‌ಗಳು OWASP Top 10 ಪಟ್ಟಿಯಲ್ಲಿರುವ ಕನಿಷ್ಠ ಒಂದು ದುರ್ಬಲತೆಯನ್ನು ಹೊಂದಿವೆ ಎಂದು ಕಂಡುಕೊಂಡಿದೆ, ಇದರಲ್ಲಿ ಕ್ರೆಡೆನ್ಶಿಯಲ್ ಎಕ್ಸ್‌ಪೋಸರ್ (credential exposure) ದೊಡ್ಡ ಪಾಲನ್ನು ಹೊಂದಿದೆ. ಈ ಅಂಕಿಅಂಶವು ಈ ಸಮಸ್ಯೆ ಕೇವಲ ಕೆಲವು ಹೊರತಾದ ಪ್ರಕರಣಗಳಿಗೆ ಸೀಮಿತವಾಗಿಲ್ಲ; ಇದು ಈ ಮಾದರಿಗಳನ್ನು ಹೇಗೆ ತರಬೇತಿಗೊಳಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಪ್ರಾಂಪ್ಟ್ ಮಾಡಲಾಗುತ್ತದೆ ಎಂಬುದರ ವ್ಯವಸ್ಥಿತ ಉಪ ಉತ್ಪನ್ನವಾಗಿದೆ ಎಂಬುದನ್ನು ಒತ್ತಿಹೇಳುತ್ತದೆ.

ಅಭಿವೃದ್ಧಿಪಡಿಸುವವರು ಈಗ ತೆಗೆದುಕೊಳ್ಳಬಹುದಾದ ತಡೆಗಟ್ಟುವ ಕ್ರಮಗಳು

ಅತ್ಯಂತ ಸರಳವಾದ ರಕ್ಷಣೆಯೆಂದರೆ ಯಾವುದೇ ರಹಸ್ಯವನ್ನು ಕೋಡ್ ಫೈಲ್‌ನಿಂದ ಹೊರಗಿಡುವುದು. ಎನ್ವಿರಾನ್ಮೆಂಟ್ ವೇರಿಯೇಬಲ್‌ಗಳು (Environment variables) ಅತ್ಯಂತ ಸಾಮಾನ್ಯವಾದ ಮತ್ತು ಭಾಷೆಗಳಿಗೆ ಸಂಬಂಧವಿಲ್ಲದ ವಿಧಾನವಾಗಿದೆ:

# token_check.py – secure version
import os
import hmac
import hashlib

SECRET_KEY = os.environ["HMAC_SECRET_KEY"]

def sign_token(data: bytes) -> str:
    return hmac.new(SECRET_KEY.encode(), data, hashlib.sha256).hexdigest()
# email_sender.py – secure version
import os
import smtplib

smtp_password = os.environ["SMTP_PASSWORD"]
server = smtplib.SMTP("smtp.example.com", 587)
server.starttls()
server.login("noreply@example.com", smtp_password)

os.environ ಬಳಸುವುದು ರನ್‌ಟೈಮ್ ಎನ್ವಿರಾನ್ಮೆಂಟ್‌ನಿಂದ ಮೌಲ್ಯವನ್ನು ಪಡೆಯುತ್ತದೆ, ಇದರಿಂದ ಅದು ವರ್ಷನ್ ಕಂಟ್ರೋಲ್‌ನಿಂದ ಹೊರಗಿಡಲ್ಪಡುತ್ತದೆ ಮತ್ತು ಸೋರ್ಸ್ ಫೈಲ್‌ಗಳನ್ನು ಮುಟ್ಟದೆ ರಹಸ್ಯಗಳನ್ನು ಬದಲಾಯಿಸಲು (rotation) ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. ಇದೇ ಮಾದರಿಯು ಕಮಿಟ್‌ಗಳಿಂದ ಹೊರಗಿಡಲಾದ ಕಾನ್ಫಿಗರೇಶನ್ ಫೈಲ್‌ಗಳು, ಸೀಕ್ರೆಟ್-ಮ್ಯಾನೇಜ್‌ಮೆಂಟ್ ಸೇವೆಗಳು ಅಥವಾ ಕಂಟೇನರ್-ಆರ್ಕೆಸ್ಟ್ರೇಟೆಡ್ ಸೀಕ್ರೆಟ್‌ಗಳೊಂದಿಗೆ ಕೂಡ ಕೆಲಸ ಮಾಡುತ್ತದೆ.

ಹೆಚ್ಚುವರಿ ಸುರಕ್ಷತಾ ಕ್ರಮಗಳು

  • ಕೋಡ್ ವಿಮರ್ಶೆಗಳು (Code reviews): ಸಾಮಾನ್ಯ ರಹಸ್ಯ ಮಾದರಿಗಳಿಗೆ (ಉದಾಹರಣೆಗೆ, ಉದ್ದವಾದ ಆಲ್ಫಾನ್ಯೂಮರಿಕ್ ಸರಣಿಗಳು) ಹೊಂದಿಕೆಯಾಗುವ ಪ್ಲೇನ್ ಸ್ಟ್ರಿಂಗ್‌ಗಳನ್ನು ಗುರುತಿಸುವುದು.
  • ಸ್ಟ್ಯಾಟಿಕ್ ಅನಾಲಿಸಿಸ್ ಟೂಲ್‌ಗಳು (Static analysis tools): ಹೊಸದಾಗಿ ಸೇರಿಸಲಾದ ಫೈಲ್‌ಗಳಲ್ಲಿ ಹಾರ್ಡ್-ಕೋಡ್ ಮಾಡಲಾದ ಕ್ರೆಡೆನ್ಶಿಯಲ್‌ಗಳನ್ನು ಪತ್ತೆಹಚ್ಚಲು ಇದನ್ನು ಬಳಸಬಹುದು.
  • ಪ್ರಾಂಪ್ಟ್ ಇಂಜಿನಿಯರಿಂಗ್ (Prompt engineering): "ಎಲ್ಲಾ ರಹಸ್ಯಗಳಿಗಾಗಿ ಎನ್ವಿರಾನ್ಮೆಂಟ್ ವೇರಿಯೇಬಲ್‌ಗಳನ್ನು ಬಳಸಿ" ಅಥವಾ "ನಿಜವಾದ ಕ್ರೆಡೆನ್ಶಿಯಲ್‌ಗಳನ್ನು ಕೈಬಿಡಿ" ಎಂದು ಮಾಡೆಲ್‌ಗೆ ಸ್ಪಷ್ಟವಾಗಿ ಕೇಳುವುದು.
  • ಜನರೇಷನ್ ನಂತರದ ಲಿಂಟಿಂಗ್ (Post-generation linting): ಕೋಡ್ ಅನ್ನು ಪ್ರಾಜೆಕ್ಟ್‌ಗೆ ಕಾಪಿ ಮಾಡುವ ಮೊದಲು ಸಂಶಯಾಸ್ಪದ ಸ್ಟ್ರಿಂಗ್‌ಗಳಿಗಾಗಿ ಹುಡುಕುವ ಸಣ್ಣ ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ರನ್ ಮಾಡುವುದು.

ವಿರೋಧಾಭಿಪ್ರಾಯ: ಇದರರ್ಥ AI ಕೋಡ್ ಅಸುರಕ್ಷಿತ ಎಂದೇ?

ಹಾರ್ಡ್-ಕೋಡ್ ಮಾಡಲಾದ ರಹಸ್ಯಗಳ ಉಪಸ್ಥಿತಿಯು AI-ಸೃಷ್ಟಿತ ಕೋಡ್ ಸಾರ್ವತ್ರಿಕವಾಗಿ ಅಸುರಕ್ಷಿತವಾಗಿದೆ ಎಂದು ಸೂಚಿಸುವುದಿಲ್ಲ. ಅನೇಕ ಸಂದರ್ಭಗಳಲ್ಲಿ, ಮಾಡೆಲ್ ಸ್ವಚ್ಛವಾದ, ಸುಸಜ್ಜಿತವಾದ ಲಾಜಿಕ್ ಅನ್ನು ಉತ್ಪಾದಿಸುತ್ತದೆ, ಇದು ಅಭಿವೃದ್ಧಿಯನ್ನು ವೇಗಗೊಳಿಸಬಹುದು. ಅಭಿವೃದ್ಧಿಪಡಿಸುವವರು ಭದ್ರತಾ ತಪಾಸಣೆಯಿಲ್ಲದೆ ಔಟ್‌ಪುಟ್ ಅನ್ನು ಪ್ರೊಡಕ್ಷನ್-ರೆಡಿ ಎಂದು ಪರಿಗಣಿಸಿದಾಗ ಅಪಾಯ ಉಂಟಾಗುತ್ತದೆ. AI ಅನ್ನು ಕರಡು ಸಿದ್ಧಪಡಿಸುವ ಸಹಾಯಕನನ್ನಾಗಿ ಪರಿಗಣಿಸಿ, ಸ್ಥಾಪಿತ ಭದ್ರತಾ ಪದ್ಧತಿಗಳಿಗೆ ಪರ್ಯಾಯವಾಗಿ ಬಳಸಬೇಡಿ.

ಮುಂದೆ ಗಮನಿಸಬೇಕಾದವುಗಳು

  • ಟೂಲಿಂಗ್ ಅಪ್‌ಡೇಟ್‌ಗಳು (Tooling updates): AI ಪ್ಲಾಟ್‌ಫಾರ್ಮ್‌ಗಳು ರಹಸ್ಯಗಳನ್ನು ಪ್ಲೇಸ್‌ಹೋಲ್ಡರ್‌ಗಳಿಂದ ಬದಲಾಯಿಸುವ ಸೇಫ್ಟಿ ಫಿಲ್ಟರ್‌ಗಳನ್ನು ಅಳವಡಿಸಿಕೊಳ್ಳಲು ಪ್ರಾರಂಭಿಸುತ್ತಿವೆ. ಆ ಬದಲಾವಣೆಗಳನ್ನು ಗಮನಿಸುವುದು ಅಪಾಯವನ್ನು ಕಡಿಮೆ ಮಾಡಬಹುದು.
  • ನೀತಿ ಬದಲಾವಣೆಗಳು (Policy shifts): ಸಂಸ್ಥೆಗಳು AI-ಸಹಾಯದ ಕೋಡಿಂಗ್‌ಗಾಗಿ ಮಾರ್ಗಸೂಚಿಗಳನ್ನು ಅಧಿಕೃತಗೊಳಿಸಬಹುದು ಮತ್ತು CI ಪೈಪ್‌ಲೈನ್‌ನ ಭಾಗವಾಗಿ ರಹಸ್ಯ ನಿರ್ವಹಣಾ ತಪಾಸಣೆಗಳನ್ನು ಕಡ್ಡಾಯಗೊಳಿಸಬಹುದು.
  • ಸಮುದಾಯದ ಮಾದರಿಗಳು (Community patterns): ಅಭಿವೃದ್ಧಿಪಡಿಸುವವರು ಹೆಚ್ಚು "ಸುರಕ್ಷಿತ ಪ್ರಾಂಪ್ಟ್‌ಗಳನ್ನು" ಹಂಚಿಕೊಳ್ಳುತ್ತಿದ್ದಂತೆ, ಟೋಕನ್ ಸೈನಿಂಗ್ ಅಥವಾ ಇಮೇಲ್ ವಿತರಣೆಯಂತಹ ಸಾಮಾನ್ಯ ಕಾರ್ಯಗಳಿಗಾಗಿ ಬೆಸ್ಟ್-ಪ್ರ್ಯಾಕ್ಟಿಸ್ ಟೆಂಪ್ಲೇಟ್‌ಗಳು ಡಿಫಾಲ್ಟ್ ಔಟ್‌ಪುಟ್ ಆಗಬಹುದು.

ಸಾರಾಂಶ: AI ಸೆಕೆಂಡುಗಳಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸುವ ಕೋಡ್ ಅನ್ನು ರಚಿಸಬಲ್ಲದು, ಆದರೆ ಡೆವಲಪರ್‌ಗಳು ಸೀಕ್ರೆಟ್-ಮ್ಯಾನೇಜ್‌ಮೆಂಟ್ ಶಿಸ್ತನ್ನು ಪಾಲಿಸದಿದ್ದರೆ, ಈ ಅನುಕೂಲವು ಒಂದು ಗುಪ್ತ ವೆಚ್ಚದೊಂದಿಗೆ ಬರುತ್ತದೆ—ಅದು ಇಡೀ ವ್ಯವಸ್ಥೆಯ ಸುರಕ್ಷತೆಯನ್ನು ಕಸಿದುಕೊಳ್ಳಬಲ್ಲ ಎಕ್ಸ್‌ಪೋಸ್ಡ್ ಕ್ರೆಡೆನ್ಶಿಯಲ್‌ಗಳಾಗಿರಬಹುದು. ಪ್ರತಿಯೊಂದು ಸ್ನಿಪ್ಪೆಟ್ ಅನ್ನು ಕರಡು ಪ್ರತಿಯಾಗಿ ಪರಿಗಣಿಸಿ, ಯಾವುದೇ ನೇರ ಸೀಕ್ರೆಟ್‌ಗಳನ್ನು ತೆಗೆದುಹಾಕಿ ಮತ್ತು ಕಮಿಟ್ ಮಾಡುವ ಮೊದಲು ಅವುಗಳನ್ನು ಎನ್ವಿರಾನ್ಮೆಂಟ್ ವೇರಿಯೇಬಲ್ಸ್ ಅಥವಾ ಮೀಸಲಾದ ವಾಲ್ಟ್ ಮೂಲಕ ಸೇರಿಸಿ.