Skip to main content

Picsou CVE-2026-62860

| EUVDEUVD-2026-114465 MEDIUM
Observable Timing Discrepancy (CWE-208)
2026-10-30 GitHub_M
5.3
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Reach /api/auth/login over the network
  2. Exploit
    Submit login attempts with arbitrary wrong passwords
  3. Execution
    Measure per-username response latency (bcrypt timing gap)
  4. Impact
    Compile confirmed valid usernames for credential stuffing

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V6 - Authentication Timing attack prevention
Exploitation Conditions

Exploitable by an unauthenticated attacker (CVSS PR:N) who can send HTTP POST requests to the /api/auth/login endpoint and observe response latency. The specific prerequisite is that the attacker must be able to distinguish the bcrypt timing cost from baseline - the leak is the ~20× latency difference between the unknown-username path (immediate BadCredentialsException before passwordEncoder.matches) and the valid-username path (which runs the bcrypt comparison). LIMITING factors explicitly stated by the vendor: built-in login rate limiting throttles rapid probing (the PoC itself detects HTTP 429), the user population on a personal self-hosted instance is very small (few usernames to enumerate), and many deployments are not internet-exposed, requiring the attacker to already have LAN access. Network latency/jitter on a remote path can also blur the timing signal, though the measured 20× gap was stable in the reporter's local tests.

Impact

This is a genuine but low-priority finding. The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N = 5.3, MEDIUM) correctly captures an unauthenticated, network-reachable weakness with only limited confidentiality impact (C:L) and no integrity or availability effect - consistent with CWE-208 username enumeration that leaks which accounts exist but neither reads nor modifies data. The vuln.today decision label is 'this_month' (routine prioritization), not act_now or emergency. No EPSS score and no CISA KEV entry were supplied, so there is no signal of active exploitation; status is therefore 'no public exploit identified' does NOT apply here because a working PoC is present - a full, reporter-confirmed Python timing script with three successful runs showing a stable ~20× latency gap (admin ~0.3-0.45s vs absent ~0.015-0.025s) is published directly in the GHSA advisory. The signals are internally consistent: medium severity, PoC available, no evidence of widespread exploitation, and a self-hosted niche product. The vendor itself rates severity Low, citing three compounding mitigations (login rate limiting, tiny user populations, and deployments that are frequently LAN-only). Net: a real, easily-fixed information-disclosure oracle that assists later credential stuffing/brute force, but not an emergency - the bug is a precursor, not a breach.

Exploit ScenarioDerived

An attacker who can reach the Picsou instance (over the internet if exposed, otherwise from the LAN) sends repeated POST requests to /api/auth/login with candidate usernames and an arbitrary wrong password, timing each response. Existing usernames take ~300-450ms (the bcrypt comparison cost) while non-existent ones return in ~15-25ms despite identical HTTP 401 bodies, so the attacker compiles a list of valid accounts. A working PoC script confirming this is published in the GHSA advisory; the enumerated usernames then feed targeted credential-stuffing or brute-force attempts.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 30, 2026

Picsou's /api/auth/login endpoint returns measurably different response times for valid versus invalid usernames, letting an unauthenticated remote attacker enumerate account names by timing requests. The discrepancy arises because unknown usernames short-circuit to a BadCredentialsException before the bcrypt comparison, while existing usernames pay the full bcrypt cost - the reporter measured a stable ~20× gap (roughly 300-450 ms versus 15-25 ms) despite both paths returning identical generic HTTP 401 responses. A working public PoC script exists and was confirmed against a local instance; the vendor shipped a fix in release 1.0.8 that performs a dummy bcrypt comparison on the unknown-user path. Practical exposure is limited by built-in login rate limiting, the tiny user population of a self-hosted personal finance dashboard, and the fact that many deployments are only reachable from the local network.

RemediationAI

Upgrade to Picsou release 1.0.8, which applies commit 877ac0f7c651612e15f0dbac5de8e96d66bbcf59 and adds a dummyPasswordHash bcrypt comparison on the unknown-username branch so both login outcomes take comparable time; verify the change is present in AuthController.login() after upgrading, and consult advisory GHSA-ww5m-pxgq-8qq6 along with the release notes at https://github.com/Cloeille/picsou-finance/releases/tag/1.0.8 for any version caveats. If upgrading must be deferred, the vendor's own limiting controls apply: keep the existing login rate limiting in place (the PoC observes HTTP 429 when throttled, which blunts rapid latency sampling), and keep the dashboard off untrusted networks or behind a reverse proxy/VPN so only LAN users can reach /api/auth/login - accepting that this only raises the bar for remote attackers and does not fix the oracle for someone already on the local network. Adding uniform latency (for example a fixed delay or dummy hash computation in a custom filter) is the same equalization technique as the upstream patch and carries the side effect of slowing every failed login; note the vendor's precaution that remote path jitter may blur the signal but that a ~20× gap was stable in local testing, so network distance should not be relied on as a mitigation.

Affected VersionsENISA

