---
id: CVE-2026-110104
title: >-
  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
summary: >-
  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 th…
severity: medium
cvss: 5.9
cvssVector: 'CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N'
cwe:
  - CWE-916
published: '2026-10-13'
updated: '2026-10-13'
sourceUpdated: '2026-10-13T18:17:22.440'
source: NVD
sourceUrl: 'https://nvd.nist.gov/vuln/detail/CVE-2026-110104'
references:
  - url: >-
      https://github.com/201206030/novel/blob/v3.5.0/src/main/java/io/github/xxyopen/novel/service/impl/UserServiceImpl.java#L70-L77
    label: disclosure@vulncheck.com
  - url: >-
      https://github.com/201206030/novel/commit/fa82ce7e426a5b29db469b8f13d2e29fc1260871
    label: disclosure@vulncheck.com
  - url: 'https://github.com/201206030/novel/pull/53'
    label: disclosure@vulncheck.com
  - url: >-
      https://www.vulncheck.com/advisories/novel-through-3.5.0-unsalted-md5-password-storage
    label: disclosure@vulncheck.com
  - url: 'https://github.com/201206030/novel/pull/53'
    label: 134c704f-9b21-4f2e-91b3-4a467353bcc0
tags:
  - nvd
ingestedAt: '2026-10-13T17:38:53.185Z'
---

## Overview

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.

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
