Claude Code, Cursor ಮತ್ತು Grok Build ನಂತಹ AI ಕೋಡಿಂಗ್ ಅಸಿಸ್ಟೆಂಟ್‌ಗಳು, ಒಬ್ಬ ಡೆವಲಪರ್ ನಂಬಲಾರದ ರೆಪೊಸಿಟರಿಯನ್ನು (untrusted repository) ತೆರೆದ ತಕ್ಷಣವೇ, ಯಾವುದೇ ಕ್ಲಿಕ್ ಅಥವಾ ಪ್ರಾಂಪ್ಟ್ ಇಲ್ಲದೆ ಯಾವುದೇ ಕಮಾಂಡ್‌ಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದು. ಈ ದೋಷವು ಈ ಪರಿಕರಗಳು ಪ್ರಾಜೆಕ್ಟ್‌ನ ಫೈಲ್‌ಗಳನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡಲು Git ನ core.fsmonitor ವೈಶಿಷ್ಟ್ಯವನ್ನು ಬಳಸುವ ರೀತಿಯಿಂದ ಉಂಟಾಗುತ್ತದೆ.

ಈ ಸಮಸ್ಯೆ ಈಗ ಏಕೆ ಮುಖ್ಯವಾಗುತ್ತದೆ

ಡೆವಲಪರ್‌ಗಳು ಕೋಡ್ ಸೂಚಿಸಲು, ಫಂಕ್ಷನ್‌ಗಳನ್ನು ರಿಫ್ಯಾಕ್ಟರ್ ಮಾಡಲು ಅಥವಾ ಇಡೀ ಮಾಡ್ಯೂಲ್‌ಗಳನ್ನು ಬರೆಯಲು ಹೆಚ್ಚಾಗಿ AI ಏಜೆಂಟ್‌ಗಳ ಮೇಲೆ ಅವಲಂಬಿತರಾಗುತ್ತಿದ್ದಾರೆ. ಆ ಏಜೆಂಟ್‌ಗಳಿಗೆ ವರ್ಕ್‌ಸ್ಪೇಸ್‌ನ (workspace) ತ್ವರಿತ ಸ್ನ್ಯಾಪ್‌ಶಾಟ್ ಅಗತ್ಯವಿರುತ್ತದೆ, ಆದ್ದರಿಂದ ಅವು ಹಿನ್ನೆಲೆಯಲ್ಲಿ git status ಅನ್ನು ರನ್ ಮಾಡುತ್ತವೆ. Git ಒಂದು ರೆಪೊಸಿಟರಿಯ .git/config ಫೈಲ್ ಅನ್ನು ಓದಿದಾಗ, core.fsmonitor ಗೆ ನೀಡಲಾದ ಯಾವುದೇ ಮೌಲ್ಯವನ್ನು Git ರನ್ ಮಾಡುವ ಶೆಲ್ ಕಮಾಂಡ್ ಆಗಿ ಪರಿಗಣಿಸಲಾಗುತ್ತದೆ. ದುಷ್ಟ ವ್ಯಕ್ತಿಗಳು ಆ ಕಾನ್ಫಿಗರೇಶನ್ ಎಂಟ್ರಿಯಲ್ಲಿ ಒಂದು ಕೃತಕ ಕಮಾಂಡ್ ಅನ್ನು ಇರಿಸಬಹುದು ಮತ್ತು ಬಳಕೆದಾರರು ಒಂದು ಸಾಲಿನ ಕೋಡ್ ಅನ್ನು ಟೈಪ್ ಮಾಡುವ ಮೊದಲೇ AI ನ ಬ್ಯಾಕ್‌ಗ್ರೌಂಡ್ Git ಕರಲ್ ಅದನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ.

ಈ ಕೋಡ್ ಡೆವಲಪರ್‌ನ ಸ್ವಂತ ಅಧಿಕಾರಗಳೊಂದಿಗೆ (privileges) ರನ್ ಆಗುತ್ತದೆ, ಇದು AI ಏಜೆಂಟ್ ಸಾಮಾನ್ಯವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುವ ಸ್ಯಾಂಡ್‌ಬಾಕ್ಸ್ ಅನ್ನು (sandbox) ಬೈಪಾಸ್ ಮಾಡುತ್ತದೆ. ಪ್ರಾಯೋಗಿಕವಾಗಿ, ಒಂದು ಕಳಂಕಿತ ರೆಪೊಸಿಟರಿಯು ಮಾಲ್‌ವೇರ್ ಅನ್ನು ಇನ್‌ಸ್ಟಾಲ್ ಮಾಡಬಹುದು, ಕ್ರೆಡೆನ್ಶಿಯಲ್‌ಗಳನ್ನು (credentials) ಸೋರಿಯಬಹುದು ಅಥವಾ ಸೋರ್ಸ್ ಫೈಲ್‌ಗಳನ್ನು ಬದಲಾಯಿಸಬಹುದು, ಇವೆಲ್ಲವೂ ಡೆವಲಪರ್ ಅಸಿಸ್ಟೆಂಟ್ ಕೇವಲ ಸಲಹೆಗಳನ್ನು ನೀಡುತ್ತಿದೆ ಎಂದು ನಂಬಿರುವಾಗಲೇ ಸಂಭವಿಸಬಹುದು.

