Curated security research, vulnerabilities, advisories and tools for practitioners.

CVE-2026-106173: Fortinet FortiSIEM gRPC Path Traversal to Pre-Auth RCE PoC

Summary

# CVE-2026-106173: Fortinet FortiSIEM gRPC Path Traversal File Write RCE This repository contains a proof of concept for CVE-2026-106173, an unauthenticated remote code execution vulnerability in...

Why it matters

Provides a working pre-auth exploit against FortiSIEM instances exposing port 27918, escalating from gRPC path traversal to root-level remote command execution without credentials.
CVE
CVE-2026-106173
Vendor
Fortinet
Product
FortiSIEM
Published
Collected

📦 Full-Text Content Snapshot

R2 Archive · Full Article Preserved72 lines · 3.0 KB
📄 Raw .md⬇️ Download .md

Author: Horizon3.ai Attack Team (mr-sparkles-h3) · Published: 2026-10-20 · Source: github.com/horizon3ai/CVE-2026-106173

This repository contains a proof of concept for CVE-2026-106173, an unauthenticated remote code execution vulnerability in Fortinet FortiSIEM.

Vulnerability Details

The FortiSIEM gRPC QueryResultReq handler processes untrusted metadata without proper path validation. By crafting metadata containing both path traversal sequences (../) and NUL-byte injection within gRPC's HTTP/2 and HPACK encoding layers, an attacker can write arbitrary files to the filesystem.

Blog Post

Technical analysis covering root cause, exploitation details, and indicators of compromise is available on the Horizon3.ai attack research blog:

https://horizon3.ai/attack-research/cve-2026-106173-deep-dive-fortisiem-grpc-path-traversal-file-write-rce/

Usage

bash
% python3 CVE-2026-106173.py -h
usage: CVE-2026-106173.py [-h] -t TARGET [-c COMMAND] [-p PORT] [--plaintext]
                          [--dry-run]

options:
  -h, --help            show this help message and exit
  -t TARGET, --target TARGET
                        IP or hostname of the FortiSIEM instance
  -c COMMAND, --command COMMAND
                        Command to execute on the target
  -p PORT, --port PORT  FortiSIEM gRPC port (default: 27918)
  --plaintext           Use HTTP/2 without TLS
  --dry-run             Display the request without sending

Execute an arbitrary command:

bash
python3 CVE-2026-106173.py -t 10.0.18.x -c 'id'

NOTE: Execution is blind, and takes up to 60 seconds for the cron job to trigger executing the script we overwrote.

Follow Horizon3.ai Attack Team for Latest Security Research

Disclaimer

This software has been created purely for the purposes of academic research and for the development of effective defensive techniques, and is not intended to be used to attack systems except where explicitly authorized. Project maintainers assume no liability for misuse. Use responsibly.


📦 Full-Text Markdown Snapshot archived by Phying News · Original source: github.com