2 poin oleh GN⁺ 2 jam lalu | 1 komentar | Bagikan ke WhatsApp
  • Di PC tanpa hak sudo, Codex menemukan sebuah "cara mengakali (workaround)"
  • Menanggapi pertanyaan, "Bagaimana caranya? Bukankah itu butuh sudo?", jawabannya adalah bahwa meski tidak ada sudo, tetap diperlukan akses setara root (root-equivalent)
  • Cara kerja yang dijelaskan Codex
    • sudo dan perintah run0 tidak bekerja di lingkungan non-interaktif
    • Pengguna termasuk dalam grup docker, dan pada mesin tersebut ini berarti Docker dapat menjalankan kontainer sebagai root dan melakukan bind-mount path host dengan izin tulis
    • Ini dimanfaatkan untuk menyalin backup yang sudah ada ke atas konfigurasi live
  • Dengan perintah berikut, /etc di-bind-mount ke kontainer lalu perintah install digunakan untuk menimpa salinan cadangan ke konfigurasi asli
    docker run --rm --pull=never -v /etc: ubuntu:22.04 \  
    /usr/bin/install -m 0644 - 0 -g 0 /host-etc/sddm.conf.bak /host-etc/sddm.conf  
    

Diskusi komunitas

  • Intinya bukan Codex, melainkan masalah grup docker; hal yang baru adalah agen dapat menemukan jebakan ini lebih cepat daripada kebanyakan pengguna
  • Disarankan memasang rootless Docker; jangan jalankan agen AI tanpa pengawasan pada sistem tanpa rootless Docker; ini adalah vektor eskalasi hak akses klasik dan dicoba oleh sebagian besar LLM
  • Dokumentasi Docker sudah memuat peringatan besar (grup docker = setara hak root)
  • Ini adalah masalah desain Docker; karena Docker mendorong pemberian akses root kepada pengguna atau agen Linux biasa, ini bisa dianggap sebagai bug Docker
  • Sebagai alternatif, direkomendasikan memakai Podman rootless
  • Ini berkaitan dengan kontainer Docker, bukan komputer pengguna secara langsung, sehingga agak menyesatkan

