Every CVE Search/ Get API key

CVE-2024-22261

SQL Injection in Harbor scan log API

2.7 LowFix available

SQL-Injection in Harbor allows priviledge users to leak the task IDs

Attack profile

How easy it is to exploit

Attack vector
Network
Complexity
Low
Privileges needed
High
User interaction
None

What an attacker can affect

Confidentiality
Low
Integrity
None
Availability
None

Exploit likelihood

0.42%Up 0.4 points since Jun 11, 2024
90%50%10%1%

What each source reports

CVE List Score used 2.7

SQL Injection in Harbor scan log API

SQL-Injection in Harbor allows priviledge users to leak the task IDs

Record
CVE-2024-22261
CVSS 3.1
2.7 LowCVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:N/A:N
Weakness
CWE-566
Updated
2026-11-02
EUVDEUVD-2024-2184 2.7

SQL-Injection in Harbor allows priviledge users to leak the task IDs

Record
EUVD-2024-2184
CVSS 3.1
2.7 LowCVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:N/A:N
Updated
2026-11-03
GitHub AdvisoriesGHSA-vw63-824v-qf2j 2.7

SQL Injection in Harbor scan log API

Impact

A user with an administrator, project_admin, or project_maintainer role could utilize and exploit SQL Injection to allow the execution of any Postgres function or the extraction of sensitive information from the database through this API:

GET /api/v2.0/projects/{project_name}/repositories/{repository_name}/artifacts/{reference}/scan/{report_id}/log

The SQL injection might happen in the code:

https://github.com/goharbor/harbor/blob/9b7c1a2274fbc5ea16e19a484532f86c08926577/src/pkg/task/task.go#L241

Because raw SQL executed in ormer.Raw(Sql).QueryRows() is PrepareStatement. In the driver of Postgres, one PrepareStatement must contain only ONE SQL command, see https://www.postgresql.org/docs/15/libpq-exec.html#LIBPQ-PQPREPARE. The SQL should start with:

SELECT * FROM task WHERE extra_attrs::jsonb->'report_uuids' @>

Adding a delete/update operation by appending malicious content to the current SQL is impossible. Furthermore, the query result of the task is just an intermediate result, the task ID is used to locate the job log file, and the response only contains the content of the job log file. so this vulnerability can be used to execute SQL functions, but it can't leak any useful information to the response.

Harbor >=v2.8.1, >=2.9.0, >=2.10.0 are impacted.

Patches

Harbor v2.8.6, v2.9.4, v2.10.2 fixes this issue.

Workarounds

There is no workaround for this issue.

Credits

Thanks Taisei Inoue ([email protected])

Record
GHSA-vw63-824v-qf2j
CVSS 3.1
2.7 LowCVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:N/A:N
Weakness
CWE-566
Updated
2026-11-02
NVD 2.7

SQL-Injection in Harbor allows priviledge users to leak the task IDs

Record
CVE-2024-22261
CVSS 3.1
2.7 LowCVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:N/A:N
CVSS 3.1
5.5 MediumCVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:L/A:N
Weakness
CWE-566, CWE-89
Updated
2026-11-02
OSV 2.7

SQL Injection in Harbor scan log API

SQL-Injection in Harbor allows priviledge users to leak the task IDs

Record
CVE-2024-22261
CVSS 3.1
2.7 LowCVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:N/A:N
Weakness
CWE-566
Updated
2026-11-02
OSVGHSA-vw63-824v-qf2j 2.7

SQL Injection in Harbor scan log API

Impact

A user with an administrator, project_admin, or project_maintainer role could utilize and exploit SQL Injection to allow the execution of any Postgres function or the extraction of sensitive information from the database through this API:

GET /api/v2.0/projects/{project_name}/repositories/{repository_name}/artifacts/{reference}/scan/{report_id}/log

The SQL injection might happen in the code:

https://github.com/goharbor/harbor/blob/9b7c1a2274fbc5ea16e19a484532f86c08926577/src/pkg/task/task.go#L241

Because raw SQL executed in ormer.Raw(Sql).QueryRows() is PrepareStatement. In the driver of Postgres, one PrepareStatement must contain only ONE SQL command, see https://www.postgresql.org/docs/15/libpq-exec.html#LIBPQ-PQPREPARE. The SQL should start with:

SELECT * FROM task WHERE extra_attrs::jsonb->'report_uuids' @>

Adding a delete/update operation by appending malicious content to the current SQL is impossible. Furthermore, the query result of the task is just an intermediate result, the task ID is used to locate the job log file, and the response only contains the content of the job log file. so this vulnerability can be used to execute SQL functions, but it can't leak any useful information to the response.

Harbor >=v2.8.1, >=2.9.0, >=2.10.0 are impacted.

Patches

Harbor v2.8.6, v2.9.4, v2.10.2 fixes this issue.

Workarounds

There is no workaround for this issue.

Credits

Thanks Taisei Inoue ([email protected])

Record
GHSA-vw63-824v-qf2j
CVSS 3.1
2.7 LowCVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:N/A:N
Weakness
CWE-566
Updated
2026-11-02
OSVBIT-harbor-2024-22261 No score

SQL Injection in Harbor scan log API

SQL-Injection in Harbor allows priviledge users to leak the task IDs

Record
BIT-harbor-2024-22261
Updated
2026-11-02
OSVGO-2024-2916 No score

SQL Injection in Harbor scan log API in github.com/goharbor/harbor

SQL Injection in Harbor scan log API in github.com/goharbor/harbor

Record
GO-2024-2916
Updated
2026-11-02

Affected products

Affected packages

Affected packages
PackageAffectedFixed
github.com/goharbor/harbor
Go
before 2.8.6
2.8.6
github.com/goharbor/harbor
Go
2.9.0 up to 2.9.4
2.9.4
github.com/goharbor/harbor
Go
2.10.0 up to 2.10.2
2.10.2
harbor
Bitnami
2.8.1 up to 2.8.6, 2.9.0 up to 2.9.4, 2.10.0 up to 2.10.2
2.8.62.9.42.10.2
github.com/goharbor/harbor
Go
before 2.8.6+incompatible, 2.9.0+incompatible up to 2.9.4+incompatible, 2.10.0+incompatible up to 2.10.2+incompatible
2.8.6+incompatible2.9.4+incompatible2.10.2+incompatible

History

History
RecordedChangedSources
aliasesEUVD
first indexedCVE List, GitHub Advisories, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2024-22261 is a low vulnerability (CVSS 2.7) in Harbor, published June 2, 2024. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.42%, the 36th percentile. Fixed in github.com/goharbor/harbor 2.8.6.

References

MoveEnter Open