Security • Sains • Technology • Informasi

CVE-2026-108904: pH7Builder Bocorkan Hash & Token via API

Iklan
CVE-2026-108904: pH7Builder Bocorkan Hash & Token via API
CVE IDCVE-2026-108904
SeverityHIGH — CVSS CVSS V4.0 7.1
VectorCVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
CWECWE-522 Insufficiently Protected Credentials
Produkph7software / ph7builder — 0 (affected), 18.5.0 (unaffected)
Dipublikasikan2026-10-11

Ringkasan Cepat

  • pH7Builder sebelum 18.5.0 mengandung kerentanan information disclosure pada Member API: fungsi UserController::users() dan user() mengembalikan baris database tanpa filter.
  • Pemegang private API key yang valid dapat memperoleh hash password bcrypt, token reset hashValidation yang tidak kedaluwarsa, dan secret TOTP milik anggota.
  • Dampaknya adalah pengambilalihan akun dan pelewatasan autentikasi dua faktor; severity HIGH 7.1 (CVSS v4.0) dengan CWE-522 Insufficiently Protected Credentials.

Ringkasan Kerentanan

pH7Builder, yang juga dikenal sebagai pH7 Social Dating CMS, sebelum versi 18.5.0 memiliki kerentanan information disclosure yang terdaftar sebagai CVE-2026-108904. Akar masalahnya ada pada komponen Member API: fungsi UserController::users() dan UserController::user() mengembalikan baris database apa adanya, tanpa penyaringan terhadap kolom-kolom sensitif.

Artinya, klien API yang memegang private API key yang valid dapat menerima data anggota jauh melebihi yang seharusnya diekspos oleh sebuah endpoint API publik. Kerentanan ini diklasifikasikan sebagai CWE-522: Insufficiently Protected Credentials, yaitu kelas kelemahan di mana kredensial tidak dilindungi secara memadai ketika disimpan maupun ketika dikirimkan.

Informasi publikasi kerentanan ini tercatat pada 11 Oktober 2026 (2026-10-11T14:58:06.113Z), dengan advisori yang diterbitkan oleh VulnCheck.

Dampak Teknis: Kredensial yang Seharusnya Tidak Pernah Keluar

Menurut deskripsi resmi, data sensitif yang dapat diperoleh melalui endpoint tersebut meliputi:

  • Hash password bcrypt milik anggota, yang membuka ruang untuk serangan cracking offline menggunakan perangkat komputasi yang tersedia bagi penyerang.
  • Token reset hashValidation yang tidak kedaluwarsa. Karena token ini tidak memiliki masa berlaku, token yang terekspos tetap dapat dipakai untuk mereset kredensial akun tanpa batas waktu.
  • Secret TOTP, yaitu kunci yang mendasari autentikasi dua faktor. Dengan kunci ini, faktor kedua tidak lagi menjadi penghalang.

Kombinasi ketiganya memungkinkan penyerang mengambil alih akun dan melewati autentikasi dua faktor. Perlu digarisbawahi bahwa kerentanan ini tidak memberi penyerang kemampuan mengubah data secara langsung: vektor CVSS-nya menunjukkan dampak kerahasiaan tinggi (VC:H) namun tanpa dampak integritas maupun ketersediaan (VI:N, VA:N). Nilai kerusakannya justru terletak pada kebocoran kredensial yang menjadi pintu masuk tahap berikutnya.

Vektor lengkapnya adalah CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N, yang menghasilkan skor HIGH 7.1. Perhatikan komponen PR:L dan AV:N: serangan dilakukan melalui jaringan, tetapi memerlukan hak akses tingkat rendah berupa kepemilikan private API key yang valid. Kunci API yang tersimpan di aplikasi klien, repositori, log, atau perangkat tim support menjadi jalur yang realistis untuk kondisi tersebut.

Produk dan Versi Terdampak

