OpenClaw & AI Operasional

Hermes Agent 0.19.0 Punya Celah Redaction Saat Membaca File Secret

Jawaban singkat: hal utama tentang Hermes Agent 0.19.0 Punya Celah Redaction Saat Membaca File Secret adalah ini: Audit issue security Hermes Agent: file_read dapat melewatkan redaction ENV dan JSON. Simak deployment berisiko, status patch, dan mitigasinya.

Mode file_read Hermes Agent 0.19.0 dapat melewatkan redaction untuk assignment ENV dan JSON. Ini risiko, status patch, dan mitigasi operator sebelum perbaikan resmi dirilis.

Hermes Agent 0.19.0 Punya Celah Redaction Saat Membaca File Secret

Hermes Agent 0.19.0 dapat membawa secret dari file konfigurasi ke model context, session storage, dan log ketika file dibaca lewat tool file_read. Jalur redaction tetap ada, tetapi mode khusus untuk pembacaan file sengaja melewati pola assignment ENV dan JSON agar source code biasa tidak terlalu sering disensor. Efek sampingnya: file .env atau config JSON yang benar-benar berisi credential bisa lolos tanpa masking.

Temuan ini dicatat di issue #72778 pada 27 Juli 2026 dan diberi label type/security, tool/file, serta P2. Patch opt-in sudah diajukan melalui PR #72807, tetapi masih terbuka. Stable terbaru tetap Hermes Agent 0.19.0.

Apa yang sebenarnya terjadi

Hermes memiliki fungsi redaction terpusat untuk teks yang akan masuk ke model atau disimpan. Fungsi ini mengenali beberapa bentuk credential, termasuk token dengan prefix vendor tertentu dan assignment seperti API_KEY=....

Masalahnya muncul pada mode file_read. Pemeriksaan assignment ENV dan JSON dilewati untuk menghindari false positive saat agent membaca source code. Keputusan itu masuk akal untuk file program, tetapi tidak membedakan source code dari file yang memang menyimpan secret.

Akibatnya, alur seperti ini berisiko:

  1. agent diminta mengecek konfigurasi atau mendiagnosis service;
  2. agent membaca .env, JSON credential, atau config yang berisi nilai literal;
  3. isi file masuk ke model context sebelum nilai sensitif dimasking;
  4. context tersebut dapat ikut tersimpan pada session atau tercatat di log.

Issue yang sama juga mencatat masking pada jalur terminal masih dapat mempertahankan sebagian awal dan akhir token untuk secret dengan bentuk yang sudah dikenal. Itu lebih baik daripada menampilkan nilai penuh, tetapi fragmen credential tetap tidak ideal untuk log atau transcript yang dibagikan.

Kenapa ini berbeda dari bug custom endpoint sebelumnya

Hermes sebelumnya juga dilaporkan menyimpan API key custom endpoint sebagai plaintext di config.yaml. Itu adalah bug pada lokasi penyimpanan credential.

Temuan baru ini berada pada boundary yang berbeda: secret yang sudah ada di file dapat bocor ketika file tersebut dibaca oleh agent. Memindahkan key dari config.yaml ke .env belum cukup jika agent kemudian membaca .env dan redaction mode file tetap melewatkan nilainya.

Jadi operator perlu menangani dua kontrol secara terpisah:

  • simpan credential di tempat yang tepat dengan permission ketat;
  • cegah isi credential masuk ke model, session, dan log saat troubleshooting.

Deployment mana yang paling berisiko

Prioritas audit lebih tinggi jika Hermes:

  • dapat membaca home directory atau folder deployment;
  • berjalan dengan user yang sama seperti service lain;
  • sering diminta membuka .env, config JSON, credential file, atau support bundle;
  • menyimpan transcript atau session untuk waktu lama;
  • mengirim context ke provider model eksternal;
  • dipakai beberapa operator yang dapat membuka log dan riwayat sesi.

Bug ini tidak membuktikan credential sudah dicuri atau dikirim ke pihak yang tidak sah. Exposure aktual bergantung pada file yang pernah dibaca, retention session, lokasi log, provider model, dan kontrol akses host. Namun operator tidak sebaiknya menunggu bukti insiden sebelum mengaudit jalur tersebut.

Status patch upstream

PR #72807 mengusulkan konfigurasi redaction.literal_secrets. Operator dapat mendaftarkan nilai literal atau referensi environment seperti ${ENV_VAR}. Matching dijalankan lebih awal agar tetap berlaku pada file_read, bahkan ketika redaction global tidak aktif.