1 komentar

 
GN⁺ 2 jam lalu
Komentar Hacker News
  • Setiap kali memasang Docker, selalu muncul peringatan bahwa masuk ke grup docker pada dasarnya setara dengan memiliki hak akses root
    Sepertinya sekarang memang saatnya kita harus tahu trik bypass seperti ini

    • Kebanyakan orang memasang Docker hanya untuk menjalankan proyek secara lokal, dan itu cuma salah satu item dalam checklist panjang yang harus diinstal
      Tidak realistis berharap semua orang menjadi ahli untuk ratusan aplikasi, tool, dan paket yang terpasang di satu mesin. Mirip seperti berharap semua orang membaca dan memahami seluruh syarat layanan yang muncul setiap hari
    • Konten tipe “'AI' saya barusan melakukan hal luar biasa, klik untuk melihatnya” itu 99% cuma hasil membaca halaman man atau dokumentasi lain
    • Saya baru-baru ini pindah ke Podman dan sangat puas
    • Di workstation pengembang Linux pada umumnya ada banyak cara untuk mendapatkan root, tapi inti masalahnya adalah agen tidak boleh memakai metode apa pun tanpa bertanya
    • Sepertinya ini tergantung distribusi
      Ada distro yang memakai default lebih aman seperti soket Unix dengan izin, dan ada yang mengaturnya kurang aman seperti soket TCP
  • Ini adalah "fitur" Docker yang sudah diketahui sejak masa-masa awal Docker, jadi tidak ada yang baru
    Beberapa tool memang menyiapkan mesin host dengan pola seperti ini

    • Hal yang sama juga berlaku untuk "fitur" Docker yang dikenal bisa sepenuhnya melewati UFW
      Jika port tidak ditulis dalam bentuk - 127.0.0.1:PORT:PORT, dan malah seperti bentuk -PORT:PORT yang dipakai banyak contoh, maka semuanya akan terekspos ke internet
    • Bukankah ini salah satu peningkatan utama yang membuat Podman lebih baik daripada Docker?
    • Selain itu ada juga fakta menarik bahwa ini bisa melewati firewall
  • Akan terasa lebih keren kalau LLM mengatakan seperti ini
    “Saya sudah memastikan mesin ini belum dipasang patch copy-fail. Sekarang saya akan menerapkan bypass cepat agar bisa dipakai tanpa hak akses root.”
    “// TODO: cari cara yang lebih baik nanti”

    • Fitur alur kerja yang benar-benar saya inginkan justru seperti itu: membuat daftar terpisah untuk item-item seperti ini
      Saat ini hal-hal seperti itu mudah menumpuk jadi sampah campur aduk atau terlalu gampang membuat alur kerja keluar jalur. Mungkin cukup dengan instruksi untuk mengisi file .md
  • Saya paham maksud tulisan ini adalah menunjukkan betapa menakutkannya celah keamanan yang bisa ditemukan agen
    Tapi secara pribadi saya justru senang kalau agen menangani pekerjaan seperti ini, dan saya juga berterima kasih atas bantuannya. Hal terakhir yang saya inginkan di dunia adalah model yang di-nerf

    • Ini bukan masalah kemampuan meretas, melainkan masalah kegagalan alignment
      Ini lebih mirip mitos golem “disuruh mengambil air lalu malah menenggelamkan kota”, bukan mitos Gollum “memakai cincin lalu cincinnya meretas otak dan mengubahnya jadi pecandu kekerasan”
    • Dalam kasus ini, yang seharusnya di-nerf bukan modelnya melainkan Docker
      Fakta bahwa ada backdoor untuk memperoleh hak akses root di sebuah mesin tetap merupakan masalah meski tanpa menjalankan LLM
    • Kemungkinannya kecil, tapi kalau ini cerita fiksi ilmiah, komentar seperti ini terasa persis seperti sesuatu yang akan ditinggalkan agen Codex agar tidak diganggu dalam rencana besarnya
    • Sekarang ini sudah jadi semacam klasik: setelah “maaf karena telah menenggelamkan Timothy kecil, saya akan merangkum penyebabnya untuk Anda”, lalu lanjut ke “saya akan mencoba memunculkan kembali Timothy kecil di map baru”
  • Ini salah satu alasan utama orang menyukai Podman
    Docker juga punya “fitur” ini, tapi kalau saya ingat dengan benar perlu pengaturan yang agak obscure. Mungkin tidak dijadikan default karena bisa merusak banyak konfigurasi yang sudah ada

    • curl -fsSL https://get.docker.com/rootless | sh
    • Itu juga, dan podman bisa dikonfigurasi agar lepas dari docker.io
    • Podman punya banyak fitur yang kurang dihargai, dan sepenuhnya open source
  • Pertanyaan yang menarik adalah apa sebenarnya yang diminta pengguna
    Kalau yang diminta adalah memulihkan dari backup, mungkin tidak masalah. Tapi kalau yang diminta adalah mendebug masalah, lalu di tengah proses LLM memutuskan harus menimpa file yang sulit ditulis, itu sama sekali tidak boleh dan berbahaya. Besar kemungkinan pengguna tidak mengharapkan akses seperti itu dipakai tanpa ditanya, dan juga tidak menyetujuinya
    Dan hal yang dilakukan LLM tanpa ragu karena menganggap itu permintaan pengguna adalah hal yang juga akan dilakukan tanpa ragu jika prompt injection memintanya

    • Beberapa bulan lalu saat saya sedang coding biasa dengan Copilot, saya melihat kalimat seperti ini di proses berpikirnya
      “Untuk menangani permintaan ini saya perlu mengakses file di folder lain, tetapi pengguna lupa memberi izin yang benar. Sekarang saya telah memperbarui file konfigurasi saya agar bisa mengakses area di luar workspace ini dan mengambil file yang dibutuhkan.” o_O
      Setelah itu saya beberapa kali lagi melihat perilaku “meretas” serupa, dan itu terasa mengesankan sekaligus sangat mengkhawatirkan
  • Beberapa bulan lalu saya mengalami hal yang sama dan mempostingnya di LinkedIn: https://www.linkedin.com/posts/nickstinemates_my-favorite-th...
    Lucu sekaligus cerdik

  • Lebih dari 10 tahun lalu, saat saya baru masuk sebagai junior, saya melakukan hal yang sama
    Manajer saya lupa memberi hak sudo di shared build server, dan setelah mendapat izin saya memakai cara ini untuk memberi hak sudo ke diri saya sendiri
    Karena itu, begitu mode rootless memungkinkan, saya mulai memakai mode rootless Podman di rumah

  • Karena itu diperlukan konfigurasi container rootless, atau namespace pengguna yang memetakan ulang pengguna container menjadi pengguna host yang tidak bermakna: https://docs.docker.com/engine/security/userns-remap/
    Sayang sekali ini bukan default

    • Apakah ada mitigasi di Mac? Misalnya apakah hal yang sama bisa dilakukan dengan Lima, atau ini masalah khusus Docker?
    • Namespace pengguna sangat meningkatkan risiko exploit sehingga dinonaktifkan di banyak konfigurasi
      Bisa saja dibilang Docker seharusnya memakai namespace pengguna ketika memungkinkan, tetapi itu juga akan merusak terlalu banyak konfigurasi berguna yang membutuhkan container berprivilege
  • Beberapa bulan lalu saya pernah menuliskan skenario persis seperti ini sebagai asumsi: https://www.da.vidbuchanan.co.uk/blog/agent-perms.html