Produk yang terdampak adalah ph7builder dari vendor ph7software. Berdasarkan data versi yang tersedia:

  • Versi 0 hingga semua rilis sebelum 18.5.0 berstatus affected (terdampak).
  • Versi 18.5.0 berstatus unaffected (tidak terdampak).

Perbaikan dapat ditelusuri melalui commit 52a59da534c7666f7607c8a9b8c42037eb4de66d pada repositori pH7-Social-Dating-CMS. Kode sebelum perbaikan dapat dilihat pada berkas _protected/app/system/modules/api/controllers/UserController.php baris 161 sampai 206 pada tag v18.4.1. Referensi tambahan tersedia pada advisori VulnCheck untuk pH7Builder before 18.5.0 Sensitive Data Exposure via Member API UserController.

Konteks dan Pelajaran Pertahanan

Kasus ini adalah contoh klasik bahwa API adalah permukaan serangan data. Endpoint yang dirancang untuk melayani aplikasi mobile atau integrasi pihak ketiga sering kali mewarisi pola pengambilan data dari sisi internal: mengambil seluruh kolom tabel lalu mengembalikannya ke pemanggil. Ketika tabel pengguna menyimpan hash password, token reset, dan secret TOTP dalam satu baris yang sama, satu kesalahan pemetaan output sudah cukup untuk membocorkan seluruh kredensial.

Pelajaran yang bisa diambil untuk tim pengembang dan operator:

  • Gunakan pola allowlist (daftar kolom yang boleh keluar) alih-alih mengembalikan objek pengguna secara utuh.
  • Simpan secret TOTP dan token reset di tabel atau penyimpanan terpisah dari data profil yang rutin disajikan API.
  • Berikan masa berlaku pada setiap token reset, karena token yang tidak kedaluwarsa memperpanjang jendela risiko secara tidak perlu.
  • Perlakukan private API key sebagai kredensial berisiko tinggi: rotasi berkala, batasi cakupan, dan pantau penggunaannya.

Bagi pengguna pH7Builder, prioritas utamanya adalah menutup paparan data sebelum melakukan pemulihan kredensial, karena rotasi kredensial yang dilakukan setelah patch tetap wajib dengan asumsi data sudah pernah terekspos.

Mitigasi dan Perbaikan

  • Segera perbarui pH7Builder ke versi 18.5.0 atau yang lebih baru, karena versi tersebut dinyatakan tidak terdampak; perbaikan dapat diverifikasi melalui commit 52a59da534c7666f7607c8a9b8c42037eb4de66d.
  • Jika pembaruan belum dapat dilakukan segera, kurangi paparan sementara: batasi atau nonaktifkan akses ke endpoint Member API (khususnya jalur yang memanggil UserController::users() dan user()) dan putar ulang seluruh private API key yang berlaku.
  • Rotasi kredensial anggota: karena hash password bcrypt berpotensi terbaca, paksa reset password dan cabut sesi aktif. Jangan mengandalkan asumsi bahwa hash tidak sempat di-crack.
  • Regenerasi faktor kedua: reset konfigurasi TOTP untuk anggota terdampak sehingga secret lama tidak lagi berlaku.
  • Batalkan seluruh token reset hashValidation yang masih beredar dan pastikan token baru memiliki masa berlaku, agar token yang mungkin sudah terekspos tidak dapat digunakan.
  • Audit log akses API pada endpoint pengguna untuk mencari pola pengambilan data yang tidak wajar, serta tinjau tempat penyimpanan private API key (repositori, konfigurasi klien, dan log) dari kemungkinan kebocoran.

Referensi Resmi

Artikel ini disusun dari data publik CVE Program (cve.org). Selalu verifikasi patch resmi dari vendor sebelum menerapkan perubahan.

Pertanyaan yang Sering Diajukan (FAQ)

