{"id":"CVE-2026-110104","summary":"novel through 3.5.0 Unsalted MD5 Password Storage","details":"Xxyopen novel through 3.5.0 contains a weak password hashing vulnerability that allows attackers to recover plaintext passwords because UserServiceImpl.register() stores unsalted MD5 digests in user_info.password. Attackers who obtain the password column through a database leak or backup exposure can crack hashes with precomputed tables or GPU brute force and reuse credentials.","modified":"2026-10-15T07:07:25.621941334Z","published":"2026-10-13T16:53:07.159Z","database_specific":{"osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/110xxx/CVE-2026-110104.json","cna_assigner":"VulnCheck","cwe_ids":["CWE-916"]},"references":[{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/110xxx/CVE-2026-110104.json"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-110104"},{"type":"ADVISORY","url":"https://www.vulncheck.com/advisories/novel-through-3.5.0-unsalted-md5-password-storage"},{"type":"FIX","url":"https://github.com/201206030/novel/commit/fa82ce7e426a5b29db469b8f13d2e29fc1260871"},{"type":"FIX","url":"https://github.com/201206030/novel/pull/53"},{"type":"PACKAGE","url":"https://github.com/201206030/novel"},{"type":"ARTICLE","url":"https://github.com/201206030/novel/blob/v3.5.0/src/main/java/io/github/xxyopen/novel/service/impl/UserServiceImpl.java#L70-L77"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/201206030/novel","events":[{"introduced":"0"},{"fixed":"b2c034004883a9f3c69f8da4689d897cb054491a"},{"fixed":"fa82ce7e426a5b29db469b8f13d2e29fc1260871"}],"database_specific":{"extracted_events":[{"introduced":"0"},{"fixed":"3.5.0"}],"source":["DESCRIPTION","REFERENCES"]}}],"versions":["v3.4.0","v3.3.0.RELEASE","v3.2.0.RELEASE","v3.1.0.RELEASE","v3.0.0"],"database_specific":{"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-110104.json","vanir_signatures":[{"source":"https://github.com/201206030/novel/commit/b2c034004883a9f3c69f8da4689d897cb054491a","target":{"file":"src/main/java/io/github/xxyopen/novel/controller/front/HomeController.java"},"deprecated":false,"digest":{"line_hashes":["56099671504372354517768152191897376978","142448649225651592232449818414072903711","224919776169991478922614743013747057562","51275458508038979269447385129703310068","179483586002032425675274286263827876563","21352932886832434416640675461897768268","32073621272666628192178757795640107061","256964412734369335856345935733661721579","246349448903627111728113792868317487965","167801772419139885881161800420019931225","283349861433145000441912214303096128466","219621319150188036178789136565925094928"],"threshold":0.9},"id":"CVE-2026-110104-5ba0ff17","signature_type":"Line","signature_version":"v1"}],"vanir_signatures_modified":"2026-10-15T07:07:25Z"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V4","score":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N"}]}