{"id":"CVE-2026-110104","published":"2026-10-13T17:17:34.310","lastModified":"2026-10-16T19:18:44.867","description":"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.","cvssScore":5.9,"cvssSeverity":"MEDIUM","cvssVector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N","cwes":["CWE-916"],"vendors":[],"products":[],"references":[{"url":"https://github.com/201206030/novel/blob/v3.5.0/src/main/java/io/github/xxyopen/novel/service/impl/UserServiceImpl.java#L70-L77","tags":[]},{"url":"https://github.com/201206030/novel/commit/fa82ce7e426a5b29db469b8f13d2e29fc1260871","tags":[]},{"url":"https://github.com/201206030/novel/pull/53","tags":[]},{"url":"https://www.vulncheck.com/advisories/novel-through-3.5.0-unsalted-md5-password-storage","tags":[]},{"url":"https://github.com/201206030/novel/pull/53","tags":[]}],"exploitRefs":[{"url":"https://github.com/201206030/novel/blob/v3.5.0/src/main/java/io/github/xxyopen/novel/service/impl/UserServiceImpl.java#L70-L77","tags":[]},{"url":"https://github.com/201206030/novel/commit/fa82ce7e426a5b29db469b8f13d2e29fc1260871","tags":[]},{"url":"https://github.com/201206030/novel/pull/53","tags":[]},{"url":"https://github.com/201206030/novel/pull/53","tags":[]}],"hasPoc":true,"ai":null}