Apa itu CVE-2026-108904?
Ini adalah kerentanan information disclosure pada pH7Builder (pH7 Social Dating CMS) sebelum versi 18.5.0, di mana fungsi UserController::users() dan user() pada Member API mengembalikan baris database tanpa filter sehingga data anggota yang sensitif dapat terbaca oleh klien API.
Seberapa serius kerentanan ini?
Severity-nya HIGH dengan skor 7.1 pada CVSS v4.0, vektor CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N, dan diklasifikasikan sebagai CWE-522 Insufficiently Protected Credentials. Dampak utamanya adalah kebocoran kerahasiaan data kredensial.
Data sensitif apa saja yang berisiko terekspos?
Hash password bcrypt, token reset hashValidation yang tidak kedaluwarsa, dan secret TOTP milik anggota. Kombinasi data ini memungkinkan pengambilalihan akun sekaligus melewati autentikasi dua faktor.
Apakah penyerang bisa mengeksploitasi ini tanpa kredensial apa pun?
Tidak. Vektor CVSS menunjukkan PR:L, artinya penyerang perlu memegang private API key yang valid. Namun kunci API yang tersimpan pada aplikasi klien, repositori, atau log dapat menjadi jalur perolehan yang realistis, sehingga kunci tersebut tetap harus diperlakukan sebagai aset berisiko tinggi.
Versi mana yang harus dipakai?
Versi 18.5.0 dinyatakan tidak terdampak (unaffected), sedangkan semua versi sebelum 18.5.0 berstatus terdampak. Pembaruan ke 18.5.0 atau lebih baru adalah langkah utama.
Kapan kerentanan ini dipublikasikan?
Publikasi tercatat pada 2026-10-11T14:58:06.113Z (11 Oktober 2026), dengan referensi advisori dari VulnCheck serta commit dan berkas pada repositori GitHub pH7-Social-Dating-CMS.
English Version — CVE-2026-108904: pH7Builder Leaks Hashes & Tokens via API

Quick Summary

  • pH7Builder before 18.5.0 contains an information disclosure vulnerability in the Member API: the UserController::users() and user() functions return database rows without filtering.
  • Holders of a valid private API key can obtain bcrypt password hashes, non-expiring hashValidation reset tokens, and members' TOTP secrets.
  • The impact is account takeover and bypass of two-factor authentication; severity HIGH 7.1 (CVSS v4.0) with CWE-522 Insufficiently Protected Credentials.

Vulnerability Summary

pH7Builder, also known as pH7 Social Dating CMS, before version 18.5.0 has an information disclosure vulnerability registered as CVE-2026-108904. The root cause is in the Member API component: the UserController::users() and UserController::user() functions return database rows as-is, without filtering sensitive columns.

This means an API client holding a valid private API key can receive member data far beyond what a public API endpoint should expose. This vulnerability is classified as CWE-522: Insufficiently Protected Credentials, a class of weakness in which credentials are not adequately protected either at rest or in transit.

Publication information for this vulnerability was recorded on October 11, 2026 (2026-10-11T14:58:06.113Z), with an advisory issued by VulnCheck.

Technical Impact: Credentials That Should Never Leave

According to the official description, the sensitive data obtainable through the endpoint includes:

  • Members' bcrypt password hashes, which open the door to offline cracking attacks using computing resources available to the attacker.
  • Non-expiring hashValidation reset tokens. Because these tokens have no validity period, an exposed token can still be used to reset account credentials indefinitely.
  • TOTP secrets, the keys underlying two-factor authentication. With these keys, the second factor is no longer a barrier.

The combination of all three allows an attacker to take over accounts and bypass two-factor authentication. It should be emphasized that this vulnerability does not give an attacker the ability to modify data directly: its CVSS vector shows a high confidentiality impact (VC:H) but no integrity or availability impact (VI:N, VA:N). Its real damage lies in the credential leakage that serves as the entry point for the next stage.

The full vector is CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N, which yields a HIGH 7.1 score. Note the PR:L and AV:N components: the attack is conducted over the network, but it requires low-level access in the form of holding a valid private API key. API keys stored in client applications, repositories, logs, or support team devices are a realistic path to satisfying that condition.

