Skip to main content

Jorani EUVDEUVD-2026-98931

| CVE-2026-110098 MEDIUM
Authorization Bypass Through User-Controlled Key (CWE-639)
2026-10-13 disclosure@vulncheck.com GHSA-jhv7-7892-gg9h
5.3
CVSS 4.0 · Vendor: vulncheck
View

Attack ChainAIDerived

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

  1. Access
    Authenticate as any Jorani employee
  2. Exploit
    Enumerate numeric leave/overtime request IDs
  3. Execution
    Submit ID to Leaves/Extra edit, delete, or history endpoint
  4. Impact
    Tamper with or read other employees' requests

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Object-level authorization, IDOR prevention
Exploitation Conditions

Exploitation requires a valid authenticated Jorani account at employee level (PR:L) - any ordinary user with self-service access qualifies; no admin or HR role is needed. There is no special configuration requirement: the flaw exists in default behavior because the affected controllers (Leaves::edit/delete/history, Extra::edit/delete) authorize by operation name only and never verify that the targeted request's employee matches the acting user. The attacker must supply a numeric request ID belonging to another employee, so successful tampering depends only on ID enumeration/guessing. Limiting factors: a working login is mandatory (no anonymous access), impact is confined to leave and overtime request data, and only versions before 1.0.4 are affected - upgrading to 1.0.4 adds the ownership checks that close all five endpoints.

Impact

This is a medium-severity authorization flaw (CWE-639 IDOR), not a critical one, and the signals are consistent rather than conflicting. The CVSS 4.0 vector (AV:N/AC:L/PR:L/UI:N) confirms network-reachable, low-complexity exploitation but requires an authenticated low-privileged account (PR:L) - so this is an insider/post-authentication threat, not an unauthenticated internet-facing break-in. Impact is explicitly limited: VC:L/VI:L/VA:N means partial confidentiality and integrity exposure of other employees' leave/overtime records, with no availability, no RCE, and no scope change (SC:N/SI:N/SA:N). No EPSS score, CISA KEV listing, or public exploit was provided in the input, so there is no public exploit identified at time of analysis and no evidence of active exploitation. Net: a legitimate but lower-priority issue - real for organizations where employee self-service accounts are broadly provisioned and HR data privacy matters, but not an emergency patch for most. Prioritize if your threat model includes malicious insiders or shared/weak employee credentials.

Exploit ScenarioDerived

An authenticated Jorani user (any employee) logs in and, instead of acting on their own records, supplies another employee's numeric request ID to endpoints such as Leaves::edit(), Leaves::delete(), or Leaves::history(). Because authorization is enforced only by operation name rather than record ownership, the attacker can modify or delete a colleague's leave/overtime request and read their leave history. No public exploit code was identified, but the vulnerable code paths and the fixing commit are publicly documented.

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 13, 2026

Authenticated IDOR in Jorani (PHP leave-management application) before 1.0.4 lets any ordinary self-service employee - no HR or administrator role required - view, tamper with, or delete colleagues' leave and overtime requests by supplying another employee's numeric request ID to Leaves::edit(), Leaves::delete(), Leaves::history(), Extra::edit(), or Extra::delete(). Because the five affected endpoints authorize by operation name only and never confirm that the targeted record belongs to the acting user, the flaw is a classic authorization design error (CWE-639) whose impact is confined to the confidentiality and integrity of leave/overtime records rather than code execution or data exfiltration at large. Independent assessment places this at medium severity; no public exploit code has been identified at time of analysis and the issue is not confirmed as actively exploited.

RemediationAI

Vendor-released patch: upgrade to Jorani 1.0.4 (https://github.com/jorani/jorani/releases/tag/v1.0.4), which applies the ownership and delegation checks in commit 59c403224401824489ec662934f71c90d27f614c and closes all five vulnerable endpoints - Leaves::edit(), Leaves::delete(), Leaves::history(), Extra::edit(), and Extra::delete() - plus the associated Contracts::series() authorization gap; the upstream issue is tracked at https://github.com/jorani/jorani/issues/426. If the upgrade cannot be scheduled immediately, note that the vendor documents no official pre-1.0.4 workaround and that the vulnerable routes cannot be disabled without breaking normal employee self-service leave and overtime submission, so compensating controls must be indirect: restrict who can hold a Jorani account (the flaw requires only an ordinary authenticated session, so removing stale or untrusted accounts shrinks the attack surface at the cost of legitimate self-service users), place the application behind a network ACL, VPN, or reverse proxy so that only trusted networks reach /leaves and /extra (trade-off: breaks remote or mobile employee access), and monitor web-server and application logs for repeated sequential ID access to those endpoints, since a tampering attempt is only detectable as anomalous ID enumeration after the fact rather than being blocked outright. The patch itself logs illegal edit attempts via log_message(), so post-upgrade log review of those entries can confirm whether tampering occurred before remediation.

Affected VersionsENISA

Jorani 0 <1.0.4

Affected Packages

euvd jorani fix: 1.0.4

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

Jorani is a PHP/CodeIgniter workforce-management application (self-hosted, MySQL-backed) in which controllers under legacy/application/controllers handle employee self-service: Leaves.php for time-off requests and Extra.php for overtime/extra hours. The vulnerability class is CWE-639, Authorization Bypass Through User-Controlled Key: the controllers call $this->auth->isAllowed() against the operation name (e.g. editing a leave) rather than against the specific object identified by the user-supplied $id path segment, so any authenticated session that passes the coarse operation check can target arbitrary numeric IDs. The upstream fix (commit 59c403224401824489ec662934f71c90d27f614c, shipped in release v1.0.4) adds explicit ownership comparisons - $data['leave']['employee'] != $this->user_id and $extra['employee'] != $this->user_id for edits, and forcing $can_delete = FALSE for deletes on records not owned by the caller. The same commit hardens Leaves::history()/index by computing a $can_view flag from the users_model, the is_hr flag, and a new delegations_model->isDelegateOfEmployeeManager() helper, which preserves legitimate manager, HR, and delegated-manager read access instead of collapsing visibility to self-only. The commit also touches legacy/application/controllers/Contracts.php, where the ICS day-off import endpoint had been reachable without the adddayoff_contract permission check - a related authorization-bypass pattern patched at the same time.

Know when the next one hits your stack

  • 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 (vulncheck) PRIMARY 5.3 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N
vuln.today AI 5.4 MEDIUM

Network-reachable endpoints exploitable by any authenticated employee (PR:L, AC:L, UI:N); reading and modifying others' records gives C:L/I:L, deletion treated as integrity so A:N, scope unchanged.

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

Primary rating from Vendor (vulncheck).

CVSS VectorVendor: vulncheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
Low
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

1
Patch available
Oct 13, 2026 - 18:19 EUVD

DescriptionCVE.org

Jorani before 1.0.4 contains an insecure direct object reference vulnerability that allows authenticated users to modify, delete, and view other employees' requests by authorizing by operation name only. Attackers can supply numeric request ids to Leaves::edit(), Extra::edit(), Leaves::delete(), Extra::delete(), and Leaves::history() to tamper with colleagues' leave and overtime requests and read leave history.

Threat Intelligence Overview

EPSS Score
0.2%
Top 87% exploitable
Prevalence
Low
niche self-hosted open-source HR leave-management app, limited enterprise 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
No
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

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

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