picsou-finance < 1.0.8

Affected Packages

euvd picsou_finance fix: 1.0.8

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Picsou is a self-hosted personal finance dashboard implemented as a Maven-built Java/Spring application with a Spring Security-based authentication stack. The root cause is CWE-208, Observable Timing Discrepancy: AuthController.login() calls userRepository.findByUsernameWithMember(...) and throws orElseThrow(() -> new BadCredentialsException(...)) for unknown users, so no password hashing work occurs; for a known user the code proceeds to passwordEncoder.matches(...), which performs a deliberately slow bcrypt comparison. Because bcrypt's cost factor is intentionally expensive, the two code paths diverge in CPU time by hundreds of milliseconds, and repeated latency sampling converts that into a username-validity oracle even though status code and body are identical. The upstream fix - commit 877ac0f7c651612e15f0dbac5de8e96d66bbcf59 - introduces a dummyPasswordHash field initialized once via passwordEncoder.encode("login-timing-equalizer") so the unknown-user branch still runs a bcrypt matches(...) (result discarded) before throwing, equalizing the work across both branches. Note that one package record lists maven/ as vulnerable from 1.1.0 with 'not yet patched', which conflicts with the CVE's stated 1.0.8 fix and the referenced release tag; version applicability should be confirmed against the vendor advisory GHSA-ww5m-pxgq-8qq6 before assuming any given build is patched.

Know when Java gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 5.3 MEDIUM
AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
vuln.today AI 5.3 MEDIUM

Unauthenticated network request to the login endpoint (AV:N, PR:N, UI:N); the published PoC shows a large, reliable timing gap (AC:L); only usernames leak, so C:L and I:N/A:N.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
None
Availability
None

Lifecycle Timeline

1
Patch available
Oct 30, 2026 - 22:03 EUVD

DescriptionCVE.org

Picsou is a self-hosted personal finance dashboard. In the affected login implementation, the /api/auth/login endpoint reveals whether a username exists through a timing discrepancy. In backend/src/main/java/com/picsou/controller/AuthController.java, AuthController.login() throws BadCredentialsException immediately for an unknown username, before passwordEncoder.matches(...), whereas an existing username with an incorrect password incurs the bcrypt comparison cost. Both cases return the same generic HTTP 401 response, but repeated latency measurements disclose valid usernames without credentials. Login rate limiting, a small user population, and deployments inaccessible from outside the local network limit practical exposure; the weakness does not itself read or modify account data, though enumerated usernames can assist credential stuffing or brute-force attacks. This issue is fixed in repository release 1.0.8.

Threat Intelligence Overview

EPSS Score
0.2%
Top 85% exploitable
Prevalence
Rare
obscure self-hosted hobby finance dashboard, tiny deployment footprint
Data Quality
5 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact· derived
Medium

Priority Score

26
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +26
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

More in Java

View all
CVE-2012-4681 CRITICAL POC
9.8 Aug 28

Oracle Java SE 7 Update 6 and earlier contains multiple sandbox bypass vulnerabilities via the ClassFinder and forName m

CVE-2015-7450 CRITICAL POC
9.8 Jan 02

Remote code execution in IBM Sterling B2B Integrator, Sterling Integrator, and Tivoli Common Reporting allows unauthenti

CVE-2013-2465 CRITICAL POC
9.8 Jun 18

Java Runtime Environment sandbox bypass via incorrect image channel verification in 2D component allows remote unauthent

CVE-2011-3544 CRITICAL POC
9.8 Oct 19

Oracle Java SE JDK/JRE 7 and 6 Update 27 and earlier allows remote code execution with complete system compromise throug

CVE-2010-1871 HIGH POC
8.8 Aug 05

JBoss Seam 2 in Red Hat JBoss EAP 4.3.0 fails to sanitize JBoss Expression Language inputs, allowing remote attackers to

CVE-2012-1723 CRITICAL POC
9.8 Jun 16

Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 update 4 and earlier, 6 up

CVE-2013-0422 CRITICAL POC
9.8 Jan 10

Multiple vulnerabilities in Oracle Java 7 before Update 11 allow remote attackers to execute arbitrary code by (1) using

CVE-2012-0507 CRITICAL POC
9.8 Jun 07

Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 2 and earlier, 6 Up

CVE-2015-4852 CRITICAL POC
9.8 Nov 18

The WLS Security component in Oracle WebLogic Server 10.3.6.0, 12.1.2.0, 12.1.3.0, and 12.2.1.0 allows remote attackers

CVE-2012-5076 CRITICAL POC
9.8 Oct 16

Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 7 and earlier allow

CVE-2017-3066 CRITICAL POC
9.8 Apr 27

Remote unauthenticated attackers can execute arbitrary code on Adobe ColdFusion servers through Java deserialization fla

CVE-2012-0391 CRITICAL POC
9.8 Jan 08

The ExceptionDelegator component in Apache Struts before 2.2.3.1 interprets parameter values as OGNL expressions during

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy