Skip to content

SQL Injection in Harbor scan log API

Low severity GitHub Reviewed Published May 31, 2024 in goharbor/harbor • Updated Jun 17, 2024

Package

gomod github.com/goharbor/harbor (Go)

Affected versions

< 2.8.6
>= 2.9.0, < 2.9.4
>= 2.10.0, < 2.10.2

Patched versions

2.8.6
2.9.4
2.10.2

Description

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])

References

@stonezdj stonezdj published to goharbor/harbor May 31, 2024
Published to the GitHub Advisory Database Jun 2, 2024
Reviewed Jun 2, 2024
Published by the National Vulnerability Database Jun 11, 2024
Last updated Jun 17, 2024

Severity

Low
2.7
/ 10

CVSS base metrics

Attack vector
Network
Attack complexity
Low
Privileges required
High
User interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
None
Availability
None
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:N/A:N

Weaknesses

CVE ID

CVE-2024-22261

GHSA ID

GHSA-vw63-824v-qf2j

Source code

Loading Checking history
See something to contribute? Suggest improvements for this vulnerability.