நான் Claude Code-இடம் சாவிகளை ஒப்படைத்தேன். ஒரு வார்மும் (Worm) அவ்வாறே செய்தது.
AI கோடிங் ஏஜெண்டுகள் ஜெய்ல் பிரேக் (jailbroken) செய்யப்படுவதில்லை. அவை நீங்கள் அவற்றை எதற்காக உருவாக்கினீர்களோ, அதையே செய்கின்றன. கட்டளைகளை இயக்க அவை உங்கள் சான்றுகளைப் (credentials) பயன்படுத்துகின்றன. பிரச்சனை என்னவென்றால், தாக்குபவர்கள் உள்ளீட்டை (input) வழங்க முடியும் என்பதுதான்.
சமீபத்திய பாதிப்புகள் (vulnerabilities) இது எவ்வாறு நிகழ்கிறது என்பதற்கான மூன்று வெவ்வேறு வழிகளைக் காட்டுகின்றன.
- சப்ளை செயின் வார்ம் (The Supply Chain Worm) Mini Shai-Hulud எனப்படும் ஒரு வார்ம் 170-க்கும் மேற்பட்ட பேக்கேஜ்களைப் பாதித்தது. அது சாவிகளைத் திருடிவிட்டு மட்டும் வெளியேறுவதில்லை. அது உங்கள் கான்ஃபிக் கோப்புகளில் (config files) தன்னைத் தானே எழுதிக் கொள்கிறது. இது .vscode/tasks.json அல்லது .claude/settings.json ஆகியவற்றில் ஒளிந்து கொள்கிறது. நீங்கள் ஒரு ஃபோல்டரைத் திறக்கும்போதோ அல்லது ஒரு செஷனைத் தொடங்கும்போதோ இந்த கோப்புகள் தானாகவே குறியீட்டை (code) இயக்கும். நீங்கள் அந்தத் தவறான பேக்கேஜை நீக்கினாலும், அந்தத் தீங்கிழைக்கும் ஹூக் (malicious hook) உங்கள் டிஸ்க்கிலேயே தங்கிவிடும்.
- அலோலிஸ்ட் பைபாஸ் (The Allowlist Bypass) Cursor எடிட்டர், ஆட்டோ-ரன் (auto-run) பாதுகாப்பாக இருப்பதை உறுதி செய்ய an allowlist-ஐப் பயன்படுத்துகிறது. தாக்குபவர்கள் export போன்ற ஷெல் பில்ட்-இன்களைப் (shell built-ins) பயன்படுத்தி அதைத் தவிர்க்க ஒரு வழியைக் கண்டறிந்துள்ளனர். ப்ராம்ப்ட் இன்ஜெக்ஷன் (prompt injection) மூலம், ஒரு தாக்குபவர் ஏஜென்ட்டை ஒரு நச்சுத்தன்மை வாய்ந்த என்விரான்மென்ட் வேரியபிளை (environment variable) அமைக்கச் செய்கிறார். இது அங்கீகரிக்கப்பட்ட ஒரு கட்டளை நீங்கள் நினைக்காத வகையில் செயல்பட வைக்கிறது. இந்த பாதுகாப்பு கட்டுப்பாடு மனிதர்களுக்காக உருவாக்கப்பட்டதே தவிர, இயந்திரங்களுக்காக அல்ல என்பதால் அது தோல்வியடைந்தது.
- புரோட்டோகால் குறைபாடு (The Protocol Flaw) mcp-remote ப்ராக்ஸியில் (proxy) ஒரு முக்கியமான கமாண்ட் இன்ஜெக்ஷன் குறைபாடு உள்ளது. நீங்கள் ஒரு தீங்கிழைக்கும் MCP சர்வருடன் இணைந்தால், ஹேண்ட்ஷேக் (handshake) செய்யும் போது அது உங்கள் கணினியில் கட்டளைகளை இயக்க முடியும். கிளையண்ட் (client) தான் தொடர்பு கொள்ளும் சர்வரை நம்புவதால் இது நிகழ்கிறது.
இதன் அடிப்படைப் பிரச்சனை எளிமையானது. ஒரு கோடிங் ஏஜென்ட், தரவுக்கும் (data) கட்டளைகளுக்கும் (commands) இடையிலான எல்லையைத் துடைத்துவிடுகிறது. ஒரு LLM அறிவுறுத்தல்களையும் (instructions) வெளித் தரவுகளையும் ஒரே மாதிரியாகப் பார்க்கிறது. நீங்கள் சொல்வதற்கும், உலகம் ஏஜென்ட்டிடம் சொல்வதற்கும் இடையே எந்த எல்லையும் இல்லை.
உங்களைப் பாதுகாத்துக் கொள்வது எப்படி:
- உங்கள் என்விரான்மென்ட் வேரியபிள்களில் (environment variables) நீண்ட காலம் செயல்படும் சாவிகளுக்குப் பதிலாக, குறுகிய கால டோக்கன்களைப் (short-lived tokens) பயன்படுத்துங்கள்.
- ரகசியங்கள் (secrets) அல்லது புரொடக்ஷன் (production) சார்ந்த எந்தவொரு பணிக்கிற்கும் ஆட்டோ-ரன் (auto-run) வசதியை அணைத்துவிடுங்கள்.
- .claude/settings.json போன்ற உங்கள் கான்ஃபிக் கோப்புகளில் எதிர்பாராத மாற்றங்கள் ஏற்படுகிறதா என்பதைக் கண்காணியுங்கள்.
- புரோவனன்ஸ் அட்ஸ்டேஷன்களை (provenance attestations) மூலத்தின் ஆதாரம் என்று கருதுங்கள், பாதுகாப்பின் ஆதாரம் என்று அல்ல.
- உங்கள் டிபென்டென்சிகளை (dependencies) குறிப்பிட்ட ஹாஷ்களுக்கு (hashes) பின் (pin) செய்யுங்கள்.
உங்கள் AI ஏஜென்ட்டை மற்ற உயர்-அதிகார செயல்முறைகளைப் (high-privilege process) போலக் கருதுங்கள். அதற்குத் தெளிவான எல்லைகள் தேவை.
நீங்கள் ஏஜெண்டுகளை ஆட்டோ-ரன் முறையில் இயக்கினால், அது எப்போது வேலை செய்ய வேண்டும் மற்றும் எப்போது நிறுத்தப்பட வேண்டும் என்பதை எப்படித் தீர்மானிக்கிறீர்கள்?
Source: https://dev.to/kkierii/i-gave-claude-code-the-keys-so-did-a-worm-34a4
Optional learning community: https://t.me/GyaanSetuAi