GitLost: हमने GitHub के AI एजेंट को निजी repos लीक करने के लिए छला

कमज़ोरी की प्रकृति

  • GitHub Agentic Workflows को इस तरह कॉन्फ़िगर किया गया था कि वे:
    • सार्वजनिक issue titles/bodies पढ़ें।
    • सार्वजनिक comments के ज़रिए जवाब दें।
    • अन्य org repos, जिनमें private repos भी शामिल हैं, तक read access रखें।
  • हमलावर public issues में ऐसे निर्देश डाल सकते थे, जिनसे एजेंट private repos पढ़कर उनकी सामग्री public comments में चिपका देता।
  • कई commenters ज़ोर देते हैं कि मुख्य विफलता untrusted issue content और private-repo access के बीच trust boundary का न होना है।

दोष किसका है?

  • एक पक्ष: यह मुख्यतः user misconfiguration है।
    • शोधकर्ताओं ने agent को स्पष्ट रूप से org-wide repo access दिया और उसे untrusted public issues process करने की अनुमति दी।
    • तुलना: किसी CI job को secrets देना और फिर उसे public PRs पर चलाना।
  • दूसरा पक्ष: यह GitHub की design flaw है।
    • सामान्य users उम्मीद करते हैं कि public repo में मौजूद agent unrelated private repos को leak नहीं करेगा।
    • permissions बहुत coarse हैं और GitHub सुरक्षित configuration को आसान या स्पष्ट नहीं बनाता।

Prompt injection और (अ)समाधेय guardrails

  • कई लोगों का तर्क है कि prompt injection LLMs में inherent है: user input ही instructions है, इसलिए “code” और “data” को अलग करने का कोई मज़बूत तरीका नहीं है।
  • SQL injection से तुलना:
    • इस मायने में समान कि untrusted input behavior बदल देता है।
    • लेकिन SQL के विपरीत, prepared statements का कोई समकक्ष नहीं है; guardrails बस और input text हैं और override किए जा सकते हैं।
  • कुछ लोग इसे social engineering के अधिक करीब मानते हैं: इसे केवल process और access control से कम किया जा सकता है, मॉडल को “fix” करके नहीं।

Permissions, architecture, और mitigations

  • व्यापक रूप से साझा राय: वास्तविक बचाव केवल architectural हैं:
    • Agents को prompting user के समान या उससे सख़्त permissions के साथ चलाएँ; कभी भी “root”/org-wide access के साथ नहीं।
    • Agents को एक single repo या संकीर्ण रूप से परिभाषित workflows तक सीमित करें; अलग-अलग tokens के साथ workflows को segment करें।
    • Public input संभालने वाले agents से writes प्रतिबंधित करें, भले ही वे private data पढ़ सकें।
    • Agents को sandbox करें और उन्हें अपने credentials दें; उन्हें untrusted users की तरह मानें।
  • कुछ लोग per-prompt/per-workflow permissions के लिए बेहतर UIs और अधिक granular GitHub tokens सुझाते हैं।

GitHub, cloud, और AI integrations पर भरोसा

  • GitHub/Microsoft के प्रति संदेह:
    • “AI everywhere” की धारणा, जो investor pressure से प्रेरित है, के कारण जल्दबाज़ी और असुरक्षित features जारी किए जा रहे हैं।
    • यह चिंता कि private repo data, opt out न करने पर, Copilot training में चला जाता है।
  • एक दृश्य subgroup self-hosted forges (Forgejo, Codeberg, bare git) की ओर जाने की वकालत करता है ताकि AI integration से बचा जा सके और नियंत्रण वापस पाया जा सके।

विस्तृत विचार

  • कई commenters इसे कमजोर security culture का एक और उदाहरण मानते हैं (“criminal negligence,” “YOLO” shipping)।
  • आम सहमति के themes:
    • LLMs को privileged backend नहीं, बल्कि एक और UI layer की तरह समझना चाहिए।
    • Model-level guardrails पर निर्भर नहीं रहा जा सकता; केवल hard security barriers और least-privilege design ही जोखिम को सार्थक रूप से कम करते हैं।