Skip to main content

Arkon EUVDEUVD-2026-103009

| CVE-2026-111717 MEDIUM
Authorization Bypass Through User-Controlled Key (CWE-639)
2026-10-16 VulnCheck GHSA-f92x-p3q7-cx4j
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 with default skill:read role
  2. Delivery
    Enumerate another department's skill slug
  3. Exploit
    Call GET /api/skills/{slug}/versions
  4. Execution
    Bypass missing can_access_skill check
  5. Impact
    Exfiltrate version metadata, hashes, storage paths

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

Requires a valid authenticated account holding the default skill:read permission (PR:L) - exploitation is limited to existing insiders/employees, not anonymous internet attackers. The attacker must know or enumerate the slug of a target skill belonging to another department and call GET /api/skills/{slug}/versions on Arkon 0.9.2 or earlier; the flaw triggers because list_skill_versions does not invoke the can_access_skill authorization check. No user interaction, no non-default configuration, and no elevated role are needed, so any multi-department deployment where ordinary users have the baseline read permission is exposed; single-department or single-tenant installs have no cross-boundary data to leak.

Impact

This is a genuine but modest-severity information-disclosure issue, and the signals are internally consistent rather than conflicting. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N) and the description agree: an attacker needs a valid authenticated account (PR:L - any employee holding the default skill:read permission), but no user interaction and no special attack requirements, exploiting over the network at low complexity. Impact is confined to low confidentiality (VC:L, VI:N, VA:N) - exposure of skill version metadata (version numbers, hashes, storage paths, changelogs) across department boundaries, with no integrity or availability effect. No EPSS score, CISA KEV listing, or SSVC decision point is present in the input, so there is no evidence of active exploitation; this is CWE-639 (authorization bypass through user-controlled key, i.e. a cross-tenant/IDOR). Bottom line: this is a real but low-priority bug - a horizontal privilege/authorization gap usable only by existing authenticated insiders to read (not modify) non-sensitive-to-moderate metadata. It is not a drop-everything critical, but the low attack complexity and default-permission precondition mean any authenticated user base can trivially reach it, so it warrants prompt patching in multi-department deployments.

Exploit ScenarioDerived

An authenticated employee in Department A, holding only the default skill:read permission, enumerates or guesses the slug of a skill owned by Department B and issues GET /api/skills/{slug}/versions. Because list_skill_versions omits the can_access_skill check, the server returns Department B's version numbers, content hashes, storage paths, and changelogs. A public technical write-up describing the flaw exists (hackmd analysis plus the vulnerable source lines on GitHub), but no weaponized exploit code was identified in the provided data.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
No patch listed yet 0.3% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 16, 2026

Missing authorization in Arkon 0.9.2 and earlier lets an authenticated employee holding only the default skill:read permission read another department's skill version metadata via GET /api/skills/{slug}/versions, exposing version numbers, hashes, storage paths and changelogs that should be scoped to the owning department. The root cause is an omitted can_access_skill check in the list_skill_versions handler, i.e. a CWE-639 authorization bypass through a user-controlled key, and no elevated role, user interaction, or non-default configuration is required beyond knowing or enumerating a target skill slug. Exploitation is limited to existing insiders with a valid account on a multi-department deployment, so single-department or single-tenant installs have no cross-boundary data to leak; no public exploit code was identified at time of analysis and the issue is assessed as a genuine but modest-severity information-disclosure weakness rather than a critical compromise vector.

RemediationAI

No vendor-released patch was identified at time of analysis, so the primary action is to correct the authorization gap directly: ensure list_skill_versions invokes the same can_access_skill check used by other skill endpoints in app/routers/skills.py before returning any version metadata, a small code change that should be applied and deployed from a patched build rather than the vulnerable 0.9.2 tag referenced in the advisories. Until such a build is available, apply compensating controls with their trade-offs in mind: restrict or remove the default skill:read permission from non-privileged accounts so untrusted employees cannot reach the versions endpoint at all (this degrades legitimate read functionality for those users); enforce department scoping at an API gateway or reverse proxy by rejecting or rewriting requests to GET /api/skills/{slug}/versions when the slug belongs to a department other than the caller's (requires maintaining an up-to-date slug-to-department mapping and adds operational overhead and potential false positives); and reduce the sensitivity of the returned payload by removing storage paths and content hashes from version responses, which limits what any residual bypass can disclose. Where deployments are genuinely single-department, exposure is minimal and remediation can be scheduled normally, but multi-department operators should treat this as a priority and additionally enable and review API access logs for anomalous enumeration of skill slugs or repeated 200 responses to /api/skills/*/versions from ordinary accounts. Monitor https://www.vulncheck.com/advisories/arkon-through-0.9.2-missing-authorization-via-skills-versions-api and the upstream repository for a fixed release, and validate any fix against the code paths documented at https://github.com/nduckmink/arkon/blob/v0.9.2/app/routers/skills.py#L408-L425.

Affected VersionsENISA

arkon 0 ≤0.9.2

Affected Packages

euvd arkon no fix

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

The flaw is an instance of CWE-639 (Authorization Bypass Through User-Controlled Key), the classic insecure-direct-object-reference pattern, in the skills API of Arkon, a Python application whose affected router code lives at app/routers/skills.py in the upstream repository (v0.9.2 lines 408-434). The endpoint GET /api/skills/{slug}/versions accepts a caller-supplied skill slug and returns version metadata, but the list_skill_versions handler does not call the can_access_skill authorization routine that gates other skill operations, so object-level access control is never evaluated against the caller's department scope. Because the slug is a user-controlled key rather than an object reference bound to the authenticated principal, any account with the baseline skill:read permission can request a slug belonging to another department and receive version numbers, content hashes, storage paths and changelogs. The provided CVSS:4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:N/VA:N, with subsequent impact and threat metrics not defined) and the independent CVSS:3.1 assessment (AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N) agree: network-reachable, low attack complexity, authenticated (PR:L), no user interaction, and a low confidentiality-only impact with no integrity or availability effect and no scope change. The CPE cpe:2.3:a:nduckmink:arkon:*:*:*:*:*:*:*:* indicates the vendor is nduckmink and the vulnerable range is all releases through 0.9.2. The real-world exposure therefore depends on deployment topology: multi-department or multi-tenant installations where ordinary users receive the default read permission are affected and in-scope, whereas single-department installs have no cross-boundary metadata for the bypass to reveal.

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

Authenticated low-privilege user (PR:L) exploits a network endpoint at low complexity with no UI; only cross-department metadata is read, so C:L and I/A:N.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:N/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
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

Arkon through 0.9.2 contains a missing authorization vulnerability in list_skill_versions that allows authenticated employees to read other departments' skill version metadata by bypassing the can_access_skill check. Attackers holding the default skill:read permission can request GET /api/skills/{slug}/versions for another department's skill to obtain version numbers, hashes, storage paths and changelogs.

Threat Intelligence Overview

EPSS Score
0.3%
Top 82% exploitable
Prevalence
Rare
obscure single-maintainer project (nduckmink/arkon), no known enterprise footprint
Social Media
1
Sightings
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.3%
Patch available No
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
Poc
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

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