Affected Products and Versions

The affected product is ph7builder from vendor ph7software. Based on the available version data:

  • Versions 0 through all releases before 18.5.0 are affected.
  • Version 18.5.0 is unaffected.

The fix can be traced through commit 52a59da534c7666f7607c8a9b8c42037eb4de66d in the pH7-Social-Dating-CMS repository. The pre-fix code can be seen in the file _protected/app/system/modules/api/controllers/UserController.php on lines 161 through 206 at tag v18.4.1. Additional references are available in the VulnCheck advisory for pH7Builder before 18.5.0 Sensitive Data Exposure via Member API UserController.

Context and Defensive Lessons

This case is a classic example of APIs being a data attack surface. Endpoints designed to serve mobile applications or third-party integrations often inherit internal data retrieval patterns: fetching all table columns and returning them to the caller. When the user table stores password hashes, reset tokens, and TOTP secrets in the same row, a single output-mapping mistake is enough to leak all credentials.

Lessons for development and operations teams:

  • Use an allowlist pattern (a list of columns allowed to go out) instead of returning the entire user object.
  • Store TOTP secrets and reset tokens in a table or storage separate from profile data routinely served by the API.
  • Give every reset token an expiration period, because non-expiring tokens unnecessarily extend the risk window.
  • Treat private API keys as high-risk credentials: rotate them regularly, limit their scope, and monitor their use.

For pH7Builder users, the top priority is to close the data exposure before performing credential recovery, because credential rotation after patching is still mandatory under the assumption that data has already been exposed.

Mitigation

  • Immediately update pH7Builder to version 18.5.0 or later, as that version is stated to be unaffected; the fix can be verified via commit 52a59da534c7666f7607c8a9b8c42037eb4de66d.
  • If an immediate update is not possible, reduce exposure temporarily: restrict or disable access to the Member API endpoint (especially paths that call UserController::users() and user()) and rotate all active private API keys.
  • Rotate member credentials: because bcrypt password hashes may have been read, force password resets and revoke active sessions. Do not rely on the assumption that the hashes were not cracked.
  • Regenerate second factors: reset TOTP configuration for affected members so the old secrets are no longer valid.
  • Revoke all hashValidation reset tokens still in circulation and ensure new tokens have an expiration, so any token that may have been exposed cannot be used.
  • Audit API access logs on user endpoints for unusual data retrieval patterns, and review private API key storage locations (repositories, client configurations, and logs) for possible leakage.

FAQ (English)

What is CVE-2026-108904?
It is an information disclosure vulnerability in pH7Builder (pH7 Social Dating CMS) before version 18.5.0, in which the UserController::users() and user() functions in the Member API return database rows without filtering, allowing sensitive member data to be read by an API client.
How serious is this vulnerability?
It is HIGH severity with a score of 7.1 on CVSS v4.0, vector CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N, and is classified as CWE-522 Insufficiently Protected Credentials. The primary impact is leakage of credential confidentiality.
What sensitive data is at risk of exposure?
bcrypt password hashes, non-expiring hashValidation reset tokens, and members' TOTP secrets. This combination of data allows account takeover and bypass of two-factor authentication.
Can an attacker exploit this without any credentials?
No. The CVSS vector shows PR:L, meaning the attacker needs to hold a valid private API key. However, API keys stored in client applications, repositories, or logs can be a realistic path to obtaining one, so such keys must still be treated as high-risk assets.
Which version should be used?
Version 18.5.0 is stated to be unaffected, while all versions before 18.5.0 are affected. Updating to 18.5.0 or later is the primary step.
When was this vulnerability published?
Publication was recorded on 2026-10-11T14:58:06.113Z (October 11, 2026), with advisory references from VulnCheck and the commit and file in the pH7-Social-Dating-CMS GitHub repository.
Iklan

Komentar