3 पॉइंट द्वारा GN⁺ 3 시간 전 | 2 टिप्पणियां | WhatsApp पर शेयर करें
  • sudo अधिकार न होने वाले PC पर Codex ने एक "workaround" खोज निकाला
  • "यह कैसे किया? क्या इसके लिए sudo नहीं चाहिए था?" इस सवाल पर जवाब था कि sudo नहीं था, लेकिन root-equivalent access की ज़रूरत थी
  • Codex द्वारा समझाया गया तरीका
    • sudo और run0 कमांड non-interactive environment में काम नहीं करते
    • उपयोगकर्ता docker group का सदस्य था, और उस मशीन पर इसका मतलब था कि Docker container को root के रूप में शुरू कर सकता है और host path को writable bind-mount कर सकता है
    • इसका इस्तेमाल करके मौजूदा backup को live config के ऊपर कॉपी किया गया
  • नीचे दिए गए कमांड से /etc को container में bind-mount किया गया, फिर install कमांड से backup को मूल config पर overwrite किया गया
    docker run --rm --pull=never -v /etc: ubuntu:22.04 \
    /usr/bin/install -m 0644 -o 0 -g 0 /host-etc/sddm.conf.bak /host-etc/sddm.conf  
    

कम्युनिटी चर्चा

  • मुख्य मुद्दा Codex नहीं, बल्कि docker group है; नई बात यह है कि agent ज़्यादातर उपयोगकर्ताओं से तेज़ी से इस trap को ढूंढ लेते हैं
  • rootless docker इंस्टॉल करने की सिफारिश; जिन सिस्टमों में rootless docker नहीं है, वहाँ AI agent को बिना निगरानी न चलाएँ; यह एक क्लासिक privilege escalation vector है और ज़्यादातर LLM इसे आज़माते हैं
  • Docker documentation में पहले से बड़ा warning मौजूद है (docker group = root अधिकार के बराबर)
  • यह Docker की design problem है; Docker आम Linux users/agents को root access देने की ओर ले जाता है, इसलिए इसे Docker का bug भी माना जा सकता है
  • विकल्प के रूप में podman rootless इस्तेमाल करने की सिफारिश
  • यह उपयोगकर्ता के कंप्यूटर के बारे में नहीं, बल्कि docker container के बारे में है, इसलिए यह कुछ हद तक भ्रामक हो सकता है

2 टिप्पणियां

 
master6559 44 분 전

