FlawOpen

flawopen.com/AI Security/cve-2026-103956-aws-loom-authentication-bypass

● CVE-2026-103956 · CVSS v4 10.0[7] · Kritis
Riset Keamanan · FlawOpen

CVE-2026-103956: bypass autentikasi AWS Loom

CVE-2026-103956 berdampak pada AWS Labs Loom for AWS sebelum versi 1.6.1: tanpa penyedia identitas yang dikonfigurasi, klien jaringan mana pun dapat memperoleh hak superadmin. Tingkatkan ke versi 1.7.0 atau yang lebih baru untuk mencakup celah ini dan perbaikan terkait; versi 1.6.1 sudah menutup bypass autentikasi ini.[1], [5]

Vektor CVSSCVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H[7]
💡 Penjelasan Sederhana (ELI5)

Sebuah gedung membiarkan meja resepsinya kosong, tetapi perangkat lunak menganggap setiap pengunjung sebagai administrator tertinggi. Perbaikan menolak akses jika penyedia identitas belum dikonfigurasi; pengecualian pengembangan lokal memerlukan opsi eksplisit dan koneksi dari komputer yang sama.[1], [4]

Konsep Kunci & Istilah

Penyedia identitas (IdP)
Sistem yang dikonfigurasi untuk mengautentikasi pengguna Loom. Kondisi rentan terjadi jika Cognito maupun IdP eksternal tidak dikonfigurasi.[1]
Control plane
Lapisan API dan administrasi untuk mengelola integrasi agen, kredensial, dan kebijakan peran.[1]
Gagal dengan aman
Saat layanan identitas wajib tidak tersedia, permintaan ditolak alih-alih diberi identitas istimewa secara default.[4]

Pemetaan kerangka kerja

  • Referensi CWE untuk kelemahan yang dijelaskan dalam panduan ini: CWE-306 CWE-1188

Alur Serangan Langkah demi Langkah

Langkah 1

Tidak ada penyedia identitas yang dikonfigurasi

Kondisi terdampak sebelum versi 1.6.1 bersifat spesifik: tidak ada user pool Cognito maupun IdP eksternal.[1]

Langkah 2

Fallback membuat pengguna berhak istimewa

Jalur rentan get_current_user diam-diam menetapkan t-admin dan g-admins-super, termasuk untuk permintaan tanpa autentikasi.[4]

Langkah 3

API memberi kewenangan pada control plane

Klien yang dapat menjangkau jaringan bisa bertindak sebagai superadmin, mendaftarkan server alat, membaca kredensial integrasi tersimpan, atau mengubah kebijakan IAM pada peran agen terkelola. Ini adalah dampak yang dijelaskan vendor, bukan bukti bahwa suatu deployment telah disusupi.[1]

Langkah 4

Perbaikan menolak akses secara default

Versi 1.6.1 mensyaratkan LOOM_ALLOW_UNAUTHENTICATED_LOCAL_DEV=true secara eksplisit dan klien loopback untuk pengecualian pengembangan lokal; jika tidak, responsnya HTTP 401. AWS menyarankan versi 1.7.0 atau yang lebih baru untuk buletin yang mencakup tiga masalah.[1], [4], [2], [3]

Matriks cakupan perbaikan versi Loom

Rentang versiBypass autentikasi CVE-2026-103956Masalah lain dalam buletin AWS bulan OktoberTindakan operator
<1.6.1Terdampak jika Cognito maupun IdP eksternal tidak dikonfigurasi; klien jaringan dapat memperoleh akses super-admin.CVE-2026-103957 dan CVE-2026-103958 adalah masalah terpisah yang juga diperbaiki pada 1.7.0.Tingkatkan ke 1.7.0 atau yang lebih baru. Versi 1.6.1 hanya merupakan perbaikan minimum untuk bypass ini.
1.6.1–<1.7.0Sudah diperbaiki. Tanpa IdP, permintaan mendapat 401 kecuali opsi pengembangan lokal diaktifkan dan klien menggunakan loopback.AWS mencantumkan dua masalah terkait sebagai diperbaiki pada 1.7.0.Tingkatkan ke 1.7.0 atau yang lebih baru untuk mencakup seluruh buletin.
1.7.0 atau yang lebih baruSudah diperbaiki.AWS menyatakan 1.7.0 menyelesaikan ketiga masalah dalam buletin.Jalankan Loom dan fork pada versi yang didukung serta pastikan perbaikannya ikut diterapkan.

Analisis Akar Masalah (Root Cause)

Saat kumpulan pengguna Cognito maupun penyedia identitas eksternal tidak dikonfigurasi, fallback pada dependensi autentikasi diam-diam menetapkan t-admin dan g-admins-super, bukan menolak permintaan. API kemudian menganggap identitas fallback itu sudah terautentikasi, sehingga klien jaringan yang dapat menjangkau backend bisa memperoleh wewenang super-admin pada control plane. Perbaikan menolak akses secara default; pengecualian pengembangan lokal memerlukan opt-in eksplisit dan klien loopback. Catatan CVE mengaitkan masalah ini dengan CWE-306 (autentikasi tidak ada untuk fungsi kritis) dan CWE-1188 (inisialisasi dengan nilai default yang tidak aman).[1], [4], [7]

Kode Sumber: Rentan vs Aman

Potongan rentan merangkum penjelasan maintainer tentang get_current_user: tanpa Cognito maupun IdP eksternal, jalur tersebut diam-diam memberikan t-admin / g-admins-super. Versi yang diperkuat merangkum perilaku upstream yang telah digabung, bukan kutipan sumber secara verbatim: pengecualian lokal memerlukan opsi eksplisit dan klien loopback; permintaan lain gagal dengan HTTP 401. Catatan deployment FlawOpen: Di produksi, percayai request.client hanya jika konfigurasi proxy mencegah header terusan yang tidak tepercaya mengaku sebagai loopback. Tingkatkan ke 1.6.1 atau lebih baru untuk memperbaiki CVE ini, dan ke 1.7.0 atau lebih baru untuk mencakup seluruh buletin Oktober 2026. Contoh ini tidak memuat permintaan eksploitasi ataupun prosedur untuk mengakses kredensial.[4], [1]

IMPLEMENTASI RENTAN
# Alur kontrol sederhana yang dilaporkan pada jalur get_current_user yang terdampak
if not cognito_pool and not external_idp:
    return User(username="t-admin", groups=["g-admins-super"])
return await authenticate_with_configured_idp(token)
PERBAIKAN AMAN & KUAT
# Tolak secara default kecuali pengecualian pengembangan lokal dinyatakan dan hanya dibatasi ke loopback.
if not cognito_pool and not external_idp:
    opted_in = os.getenv("LOOM_ALLOW_UNAUTHENTICATED_LOCAL_DEV") == "true"
    peer_is_local = request.client is not None and ipaddress.ip_address(
        request.client.host
    ).is_loopback
    if opted_in and peer_is_local:
        return local_development_user()
    raise HTTPException(status_code=401, detail="Identity provider is not configured")
return await authenticate_with_configured_idp(token)

Daftar Periksa Penguatan Sistem Rekayasa

Sumber

← AI Security Directory →