{"uuid": "86b142ec-7fa3-493d-ab25-7efbb5e445bd", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "9f56dd64-161d-43a6-b9c3-555944290a09", "vulnerability": "CVE-2026-75431", "type": "seen", "source": "https://gist.github.com/unpredictable21/39e6ce22e4bc45b0e553d0fa6a6e4d1c", "content": "# CVE-2026-75431 - PowerJob Server Predictable JWT Signing Key Remote Code Execution\n\n## Basic Info\n\n| Field | Value |\n|---|---|\n| **CVE ID** | CVE-2026-75431 |\n| **Vulnerability Type** | Remote Code Execution (RCE) |\n| **Vendor of Product** | https://github.com/PowerJob/PowerJob |\n| **Affected Product Code Base** | PowerJob - 5.1.2 (and likely earlier) |\n| **Attack Type** | Remote |\n| **Impact** | Code execution |\n| **Discoverer** | Yujie He |\n\n## Summary\n\nPowerJob Server version 5.1.2 (and likely earlier) uses a predictable JWT signing key for HS256-based authentication. This allows a remote attacker to execute arbitrary code.\n\n## Additional Information\n\nThe vulnerability has been verified end-to-end on PowerJob 5.1.2 with the default configuration. The derived encryptedToken (ADMIN_b82a450701f6a71723fb99931fe35e18_b) exactly matches the value stored in the database for the PWJB_ADMIN account when using the default password. A proof-of-concept Python script (powerjob_jwt_forge.py) has been developed that computes the key and generates a valid admin JWT offline; it successfully bypasses authentication on /namespace/list and returns real data.\n\nThe issue is exacerbated by the fact that the JDBC URL is often left unchanged in production deployments, making the key fully predictable. A separate OpenAPI App Token forgery path exists even if the admin password is changed.\n\n## Affected Components\n\n- powerjob-server-auth\n- DefaultSecretProvider.java (fetchSecretKey)\n- JwtServiceImpl.java (genSecretKey)\n- powerjob-server-openapi (OpenApiSecurityServiceImpl)\n\n## References\n\n- https://github.com/PowerJob/PowerJob/blob/master/powerjob-server/powerjob-server-auth/src/main/java/tech/powerjob/server/auth/jwt/impl/DefaultSecretProvider.java\n- https://github.com/PowerJob/PowerJob/blob/master/powerjob-server/powerjob-server-auth/src/main/java/tech/powerjob/server/auth/jwt/impl/JwtServiceImpl.java\n- https://github.com/PowerJob/PowerJob/blob/master/powerjob-server/powerjob-server-openapi/src/main/java/tech/powerjob/server/openapi/service/impl/OpenApiSecurityServiceImpl.java\n- https://github.com/PowerJob/PowerJob/blob/master/docker-compose.yml\n- https://github.com/PowerJob/PowerJob/blob/master/powerjob-server/powerjob-server-starter/src/main/resources/application-daily.properties\n\n## Proof of Concept\n\nhttps://github.com/unpredictable21/PowerJob_jwt_key_predictable\n", "creation_timestamp": "2026-09-04T09:45:00.371415Z"}