Pendekatan opt-in mengurangi risiko false positive pada source code. Kekurangannya, perlindungan hanya mencakup secret yang sudah didaftarkan. Credential baru atau file yang tidak terinventarisasi masih dapat lolos.

Pada saat audit 28 Juli 2026, PR tersebut belum merged dan belum ada patch release setelah 0.19.0. Konfigurasi usulan jangan dianggap tersedia pada instalasi stable sebelum release resmi atau build yang benar-benar memuat patch sudah diverifikasi.

Audit aman tanpa mencetak secret

Tujuan audit bukan mencari dan menampilkan nilai credential. Yang dibutuhkan adalah membuktikan apakah file sensitif pernah masuk ke jalur pembacaan agent.

1. Inventarisasi file yang dapat dibaca Hermes

Petakan permission user runtime. Prioritaskan .env, file credential cloud, config provider, token bot, SSH key, backup konfigurasi, dan support bundle.

Jangan menjalankan pencarian yang mencetak seluruh matching line ke terminal atau tiket. Output audit cukup berisi path, tipe temuan, permission, dan status tindakan.

2. Periksa riwayat tool dan session

Cari event file_read terhadap path sensitif. Jika sistem menyimpan argumen tool, audit nama file terlebih dahulu tanpa membuka payload lengkap.

Jika file sensitif pernah dibaca, perlakukan model context, session export, log, serta backup terkait sebagai kemungkinan lokasi salinan.

3. Periksa retention dan akses

Tentukan siapa yang dapat membaca session database, log gateway, export percakapan, snapshot VM, dan backup. Exposure lokal yang hanya dapat diakses satu account berbeda risikonya dari transcript yang masuk ke shared dashboard atau layanan log eksternal.

4. Rotasi berdasarkan bukti exposure

Rotasi segera jika nilai pernah masuk Git, log bersama, support bundle eksternal, session yang dapat diakses banyak pihak, atau provider yang tidak diizinkan menerima credential tersebut.

Jika bukti hanya menunjukkan file ada di host tetapi tidak pernah dibaca, fokuskan tindakan pada permission dan pencegahan. Jangan merotasi seluruh credential tanpa prioritas karena itu dapat memicu outage yang tidak perlu.

Mitigasi sebelum patch release

Langkah paling aman saat ini adalah mencegah pembacaan file secret dari awal.

  • Jangan meminta agent membuka .env atau credential file untuk mengecek apakah key tersedia.
  • Gunakan helper yang hanya mengembalikan status seperti set, missing, permission file, atau hasil koneksi tanpa mencetak nilai.
  • Jalankan Hermes dengan user khusus dan permission minimum.
  • Pisahkan credential per service agar satu file tidak membuka akses ke banyak sistem.
  • Batasi retention transcript dan akses ke session export.
  • Hindari menempelkan output config mentah ke issue, chat, atau dashboard.
  • Setelah patch resmi tersedia, uji redaction dengan dummy secret, bukan credential produksi.

Untuk diagnosis koneksi, validasi sebaiknya dilakukan lewat request langsung yang menyembunyikan header dan body sensitif. Status HTTP, nama endpoint, dan kelas error biasanya cukup untuk menemukan masalah tanpa membaca nilai key.

Perlukah menghentikan Hermes Agent

Tidak perlu menghentikan semua deployment. Risiko dapat dikurangi secara presisi dengan membatasi file access, menghentikan kebiasaan membaca config mentah, dan mengaudit session yang sudah ada.

Untuk instance yang berjalan sebagai root atau punya akses lintas-service, urgensinya lebih tinggi. Turunkan privilege lebih dulu. Redaction adalah lapisan pencegahan kebocoran, bukan pengganti permission filesystem dan pemisahan credential.

Kesimpulan operasional

Pada Hermes Agent 0.19.0, file secret yang dibaca lewat file_read dapat melewati masking yang diharapkan. Belum ada bukti eksploitasi massal dan patch masih terbuka, tetapi failure mode-nya realistis untuk workflow troubleshooting sehari-hari.

Sampai patch stable tersedia, jangan biarkan agent membaca .env atau config credential secara mentah. Audit path file_read, batasi akses runtime, cek session dan log yang relevan, lalu rotasi key hanya ketika ada bukti exposure. Setelah fix dirilis, verifikasi memakai dummy credential dan pastikan nilai penuh maupun fragmennya tidak muncul di model context atau log.

Lanjut membaca

Artikel yang masih relevan