{"id":"CVE-2022-39366","kind":"vulnerability","aliases":["CVE-2022-39366","GHSA-r8gm-v65f-c973"],"related":[],"title":"acryl-datahub missing JWT signature check","description":"# Missing JWT signature check (`GHSL-2022-078`)\n\nThe [`StatelessTokenService`](https://github.com/datahub-project/datahub/blob/aa146db611e3a4ca3aa17bb740783f789d4444d3/metadata-service/auth-impl/src/main/java/com/datahub/authentication/token/StatelessTokenService.java#L30) of the DataHub metadata service (GMS) does not verify the signature of JWT tokens. This allows an attacker to connect to DataHub instances as any user if Metadata Service authentication is enabled. This vulnerability occurs because the `StatelessTokenService` of the Metadata service uses the [`parse`](https://github.com/datahub-project/datahub/blob/aa146db611e3a4ca3aa17bb740783f789d4444d3/metadata-service/auth-impl/src/main/java/com/datahub/authentication/token/StatelessTokenService.java#L134) method of `io.jsonwebtoken.JwtParser`, which does not perform a verification of the cryptographic token signature. This means that JWTs are accepted regardless of the used algorithm.\n\n#### Impact\n\nThis issue may lead to an authentication bypass.\n\n#### Resources\n\n* [CodeQL: Missing JWT signature check](https://codeql.github.com/codeql-query-help/java/java-missing-jwt-signature-check/)","summary":"DataHub's metadata service parses JWT tokens without checking their cryptographic signature, so any token is accepted regardless of algorithm. An attacker can forge a token and connect to the instance as any user when Metadata Service authentication is enabled.","severity":"critical","cvss":9.9,"epss":0.01113,"exploited":false,"exploited_at":null,"products":[{"name":"acryl-datahub","fixed":["0.8.45"],"affected":"< 0.8.45","ecosystem":"pypi"},{"name":"datahub","fixed":["0.8.45"],"affected":"< 0.8.45","ecosystem":"vendor"}],"ecosystems":["pypi","vendor"],"tags":["cwe-347","datahub","package","pypi","python","self-hosted"],"not_affected_if":["auth-disabled","managed-hosting"],"how_to_check":"- Check the installed version with `pip show acryl-datahub`; versions below `0.8.45` are affected.\n- Confirm whether Metadata Service authentication is enabled in the GMS configuration (unknown which exact setting the sources name).","fix":"- Upgrade the `acryl-datahub` package to `0.8.45` or later.\n- Rotate any tokens or secrets issued by an affected instance if exposure is suspected (unknown from sources whether a rotation is required).","status":"open","published_at":"2022-10-28T17:15:23+00:00","first_seen_at":"2026-10-26T20:56:17+00:00","triaged_at":"2026-10-26T21:08:25+00:00","updated_at":"2026-10-26T21:20:32+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-10-26T21:08:25Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade the `acryl-datahub` package to `0.8.45` or later.\n- Rotate any tokens or secrets issued by an affected instance if exposure is suspected (unknown from sources whether a rotation is required).","reach":"network","title":"acryl-datahub: unsigned JWTs accepted, letting attackers log in as any user","impact":"high","summary":"DataHub's metadata service parses JWT tokens without checking their cryptographic signature, so any token is accepted regardless of algorithm. An attacker can forge a token and connect to the instance as any user when Metadata Service authentication is enabled.","category":"package","nicknames":[],"who_cares":["self-hosted","datahub","python","pypi"],"confidence":0.7,"needs_auth":"no","worst_case":"Attacker impersonates any DataHub user and reads or changes metadata","analyst_note":"","how_to_check":"- Check the installed version with `pip show acryl-datahub`; versions below `0.8.45` are affected.\n- Confirm whether Metadata Service authentication is enabled in the GMS configuration (unknown which exact setting the sources name).","needs_analyst":false,"not_affected_if":["auth-disabled","managed-hosting"],"who_is_affected":"Teams running a self-hosted DataHub metadata service with Metadata Service authentication enabled are exposed, since the flaw is in the server-side token check. Instances with authentication disabled are not exposed by this flaw, as the sources describe it as an authentication bypass. Teams using only the client library without running a metadata service are unlikely to be affected, though the sources do not state this explicitly.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"critical"},"cost_usd":0.000669,"input_tokens":3715,"output_tokens":596,"severity_before":"critical"},"analyst_status":null,"analyst_note":null,"search":"'-078':78C '-2022':9A,17A,77C '-347':24B '-39366':10A,18A '/codeql-query-help/java/java-missing-jwt-signature-check/)':174C '/datahub-project/datahub/blob/aa146db611e3a4ca3aa17bb740783f789d4444d3/metadata-service/auth-impl/src/main/java/com/datahub/authentication/token/statelesstokenservice.java#l134)':131C '/datahub-project/datahub/blob/aa146db611e3a4ca3aa17bb740783f789d4444d3/metadata-service/auth-impl/src/main/java/com/datahub/authentication/token/statelesstokenservice.java#l30)':83C 'accept':48B,151C 'acryl':2A,20A 'acryl-datahub':1A,19A 'algorithm':51B,156C 'allow':99C 'attack':53B,101C 'authent':69B,113C,164C 'bypass':165C 'c973':15A 'check':7A,40B,75C,171C 'codeql':167C 'codeql.github.com':173C 'codeql.github.com/codeql-query-help/java/java-missing-jwt-signature-check/)':172C 'connect':59B,103C 'cryptograph':42B,143C 'cve':8A,16A 'cwe':23B 'datahub':3A,21A,22A,25B,32B,86C,105C 'enabl':71B,115C 'forg':55B 'ghsa':12A 'ghsa-r8gm-v65f-c973':11A 'ghsl':76C 'github.com':82C,130C 'github.com/datahub-project/datahub/blob/aa146db611e3a4ca3aa17bb740783f789d4444d3/metadata-service/auth-impl/src/main/java/com/datahub/authentication/token/statelesstokenservice.java#l134)':129C 'github.com/datahub-project/datahub/blob/aa146db611e3a4ca3aa17bb740783f789d4444d3/metadata-service/auth-impl/src/main/java/com/datahub/authentication/token/statelesstokenservice.java#l30)':81C 'gms':89C 'host':31B 'impact':157C 'instanc':62B,106C 'io.jsonwebtoken.jwtparser':134C 'issu':159C 'jwt':5A,37B,73C,96C,169C 'jwts':149C 'lead':161C 'may':160C 'mean':147C 'metadata':34B,67B,87C,111C,124C 'method':132C 'miss':4A,72C,168C 'occur':118C 'packag':26B 'pars':36B,128C 'perform':138C 'pypi':27B 'python':28B 'r8gm':13A 'regardless':49B,152C 'resourc':166C 'self':30B 'self-host':29B 'servic':35B,68B,88C,112C,125C 'signatur':6A,43B,74C,94C,145C,170C 'statelesstokenservic':80C,121C 'token':38B,46B,57B,97C,144C 'use':126C,155C 'user':65B,109C 'v65f':14A 'verif':140C 'verifi':92C 'vulner':117C 'without':39B","nicknames":[],"mitigations":[],"who_affected":"Teams running a self-hosted DataHub metadata service with Metadata Service authentication enabled are exposed, since the flaw is in the server-side token check. Instances with authentication disabled are not exposed by this flaw, as the sources describe it as an authentication bypass. Teams using only the client library without running a metadata service are unlikely to be affected, though the sources do not state this explicitly.","tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2022-10-28T17:15:23+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:H/A:L","cvss_by":"GitHub","poc_count":0,"sources":[{"source":"ghsa","external_id":"GHSA-r8gm-v65f-c973","url":"https://github.com/advisories/GHSA-r8gm-v65f-c973","severity":"critical","published_at":"2022-10-31T22:42:57+00:00","modified_at":"2026-10-26T20:54:10+00:00","first_seen_at":"2026-10-26T20:56:17+00:00","fetched_at":"2026-10-26T20:56:17+00:00","note":null},{"source":"nvd","external_id":"CVE-2022-39366","url":"https://nvd.nist.gov/vuln/detail/CVE-2022-39366","severity":null,"published_at":"2022-10-28T17:15:23+00:00","modified_at":"2026-06-17T04:58:13+00:00","first_seen_at":"2026-10-26T21:20:32+00:00","fetched_at":"2026-10-26T21:20:32+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}