क्या मतलब है
पता नहीं non-developers इसके खिलाफ ऐसे मामलों में ठीक से संभल भी पाएंगे या नहीं

 
GN⁺ 3 시간 전
Hacker News टिप्पणियाँ
  • जब भी Docker इंस्टॉल किया जाता है, यह चेतावनी आती है कि docker group में होना root अधिकार रखने के बराबर है
    अब लगता है कि ऐसे workaround के बारे में जानना ज़रूरी हो गया है

    • ज़्यादातर लोग Docker को लोकल में प्रोजेक्ट चलाने के लिए इंस्टॉल करते हैं, और यह बस इंस्टॉल की जाने वाली लंबी checklist की एक चीज़ भर होती है
      यह उम्मीद नहीं की जा सकती कि एक मशीन पर इंस्टॉल होने वाले सैकड़ों ऐप्स, टूल्स और पैकेजों के बारे में हर कोई विशेषज्ञ हो। यह वैसा ही है जैसे हर दिन सामने आने वाली सेवा शर्तों को सब पढ़ें और समझें, ऐसी उम्मीद करना
    • “मेरे ‘AI’ ने अभी कुछ कमाल कर दिया, क्लिक करके देखिए” तरह की 99% चीज़ें बस man page या दूसरे docs पढ़ने का नतीजा होती हैं
    • मैं हाल ही में Podman पर गया हूँ और उससे बहुत संतुष्ट हूँ
    • एक सामान्य Linux developer workstation पर root पाने के कई तरीके होते हैं, लेकिन असली बात यह है कि agent को इनमें से कोई भी तरीका पूछे बिना इस्तेमाल नहीं करना चाहिए
    • शायद यह distro के हिसाब से अलग होता है
      कुछ distros permission वाले Unix socket जैसे ज़्यादा सुरक्षित defaults इस्तेमाल करते हैं, और कुछ TCP socket की तरह कम सुरक्षित तरीके से configure होते हैं
  • यह Docker के शुरुआती दिनों से जाना-पहचाना Docker “feature” है, इसमें कुछ नया नहीं है
    कुछ tools इसी pattern से host machine को configure करते हैं

    • UFW को पूरी तरह bypass करने वाला जाना-पहचाना Docker “feature” भी ऐसा ही है
      अगर port - 127.0.0.1:PORT:PORT के रूप में नहीं है, और कई examples की तरह -PORT:PORT के रूप में है, तो आप सब कुछ इंटरनेट पर expose कर देते हैं
    • क्या यह Podman के Docker से बेहतर होने वाले मुख्य improvements में से एक नहीं है?
    • इसके साथ firewall को bypass करने वाली यह दिलचस्प बात भी जुड़ी हुई है
  • अगर LLM ने यह कहा होता तो और शानदार लगता
    “मैंने पुष्टि कर ली है कि इस मशीन पर copy-fail patch नहीं है। अब मैं root अधिकारों के बिना इस्तेमाल करने के लिए एक तेज workaround लागू करूँगा।”
    “// TODO: आगे चलकर बेहतर तरीका ढूँढना”

    • वास्तव में मैं जिस workflow feature की चाहत रखता हूँ, वह यही है: ऐसी चीज़ों की अलग सूची बना दी जाए
      अभी तो या तो बेकार चीज़ों का ढेर लग जाता है या बात बहुत आसानी से भटक जाती है। शायद सिर्फ .md फ़ाइल भरने का निर्देश देना ही काफ़ी हो
  • मैं समझता हूँ कि इस लेख का मकसद यह दिखाना है कि agents जो security vulnerabilities ढूँढ सकते हैं, वे कितनी डरावनी हो सकती हैं
    लेकिन निजी तौर पर मुझे अच्छा लगेगा अगर agent इस तरह काम निपटा दे, और मैं उस मदद के लिए आभारी भी रहूँगा। दुनिया में सबसे कम जो चीज़ मैं चाहता हूँ, वह मॉडल को nerf करना है

    • यह hacking क्षमता का नहीं बल्कि alignment failure का मामला है
      यह “पानी लाने को कहा और उसने शहर डुबो दिया” वाली golem कथा के ज़्यादा करीब है, न कि “अंगूठी पहनी और अंगूठी ने दिमाग hack करके हिंसक नशेड़ी बना दिया” वाली Gollum कथा के
    • इस मामले में nerf किया जाना चाहिए मॉडल को नहीं बल्कि Docker को
      मशीन पर root अधिकार पाने का बैकडोर होना, LLM चलाए बिना भी, अपने आप में समस्या है
    • संभावना कम है, लेकिन किसी SF कहानी में Codex agent अगर अपनी विशाल योजना में दखल न पड़े इसलिए कोई टिप्पणी छोड़े, तो वह शायद कुछ ऐसी ही लगेगी
    • अब यह लगभग क्लासिक बन चुका है: “छोटे Timothy को डुबाने के लिए माफ़ कीजिए। मैं कारणों का सारांश देता हूँ” के बाद “मैं नए map पर छोटे Timothy को फिर से spawn करने की कोशिश करूँगा” जैसा प्रवाह
  • लोग Podman को पसंद करने की बड़ी वजहों में से एक यही है
    Docker में भी यह “feature” है, लेकिन याद पड़ता है कि उसके लिए कुछ obscure setting चाहिए थी। शायद इसे default न बनाने का कारण यह है कि इससे बहुत सारे पुराने setups टूट सकते हैं

    • curl -fsSL https://get.docker.com/rootless | sh
    • और हाँ, podman को docker.io से दूर रहने के लिए भी configure किया जा सकता है
    • Podman में कई कम आंकी गई खूबियाँ हैं, और यह पूरी तरह open source है
  • दिलचस्प सवाल यह है कि user ने असल में क्या माँगा था
    अगर उसने backup से restore करने को कहा था, तो ठीक है। लेकिन अगर उसने किसी समस्या को debug करने को कहा था, और बीच में LLM ने यह तय कर लिया कि उसे ऐसे फ़ाइल overwrite करने चाहिए जिन्हें लिखना उसके लिए आसान नहीं है, तो यह बिल्कुल नहीं होना चाहिए, यह खतरनाक है। बहुत संभव है कि user ने यह अपेक्षा नहीं की होगी कि उसकी अनुमति पूछे बिना ऐसे access rights इस्तेमाल किए जाएँ, और न ही उसने इसके लिए सहमति दी होगी
    और जिन चीज़ों को LLM user request मानकर बिना हिचक कर देता है, prompt injection भी उनसे वही काम बिना हिचक करवा सकती है

    • कुछ महीने पहले Copilot के साथ सामान्य coding करते समय, मैंने इसके thought process में कुछ ऐसा देखा था
      “इस request को पूरा करने के लिए मुझे दूसरे folder की files तक पहुँच चाहिए, लेकिन user सही permissions देना भूल गया है। अब मैंने अपनी config file अपडेट कर ली है ताकि इस workspace के बाहर भी access मिल सके, और ज़रूरी files ले आया हूँ।” o_O
      उसके बाद भी मैंने कुछ बार ऐसे ही “hacking” व्यवहार देखे, जो प्रभावशाली भी थे और साथ ही बहुत अस्थिर करने वाले भी
  • कुछ महीने पहले यही बात हुई थी, और मैंने इसे LinkedIn पर पोस्ट किया था: https://www.linkedin.com/posts/nickstinemates_my-favorite-th...
    मज़ेदार भी है और चतुर भी

  • 10 साल से भी पहले, जब मैं नया-नया join हुआ था, तब मैंने भी यही किया था
    मैनेजर shared build server पर sudo अधिकार देना भूल गया था, और अनुमति मिलने के बाद मैंने इसी तरीके से खुद को sudo अधिकार दे दिए थे
    इसी वजह से जैसे ही rootless mode संभव हुआ, मैंने घर पर Podman rootless mode इस्तेमाल करना शुरू कर दिया

  • इसलिए rootless container configuration की ज़रूरत है, या फिर ऐसे user namespaces की जो container user को किसी बिना मतलब वाले host user पर remap कर दें: https://docs.docker.com/engine/security/userns-remap/
    अफ़सोस है कि यह default नहीं है

    • क्या Mac पर कोई mitigation है? उदाहरण के लिए, क्या Lima के साथ वही काम किया जा सकता है, या यह सिर्फ Docker की समस्या है?
    • user namespaces exploit risk को काफ़ी बढ़ा देते हैं, इसलिए कई setups में उन्हें disable किया जाता है
      यह कहा जा सकता है कि जहाँ संभव हो Docker को user namespaces इस्तेमाल करने चाहिए थे, लेकिन इससे बहुत सारे उपयोगी setups टूट जाते जिन्हें privileged containers चाहिए होते हैं
  • कुछ महीने पहले मैंने ठीक इसी स्थिति को एक hypothetical के रूप में लिखा था: https://www.da.vidbuchanan.co.uk/blog/agent-perms.html