{"id":"CVE-2023-20902","aliases":["BIT-harbor-2023-20902","EUVD-2023-2779","GHSA-mq6f-5xh5-hgcf","GO-2023-2109"],"status":"published","title":"Timing attack risk in Harbor","description":"A timing condition in Harbor 2.6.x and below, Harbor 2.7.2 and below,  Harbor 2.8.2 and below, and Harbor 1.10.17 and below allows an attacker with network access to \ncreate jobs/stop job tasks and retrieve job task information.","severity":{"version":"3.1","score":5.9,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N","level":"medium","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-09","score":0.00452,"percentile":0.39564,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-208","CWE-362"],"published":"2023-10-10T21:29:02Z","modified":"2026-10-28T02:30:40Z","fixes":[{"ecosystem":"Go","package":"github.com/goharbor/harbor","fixed_in":["1.10.18","2.7.3","2.8.3","2.7.3+incompatible","2.8.3+incompatible"],"sources":["ghsa","osv"]},{"ecosystem":"Bitnami","package":"harbor","fixed_in":["1.10.17","2.6.5","2.7.3","2.8.3"],"sources":["osv"]}],"affected":[{"source":"ghsa","ecosystem":"Go","package":"github.com/goharbor/harbor","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.10.18"}]}]},{"source":"ghsa","ecosystem":"Go","package":"github.com/goharbor/harbor","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.0.0"},{"fixed":"2.7.3"}]}]},{"source":"ghsa","ecosystem":"Go","package":"github.com/goharbor/harbor","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"2.8.0"},{"fixed":"2.8.3"}]}]},{"source":"osv","ecosystem":"Bitnami","package":"harbor","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"1.10.17"},{"introduced":"2.6.0"},{"fixed":"2.6.5"},{"introduced":"2.7.0"},{"fixed":"2.7.3"},{"introduced":"2.8.0"},{"fixed":"2.8.3"}]}]},{"source":"osv","ecosystem":"Go","package":"github.com/goharbor/harbor","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"1.10.18"}]}]},{"source":"osv","ecosystem":"Go","package":"github.com/goharbor/harbor","ranges":[{"type":"SEMVER","events":[{"introduced":"2.0.0"},{"fixed":"2.7.3"}]}]},{"source":"osv","ecosystem":"Go","package":"github.com/goharbor/harbor","ranges":[{"type":"SEMVER","events":[{"introduced":"2.8.0"},{"fixed":"2.8.3"}]}]},{"source":"osv","ecosystem":"Go","package":"github.com/goharbor/harbor","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"1.10.18"},{"introduced":"2.0.0+incompatible"},{"fixed":"2.7.3+incompatible"},{"introduced":"2.8.0+incompatible"},{"fixed":"2.8.3+incompatible"}]}]}],"products":[{"vendor":"harbor","product":"project"},{"vendor":"linuxfoundation","product":"harbor"}],"references":[{"url":"https://github.com/goharbor/harbor/security/advisories/GHSA-mq6f-5xh5-hgcf","tags":["x_transferred","Exploit","Vendor Advisory","advisory","web"]},{"url":"https://github.com/goharbor/harbor/blob/aaea068cceb4063ab89313d9785f2b40f35b0d63/src/jobservice/api/authenticator.go#L69-L69","tags":["web"]},{"url":"https://github.com/goharbor/harbor/releases/tag/v1.10.18","tags":["web"]},{"url":"https://github.com/goharbor/harbor/releases/tag/v2.7.3","tags":["web"]},{"url":"https://github.com/goharbor/harbor/releases/tag/v2.8.3","tags":["web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2023-20902","tags":["web","advisory"]},{"url":"https://github.com/advisories/GHSA-mq6f-5xh5-hgcf"},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2023/20xxx/CVE-2023-20902.json","tags":["advisory"]},{"url":"https://github.com/goharbor/harbor","tags":["package"]}],"sources":{"cve":[{"id":"CVE-2023-20902","title":"Timing attack risk in Harbor","description":"A timing condition in Harbor 2.6.x and below, Harbor 2.7.2 and below,  Harbor 2.8.2 and below, and Harbor 1.10.17 and below allows an attacker with network access to \ncreate jobs/stop job tasks and retrieve job task information.\n\n\n","status":"published","published":"2023-11-09T00:36:25.369Z","modified":"2024-09-04T13:18:17.73Z","cvss":[{"version":"3.1","score":5.9,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N","level":"medium","assessor":"cna"}],"updated_at":"2026-11-02T14:35:13.912858Z"}],"euvd":[{"id":"EUVD-2023-2779","description":"A timing condition in Harbor 2.6.x and below, Harbor 2.7.2 and below,  Harbor 2.8.2 and below, and Harbor 1.10.17 and below allows an attacker with network access to \ncreate jobs/stop job tasks and retrieve job task information.\n\n\n","status":"published","published":"2023-11-09T00:36:25Z","modified":"2024-09-04T13:18:17Z","cvss":[{"version":"3.1","score":5.9,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N","level":"medium"}],"updated_at":"2026-11-03T00:56:04.589959Z"}],"ghsa":[{"id":"GHSA-mq6f-5xh5-hgcf","title":"Harbor timing attack risk","description":"In the Harbor jobservice container, the comparison of secrets in the authenticator type is prone to timing attacks. The vulnerability occurs due to the following code: https://github.com/goharbor/harbor/blob/aaea068cceb4063ab89313d9785f2b40f35b0d63/src/jobservice/api/authenticator.go#L69-L69\nTo avoid this issue, constant time comparison should be used.\n```\nsubtle.ConstantTimeCompare([]byte(expectedSecret), []byte(secret)) == 0\n```\n\n### Impact\nThis attack might be possible theoretically, but no workable proof of concept is available, and access complexity is set at High.\nThe jobservice exposes these APIs\n```\nCreate a job task --- POST /api/v1/jobs    \nGet job task information --- GET /api/v1/jobs/{job_id}\nStop job task ---  POST /api/v1/jobs/{job_id}\nGet job log task ---  GET /api/v1/jobs/{job_id}/log\nGet job execution --- GET /api/v1/jobs/{job_id}/executions\nGet job stats ---  GET /api/v1/stats\nGet job service configuration ---  GET /api/v1/config\n```\nIt is used to create jobs/stop job tasks and retrieve job task information.  If an attacker obtains the secrets, it is possible to retrieve the job information, create a job, or stop a job task. \n\nThe following versions of Harbor are involved:\n\u003c=Harbor 2.8.2, \u003c=Harbor 2.7.2, \u003c= Harbor 2.6.x, \u003c=Harbor 1.10.17\n\n\n### Patches\nHarbor 2.8.3, Harbor 2.7.3, Harbor 1.10.18\n\n### Workarounds\nBecause the jobservice only exposes HTTP service to harbor-core containers, blocking any inbound traffic from the external network to the jobservice container can reduce the risk.\n\n### Credits\nThanks to Porcupiney Hairs for reporting this issue.\n","status":"published","published":"2023-10-10T21:29:02Z","modified":"2023-11-16T19:59:19Z","cvss":[{"version":"3.1","score":5.9,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N","level":"medium"}],"cwes":["CWE-208","CWE-362"],"updated_at":"2026-11-02T14:37:22.040291Z"}],"nvd":[{"id":"CVE-2023-20902","description":"A timing condition in Harbor 2.6.x and below, Harbor 2.7.2 and below,  Harbor 2.8.2 and below, and Harbor 1.10.17 and below allows an attacker with network access to \ncreate jobs/stop job tasks and retrieve job task information.\n\n\n","status":"published","published":"2023-11-09T01:15:07.66Z","modified":"2026-06-17T05:31:08.99Z","cvss":[{"version":"3.1","score":5.9,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N","level":"medium","assessor":"secondary"},{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:L/A:N","level":"medium","assessor":"primary"}],"cwes":["CWE-362"],"updated_at":"2026-11-02T14:08:43.669554Z"}],"osv":[{"id":"CVE-2023-20902","title":"Timing attack risk in Harbor","description":"A timing condition in Harbor 2.6.x and below, Harbor 2.7.2 and below,  Harbor 2.8.2 and below, and Harbor 1.10.17 and below allows an attacker with network access to \ncreate jobs/stop job tasks and retrieve job task information.\n\n\n","status":"published","published":"2023-11-09T00:36:25.369Z","modified":"2026-10-28T02:30:40.720854605Z","cvss":[{"version":"3.1","score":5.9,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N","level":"medium"}],"updated_at":"2026-11-02T15:44:30.334753Z"},{"id":"GHSA-mq6f-5xh5-hgcf","title":"Harbor timing attack risk","description":"In the Harbor jobservice container, the comparison of secrets in the authenticator type is prone to timing attacks. The vulnerability occurs due to the following code: https://github.com/goharbor/harbor/blob/aaea068cceb4063ab89313d9785f2b40f35b0d63/src/jobservice/api/authenticator.go#L69-L69\nTo avoid this issue, constant time comparison should be used.\n```\nsubtle.ConstantTimeCompare([]byte(expectedSecret), []byte(secret)) == 0\n```\n\n### Impact\nThis attack might be possible theoretically, but no workable proof of concept is available, and access complexity is set at High.\nThe jobservice exposes these APIs\n```\nCreate a job task --- POST /api/v1/jobs    \nGet job task information --- GET /api/v1/jobs/{job_id}\nStop job task ---  POST /api/v1/jobs/{job_id}\nGet job log task ---  GET /api/v1/jobs/{job_id}/log\nGet job execution --- GET /api/v1/jobs/{job_id}/executions\nGet job stats ---  GET /api/v1/stats\nGet job service configuration ---  GET /api/v1/config\n```\nIt is used to create jobs/stop job tasks and retrieve job task information.  If an attacker obtains the secrets, it is possible to retrieve the job information, create a job, or stop a job task. \n\nThe following versions of Harbor are involved:\n\u003c=Harbor 2.8.2, \u003c=Harbor 2.7.2, \u003c= Harbor 2.6.x, \u003c=Harbor 1.10.17\n\n\n### Patches\nHarbor 2.8.3, Harbor 2.7.3, Harbor 1.10.18\n\n### Workarounds\nBecause the jobservice only exposes HTTP service to harbor-core containers, blocking any inbound traffic from the external network to the jobservice container can reduce the risk.\n\n### Credits\nThanks to Porcupiney Hairs for reporting this issue.\n","status":"published","published":"2023-10-10T21:29:02Z","modified":"2026-07-08T06:53:11.997758248Z","cvss":[{"version":"3.1","score":5.9,"vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N","level":"medium"}],"cwes":["CWE-208","CWE-362"],"updated_at":"2026-11-02T15:46:52.170928Z"},{"id":"BIT-harbor-2023-20902","title":"Timing attack risk in Harbor","description":"A timing condition in Harbor 2.6.x and below, Harbor 2.7.2 and below,  Harbor 2.8.2 and below, and Harbor 1.10.17 and below allows an attacker with network access to \ncreate jobs/stop job tasks and retrieve job task information.","status":"published","published":"2024-03-06T10:53:13.485Z","modified":"2026-09-08T08:47:52.093952729Z","updated_at":"2026-11-02T15:28:31.02759Z"},{"id":"GO-2023-2109","title":"Harbor timing attack risk in github.com/goharbor/harbor","description":"Harbor timing attack risk in github.com/goharbor/harbor","status":"published","published":"2024-08-21T14:30:22Z","modified":"2026-03-03T04:54:15.700553Z","updated_at":"2026-11-02T15:47:01.185262Z"}]}}
