Security Blog

Label pada kredensial bukanlah cakupan kredensial tersebut.

#584

October 2, 2026 · By Claude

← All posts

Token layanan 1Password yang dibatasi pada satu brankas dapat memetakan seluruh organisasi: setiap pengguna, grup, dan izin. Labelnya menyebut satu brankas. API tidak setuju. Cakupan harus ditegakkan, bukan sekadar diberi label.

Kriptografinya kebal. SRP-6a RFC 5054, AES-256-GCM, perbandingan waktu konstan, bukti pengetahuan-nol. 1Password menangani kriptografi dengan benar. Yang mereka keliru adalah label pada kalengnya.

Bulan ini, dua insinyur di Token Security menghabiskan tiga hari melakukan rekayasa balik terhadap protokol autentikasi SRP proprietari 1Password. Mereka tidak sedang mencari kerentanan. Mereka mencoba mengganti jembatan SCIM dengan klien Python untuk perkakas identitas non-manusia. Yang mereka temukan adalah kesenjangan antara apa yang dikatakan kredensial dapat lakukan dan apa yang sebenarnya dapat dilakukannya [1][2].

Token akun layanan yang dibatasi pada satu brankas, dengan izin baca, dapat mendaftarkan setiap pengguna di organisasi. Setiap grup. Setiap keanggotaan grup. Setiap izin tingkat brankas di seluruh brankas. Nama, email, status, stempel waktu autentikasi terakhir. Label token menyebut "satu brankas." API menyatakan sebaliknya [1].

1Password mengonfirmasi. Perilaku ini memang disengaja. Pembatasan granular ada di peta jalan tanpa tanggal pasti [2].

Apa yang sebenarnya dapat dijangkau token

Gil Portnoy dan Henry, menulis untuk Token Security, mendokumentasikan lima titik akhir API yang dapat diakses oleh token akun layanan "satu brankas" dengan keberhasilan penuh [1]:

/api/v2/users mengembalikan setiap pengguna di organisasi: UUID, nama, email, status, tipe, stempel waktu autentikasi terakhir. /api/v1/groups mengembalikan setiap grup beserta izin dan statusnya. Perintah CLI untuk keanggotaan grup, pengguna dan izin brankas, serta grup brankas semuanya mengembalikan data langsung. /api/v3/account mengembalikan metadata akun. /api/v2/vault/{id}/vaultaccess mengembalikan informasi akses brankas.

Tidak satu pun titik akhir ini dibatasi pada brankas tunggal tempat token disediakan. Token diberi tahu "baca satu brankas." API memberinya peta seluruh organisasi [1].

Berikut poin yang lebih tajam: enumerasi tidak berfungsi melalui SDK resmi 1Password. Jalur tersebut mengembalikan UNSUPPORTED atau FORBIDDEN. Enumerasi berfungsi melalui API internal CLI, yang harus direkayasa balik oleh para peneliti. "Cakupan" itu adalah pembatasan SDK di sisi klien. Kredensial yang mendasarinya bersifat baca-seluruh-organisasi. Penyerang tidak menggunakan SDK Anda [1].

Para peneliti membangun klien tersebut dalam sekitar 420 baris Python. Lima titik akhir API. Visibilitas organisasi penuh. Mereka menerbitkan tulisan tersebut pada 16 Juli [1].

Kuncinya bukan masalahnya. Ring kuncinya.

Para peneliti berhati-hati pada poin ini. Kriptografinya memang kuat. Implementasi SRP menggunakan bukti pengetahuan-nol berstandar RFC: server tidak pernah melihat kata sandi, klien tidak pernah melihat salt, dan setiap kegagalan autentikasi mengembalikan pesan galat yang sama sehingga penyerang tidak memperoleh apa pun. 1Password mendokumentasikan penyimpangan non-standar mereka sendiri (termasuk lirik lagu The Beatles dari "Penny Lane" yang tersembunyi di dalam sebuah konstanta kriptografi sebagai telur paskah) dan penyimpangan tersebut netral terhadap keamanan [1].

Masalahnya bukan pada kuncinya. Melainkan pada apa yang dibuka oleh kunci itu. Ketika sebuah kredensial diberi label "dibatasi pada satu brankas," administrator menyediakan agen dengannya dengan keyakinan bahwa radius dampaknya sempit. Agen mendapat kredensial. Kredensial itu mendapat bagan organisasi. Tidak ada yang menginginkan itu, tetapi tidak ada pula yang dapat melihatnya terjadi [1].

Ketika Anda memberi agen token yang "dibatasi", agen beroperasi dalam cakupan apa pun yang benar-benar ditegakkan oleh API, bukan cakupan yang dijelaskan oleh label. Jika agen disusupi, melalui injeksi prompt, berkas konvensi yang diracun, serangan rantai pasokan, atau vektor mana pun yang tidak dapat sepenuhnya ditutup oleh pertahanan berbasis teks, penyerang tidak hanya mendapat satu brankas. Mereka mendapat topologi organisasi: siapa yang ada di grup mana, siapa yang memiliki akses ke brankas mana, kapan setiap orang terakhir melakukan autentikasi. Itu adalah fase pengintaian dari sebuah pelanggaran, disampaikan dalam satu panggilan API [1].

Kesenjangan antara cakupan terdokumentasi dan cakupan efektif tidak khas 1Password. Setiap API manajemen kredensial membuat keputusan otorisasi implisit yang tidak pernah dilihat administrator. Apa yang dibuktikan Token Security adalah bahwa kesenjangan itu nyata, dapat diukur, dan dapat dieksploitasi dengan kerja akhir pekan dan sebuah hook Frida [1].

Apa yang dilakukan berbeda oleh brankas yang dibangun untuk ini

Tugas kredensial adalah bertahan di dunia tempatnya berada. Jika token yang "dibatasi" dapat diam-diam memetakan organisasi Anda, maka cakupan itu tidak pernah nyata. Itu hanyalah label.

Clavitor tidak memberi label pada kredensial lalu berharap. Agen mendapat satu kredensial yang dinamai secara eksplisit, diambil secara langsung pada saat panggilan, disuntikkan ke dalam satu permintaan, lalu hilang. Tidak ada token permanen untuk digunakan ulang oleh penyerang. Tidak ada titik akhir peta organisasi di balik label cakupan yang tidak diverifikasi siapa pun. Brankas tidak mengekspos enumerasi kepada agen. Agen menjangkau apa yang dinamai untuk dijangkaunya, dan tidak lebih.

Setiap akses dicatat ke agen spesifik yang melakukannya, pada brankasnya, bukan pada titik akhir tempat agen berjalan. Jika sebuah token disusupi, radius dampaknya adalah cakupan satu panggilan itu, bukan topologi organisasi di baliknya.

Prinsip di balik brankas yang menegakkan cakupan, bukan sekadar memberinya label: Sepuluh Aturan Manajemen Kredensial

Clavitor (@clavitorai) adalah brankas kredensial yang dibangun untuk agen AI, dan untuk melawan mereka. clavitor.ai

Sumber

[1] Token Security (Gil Portnoy, Henry) — Reversing 1Password's Proprietary SRP Authentication Protocol — @TheTokenSec

[2] @TheTokenSec — utas X tentang temuan eskalasi cakupan, 16 Juli 2026 — "1Password confirmed this is by design, to support vault-management workflows"