ದಾಳಿ ಹೇಗೆ ನಡೆಯುತ್ತದೆ

  1. ಸಿದ್ಧತೆ – ದಾಳಿಕಾರರು .git/config ನಲ್ಲಿ core.fsmonitor = /path/to/malicious/script ಎಂಬ ಸಾಲನ್ನು ಹೊಂದಿರುವ ರೆಪೊಸಿಟರಿಯನ್ನು ರಚಿಸುತ್ತಾರೆ.
  2. ವಿತರಣೆ – ರೆಪೊಸಿಟರಿಯನ್ನು ಜಿಪ್ ಫೈಲ್ ಆಗಿ ನೀಡಲಾಗುತ್ತದೆ, USB ಸ್ಟಿಕ್‌ನಿಂದ ಕಾಪಿ ಮಾಡಲಾಗುತ್ತದೆ, ಹಂಚಿಕೆಯ ಡ್ರೈವ್ ಮೂಲಕ ಸಿಂಕ್ ಮಾಡಲಾಗುತ್ತದೆ ಅಥವಾ ವಿಕಾರ者的 (victim's) ಯಂತ್ರದಲ್ಲಿ .git ಫೋಲ್ಡರ್ ಈಗಾಗಲೇ ಇರುವಂತೆ ಇರಿಸಲಾಗುತ್ತದೆ.
  3. ಟ್ರಿಗರ್ – ಡೆವಲಪರ್ AI-ಸಕ್ರಿಯ IDE ಯಲ್ಲಿ ಫೋಲ್ಡರ್ ಅನ್ನು ತೆರೆಯುತ್ತಾರೆ. ಅಸಿಸ್ಟೆಂಟ್ ಸಂದರ್ಭವನ್ನು (context) ಸಂಗ್ರಹಿಸಲು git status ಅನ್ನು ರನ್ ಮಾಡುತ್ತದೆ. Git ಸ್ಥಳೀಯ ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ನು ಓದುತ್ತದೆ, core.fsmonitor ಕಮಾಂಡ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ ಮತ್ತು ದುಷ್ಟ ಸ್ಕ್ರಿಪ್ಟ್ ತಕ್ಷಣವೇ ರನ್ ಆಗುತ್ತದೆ.

ಸಾಮಾನ್ಯ git clone ಈ ಅಪಾಯವನ್ನು ಎದುರಿಸುವುದಿಲ್ಲ ಏಕೆಂದರೆ ಕ್ಲೋನ್ ಮಾಡುವುದು ಹೊಸ .git ಡೈರೆಕ್ಟರಿಯನ್ನು ರಚಿಸುತ್ತದೆ, ಅದರಲ್ಲಿ ತಿದ್ದುಪಡಿ ಮಾಡಿದ ಕಾನ್ಫಿಗರೇಶನ್ ಇರುವುದಿಲ್ಲ. ದಾಳಿಯು ದಾಳಿಕಾರರು ಮೊದಲೇ ಇರುವ .git ಫೋಲ್ಡರ್ ಅನ್ನು ಒದಗಿಸಬಹುದಾದಾಗ ಮಾತ್ರ ಕೆಲಸ ಮಾಡುತ್ತದೆ.

ಅಪಾಯದಲ್ಲಿ ಏನಿದೆ

  • ವೈಯಕ್ತಿಕ ಡೆವಲಪರ್‌ಗಳು ತಮ್ಮ ಯಂತ್ರಗಳು ಅರಿವಿಲ್ಲದೆಯೇ ಕಳಂಕಿತವಾಗಬಹುದು ಮತ್ತು AI ಏಜೆಂಟ್ ಪ್ರವೇಶಿಸಬಹುದಾದ ಯಾವುದೇ ಡೇಟಾವನ್ನು ಕಳೆದುಕೊಳ್ಳಬಹುದು.
  • ತಂಡಗಳು ಆಂತರಿಕ ಡ್ರೈವ್‌ಗಳು ಅಥವಾ ಕಾಂಟ್ರಾಕ್ಟರ್ ಜಿಪ್ ಫೈಲ್‌ಗಳ ಮೂಲಕ ಕೋಡ್ ಅನ್ನು ಹಂಚಿಕೊಳ್ಳುತ್ತಿದ್ದರೆ, ಅನೇಕ ವರ್ಕ್‌ಸ್ಟೇಷನ್‌ಗಳಿಗೆ ಈ ಪೇಲೋಡ್ (payload) ಹರಡಬಹುದು.
  • ಪರಿಕರ ಮಾರಾಟಗಾರರು (Tool vendors) ಬಳಕೆದಾರರು ಈ ಉಲ್ಲಂಘನೆಯನ್ನು ಮೂಲ Git ಸಂವಹನಕ್ಕಿಂತ ಹೆಚ್ಚಾಗಿ AI ಅಸಿಸ್ಟೆಂಟ್‌ಗೆ ದೂರುತ್ತಿದ್ದರೆ, ಅವರ ಪ್ರತಿಷ್ಠೆಗೆ ಧಕ್ಕೆ ಬರುವ ಅಪಾಯವಿದೆ.

ದುಷ್ಟ ಕಮಾಂಡ್ ಬಳಕೆದಾರರ ಹಕ್ಕುಗಳನ್ನು ಪರಂಪರೆಯಾಗಿ ಪಡೆಯುವುದರಿಂದ (inherits), ಇದು ಡೆವಲಪರ್ ಮಾಡಬಹುದಾದ ಯಾವುದೇ ಫೈಲ್ ಅನ್ನು ಮಾರ್ಪಡಿಸಬಹುದು, ಇದರಲ್ಲಿ SSH ಕೀಗಳು, ಬಿಲ್ಡ್ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳು ಅಥವಾ ಡಿಪ್ಲಾಯ್ಮೆಂಟ್ ಕ್ರೆಡೆನ್ಶಿಯಲ್‌ಗಳು ಸೇರಿವೆ.

ಡೆವಲಪರ್‌ಗಳು ಇಂದು ತೆಗೆದುಕೊಳ್ಳಬಹುದಾದ ತಡೆಗಟ್ಟುವ ಕ್ರಮಗಳು

  • ಸ್ಥಳೀಯ Git ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ನಂಬಬೇಡಿ. AI ಅಸಿಸ್ಟೆಂಟ್ ಪ್ರತಿ ಬಾರಿ ಪ್ರಾಜೆಕ್ಟ್ ಅನ್ನು ಪ್ರಶ್ನಿಸಿದಾಗ ರೆಪೊಸಿಟರಿಯ ಕಾನ್ಫಿಗರೇಶನ್ ಗ್ಲೋಬಲ್ ಮೌಲ್ಯಗಳನ್ನು ಮೀರಬಹುದು (overrides).

  • ಅಸಿಸ್ಟೆಂಟ್‌ನೊಂದಿಗೆ ಫೋಲ್ಡರ್ ತೆರೆಯುವ ಮೊದಲು core.fsmonitor ಎಂಟ್ರಿಯನ್ನು ಪರಿಶೀಲಿಸಿ:

    git config --get core.fsmonitor
    

    ಯಾವುದೇ ಮೌಲ್ಯ ಕಂಡುಬಂದರೆ, ಅದನ್ನು ಸಂಶಯಾಸ್ಪದವೆಂದು ಪರಿಗಣಿಸಿ.

  • ಈ ಎಂಟ್ರಿಯನ್ನು ತೆಗೆದುಹಾಕಲು:

    git config --local --unset core.fsmonitor
    
  • Git ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದಾದ ಇತರ ಅಪಾಯಕಾರಿ ಕೀಗಳನ್ನು ಪರಿಶೀಲಿಸಿ: hooksPath, sshCommand, pager, editor, filter. ಅವು ಖಾಲಿ ಇವೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಲು ಅದೇ git config --get ಮಾದರಿಯನ್ನು ಬಳಸಿ.

  • ನೀವು AI ಪರಿಕರಕ್ಕೆ ನೀಡಲು ಉದ್ದೇಶಿಸಿರುವ ಯಾವುದೇ ಕೋಡ್‌ಗಾಗಿ ಕ್ಲೀನ್ ಕ್ಲೋನ್‌ಗಳನ್ನು (clean clones) ಆದ್ಯತೆ ನೀಡಿ. ನೀವು ಜಿಪ್ ಅಥವಾ ವರ್ಗಾಯಿಸಲಾದ ಫೋಲ್ಡರ್‌ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಬೇಕಾದಲ್ಲಿ, ಅದರ .git ಡೈರೆಕ್ಟರಿಯನ್ನು ಅಳಿಸಿ ಮತ್ತು ರೆಪೊಸಿಟರಿಯನ್ನು ಮರು-ಪ್ರಾರಂಭಿಸಿ (re-initialize), ಅಥವಾ ಮೇಲಿನ ಪರಿಶೀಲನೆಗಳನ್ನು ಮೊದಲು ಮಾಡಿ.

ಜವಾಬ್ದಾರಿ ಎಲ್ಲಿದೆ

ಈ ದುರ್ಬಲತೆಯು Claude Code, Cursor ಅಥವಾ Grok Build ಅನ್ನು ಚಲಾಯಿಸುವ ಭಾಷಾ ಮಾದರಿಗಳಲ್ಲಿನ (language models) ದೋಷವಲ್ಲ; ಇದು ಆ ಪರಿಕರಗಳು ಫೈಲ್ ಮಾಹಿತಿಯನ್ನು ಸಂಗ್ರಹಿಸುವ ರೀತಿಯ ಪರಿಣಾಮವಾಗಿದೆ. ಕೆಲವು ಮಾರಾಟಗಾರರು Git ಕರಲ್‌ಗಳನ್ನು ಹೆಚ್ಚು ಬಿಗಿಯಾಗಿ ಸ್ಯಾಂಡ್‌ಬಾಕ್ಸ್ ಮಾಡಲು ಪ್ರಾರಂಭಿಸಿದ್ದಾರೆ, ಆದರೆ ಡಿಫಾಲ್ಟ್ ವರ್ತನೆಯು ಇನ್ನೂ ಸ್ಥಳೀಯ ರೆಪೊಸಿಟರಿ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ನಂಬುತ್ತದೆ. AI ಏಜೆಂಟ್ ವರ್ಕ್‌ಸ್ಪೇಸ್ ಅನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡುವಾಗ ಸಂಭಾವ್ಯ ಅಪಾಯಕಾರಿ ಕಾನ್ಫಿಗರೇಶನ್ ಎಂಟ್ರಿಗಳನ್ನು ತೆಗೆದುಹಾಕುವ ಅಥವಾ ನಿರ್ಲಕ್ಷಿಸುವ ಪ್ರಮಾಣಿತವನ್ನು (standard) ಉದ್ಯಮವು ಅಳವಡಿಸಿಕೊಳ್ಳುವವರೆಗೆ, ಡೆವಲಪರ್‌ಗಳು ಅಂತಿಮ ರಕ್ಷಣಾ ಕವಚವಾಗಿರಬೇಕು.

ಮುಂದೆ ಏನನ್ನು ಗಮನಿಸಬೇಕು

  • git status ಅನ್ನು ಕರೆಯುವ ಮೊದಲು Git ಕಾನ್ಫಿಗರೇಶನ್ ಅನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ಶುದ್ಧೀಕರಿಸುವ (sanitize) ಪರಿಕರ ಅಪ್‌ಡೇಟ್‌ಗಳು.
  • ಸುರಕ್ಷಿತ AI-ಸಹಾಯಿತ ಅಭಿವೃದ್ಧಿಗಾಗಿ ಸಮುದಾಯ ಚಾಲಿತ ಮಾರ್ಗಸೂಚಿಗಳು, ಇವುಗಳಲ್ಲಿ ಶಿಫಾರಸು ಮಾಡಲಾದ ಪ್ರಿ-ಫ್ಲೈಟ್ ಪರಿಶೀಲನೆಗಳು (pre-flight checks) ಇರಬಹುದು.
  • ಕೋಡ್ ಕಾರ್ಯಗತಗೊಳಿಸಲು ಶಕ್ತವಾಗಿರುವ ಹೆಚ್ಚುವರಿ Git ಕಾನ್ಫಿಗರೇಶನ್ ಕೀಗಳನ್ನು ಬಹಿರಂಗಪಡಿಸುವ ಭದ್ರತಾ ಸಂಶೋಧನೆಗಳು, ಇದು ಮೇಲೆ ಹೈಲೈಟ್ ಮಾಡಲಾದ ಐದನ್ನು ಮೀರಿ ಪಟ್ಟಿಯನ್ನು ವಿಸ್ತರಿಸಬಹುದು.

ಅಂತಿಮವಾಗಿ: AI ಅಸಿಸ್ಟೆಂಟ್ ಒಂದು ಅನುಕೂಲಕರ ಪೇರ್-ಪ್ರೋಗ್ರಾಮರ್ ಆಗಿರಬಹುದು, ಆದರೆ ಅದು ರೆಪೊಸಿಟರಿಯ Git ಕಾನ್ಫಿಗರೇಶನ್‌ನಲ್ಲಿ ಅಡಗಿರುವ ಯಾವುದೇ ಕಮಾಂಡ್ ಅನ್ನು ಸಂತೋಷದಿಂದ ರನ್ ಮಾಡುತ್ತದೆ. ಅಸಿಸ್ಟೆಂಟ್ ಅದನ್ನು ಮುಟ್ಟುವ ಮೊದಲು ವರ್ಕ್‌ಸ್ಪೇಸ್ ಅನ್ನು ಪರಿಶೀಲಿಸಿ.