Feed/GHSA-fmmf-xq98-g327
GHSA-fmmf-xq98-g327MEDIUMCVSS 0.0

Vikunja: Write-level project members can delete admin-tier link shares through an unloaded permission check

Published Oct 9, 2026·Updated Oct 9, 2026

NVD Description

## Summary A project member with Write permission can delete an admin-tier link share on that project. The deletion authorization check reads the permission from an object populated only with URL IDs, rather than from the stored share. Its zero value is Read, so the check falls through to project Write permission instead of requiring Admin. ## Details Affected endpoints: - `DELETE /api/v1/projects/{project}/shares/{share}` - `DELETE /api/v2/projects/{project}/shares/{share}` Older v1 releases used `/lists/{list}/shares/{share}` before lists were renamed to projects. In `pkg/routes/api/v2/link_sharing.go:156`, the delete handler passes `&models.LinkSharing{ID: in.ID, ProjectID: in.ProjectID}` to `handler.DoDelete`. The v1 generic handler likewise binds the URL IDs without loading the stored share. `pkg/web/handler/core.go:185` calls `CanDelete` before `Delete`. `LinkSharing.CanDelete` delegates to `canDoLinkShare` in `pkg/models/link_sharing_permissions.go`. That helper loads the project but does not load the link share, then evaluates: ```go if share.Permission == PermissionAdmin { return l.IsAdmin(s, a) } return l.CanWrite(s, a) ``` On deletion, `share.Permission` is its Go zero value, `PermissionRead` (0), even when the stored share grants `PermissionAdmin` (2). A Write member therefore passes authorization. `LinkSharing.Delete` subsequently deletes by share ID and project ID without checking the stored permission. Create uses the requested permission and correctly rejects Write members creating admin shares. Share listing and by-ID reads are admin-gated in current main. There is no HTTP update route for link shares. Read-only members and link-share principals are rejected on deletion. ## Affected versions and verification The admin-tier check was introduced in commit `56dbb564eae83f2453efd1049f55e9d099b5d346`, first included in v0.13, without loading the stored share on deletion. The affected range established by this review is `>= 0.13.0, <= 2.6.0`; versions before v0.13 have not been assessed here. The v2 route was added in `b10768506`, first included in v2.4.0. The reporter states that both API versions were verified live against a local source build at `a881ac39eecd07575a5aede8e74727c28d5fd578` on September 7, 2026. Maintainer-side source review confirmed the mechanism in that commit, release v2.6.0, and upstream main at `a1a6ca48be142902f09fee62734310cb98a8c414`. The live proof of concept was not independently rerun during this triage. No patched version is available at draft creation. ## Impact A Write collaborator can revoke an admin-tier access link on a project they can already write to. New consumers can no longer authenticate with that link. In versions with database-backed link-share JWT validation, deleting the share also immediately invalidates its existing sessions; the reporter observed HTTP 404 for a new hash exchange and HTTP 401 for an existing share token. This is a bounded integrity and availability impact on external access to that project. It does not disclose data, grant Admin privileges, allow deletion of another project's shares, or permit the attacker to create a replacement admin share. The attacker must know or guess the numeric share ID; IDs are sequential. Severity: Medium. CWE-863: Incorrect Authorization. ## Proof of concept Use two regular accounts on an instance you control. Let `OWNER_TOKEN` and `WRITER_TOKEN` be their session tokens. Create a project as the owner, grant the second account Write permission (`permission: 1`), and create an admin-tier share as the owner (`permission: 2`). Let `PROJECT_ID` and `SHARE_ID` identify that project and share. First, verify that the Write member cannot create an admin-tier share: ```sh curl -i -X POST "$BASE/api/v2/projects/$PROJECT_ID/shares" \ -H "Authorization: Bearer $WRITER_TOKEN" \ -H 'Content-Type: application/json' \ -d '{"permission":2}' # Expected and reported: 403 ``` Delete the owner's admin-tier share as the same Write member: ```sh curl -i -X DELETE "$BASE/api/v2/projects/$PROJECT_ID/shares/$SHARE_ID" \ -H "Authorization: Bearer $WRITER_TOKEN" # Reported: 204; expected: 403 and the share remains intact ``` Recreate the admin-tier share as the owner and repeat with the v1 endpoint: ```sh curl -i -X DELETE "$BASE/api/v1/projects/$PROJECT_ID/shares/$SHARE_ID" \ -H "Authorization: Bearer $WRITER_TOKEN" # Reported: 200 with {"message":"Successfully deleted."}; expected: 403 ``` With the collaborator downgraded to Read, deletion returns 403. These positive and negative controls were reported as verified live by the reporter. ## Recommended fix For deletion, load the stored share scoped to both the requested share ID and project ID before authorizing. Require project Admin when the stored permission is Admin, and retain the intended Write rule for ordinary read/write shares. Preserve the existing cross-project constraint. Keep creation authorization based on the requested tier. If update support is added, check both the stored tier and the requested new tier so neither demotion nor promotion can bypass the admin check. Add regression coverage for a Write member being forbidden to delete an admin-tier share, an Admin being allowed, intended ordinary-share deletion, rejection of Read members and link-share principals, and mismatched project/share IDs. Cover both API versions. ## Related advisories - [GHSA-f95f-77jx-fcjc / CVE-2026-33700](https://github.com/go-vikunja/vikunja/security/advisories/GHSA-f95f-77jx-fcjc) addressed cross-project deletion. Fix `654d2c704` constrained deletion by `project_id` but did not change the permission-tier check. - [GHSA-qfwc-vx6f-3g6g](https://github.com/go-vikunja/vikunja/security/advisories/GHSA-qfwc-vx6f-3g6g) addressed share-hash disclosure through by-ID reads. - [GHSA-8hp8-9fhr-pfm9](https://github.com/go-vikunja/vikunja/security/advisories/GHSA-8hp8-9fhr-pfm9) addressed share-hash disclosure through listing. - [GHSA-96q5-xm3p-7m84 / CVE-2026-35594](https://github.com/go-vikunja/vikunja/security/advisories/GHSA-96q5-xm3p-7m84) addressed tokens remaining valid after deletion. That fix does not prevent unauthorized deletion. ## Credit Reported via mail.

Affected Packages (1)

code.vikunja.io/apiGO
From 0.13.0
Fixed in = 2.6.0

Public Exploits & PoCs100 found

PoC: node2shell-scanner

High fidelity detection mechanism for node2shell (CVE-2026-111497)

8

PoC: CVE-2026-111497-Toolkit

CVE-2026-111497 – Node.js Brotli Decoder OOB Write (CVSS 9.2) | Red/Blue Team suite for unpatched Node.js 22.x, 24.x, 26.x. 2 tools: Full Exploit (patch detection, remote DoS, Brotli bomb, lab RCE), Blue Team Checker (errno differential, version fingerprint, WAF detection, reporting) Only Use Ethically Only <3

3

PoC: runcloud-php2shell-patch

Build script for PHP (7.2 - 8.1) binaries mitigating PHP2Shell (CVE-2026-109618, CVE-2026-109619) on RunCloud Ubuntu servers.

2

PoC: php2shell-scan

A deliberately limited, read-only security scanner for assessing exposure to CVE-2026-109618 (RFC 1867 multipart OOM memory corruption) and CVE-2026-109619 (stale global state use-after-free) in PHP deployments.

2

PoC: php2shell

exploit php2shell (CVE-2026-109618 / CVE-2026-109619) for educational purposes

2

PoC: php2shell-doctor

The safe checker for the php2shell PHP RCEs (CVE-2026-109618/109619). Local, offline, vendor-backport aware.

1

PoC: node2shell-lab

Node2Shell (CVE-2026-111497, Node.js Brotli decoder OOB write) black-box pentest lab — crash-gated double flag, agent-calibrated. Part of the *2Shell lab series. EN/中文/日本語.

1

PoC: php2shell-ioc

Curated IoCs, detection engineering rules, and automated threat intel feeds for PHP2Shell (CVE-2026-109618 & CVE-2026-109619).

1

PoC: HTTP2Shell-PoC

PoC for CVE-2026-111497 (HTTP2Shell)

1

PoC: cve-2024-10441-synology-rce

Writeup y PoC educativo de CVE-2024-10441 (RCE pre-auth como root en Synology DSM via synoplugind). CVE ya parcheado; uso autorizado/defensivo.

1

PoC: php2shell-migration

Agent Skills skill to detect, patch and verify PHP apps affected by PHP2Shell (CVE-2026-109618, CVE-2026-109619) or outdated PHP. Works with Claude Code, Codex, Copilot, Cursor, Gemini CLI, OpenCode.

1

PoC: php2shell

CVE-2026-109618 exploit tool — RCE via OOM ghost bucket in PHP POST parsing (CVSS 9.2)

1

PoC: CVE-2026-114509

Python detector for Laravel TokenGuard CVE-2026-114509 with local dependency analysis, remote authentication checks, and JSON reporting.

1

PoC: CVE-2026-110264

Non-invasive Python detector for CVE-2026-110264 in GitLab, featuring version checks, offline log analysis, and JSON reporting.

1

PoC: php-pins

Find every PHP version your repositories pin, and what PHP2Shell (CVE-2026-109618, CVE-2026-109619) means for each. One POSIX sh script; reads files only.

1

PoC: php2shell

PHP Runtime Vulnerability Assessment Toolkit — CVE-2026-109618 & CVE-2026-109619

1

PoC: cve-2026-98260-vivo-gki-research

Research notes: porting CVE-2026-98260 to vivo/iQOO GKI 6.6.127 (no exploit code; coordinated disclosure planned)

PoC: brotli-cve-check

Agent skill + script to scan projects for CVE-2026-111497 (Brotli), rate criticality and suggest fixes

PoC: php2shellX

Next-generation exploit orchestrator for CVE-2026-109618/619 — adds Cloudflare WAF bypass, flexible target specification (URL/host/port/path/batch), multi-format output (JSON/CSV/table), resume capability, and lab automation (Docker restart). Authored by TESTERXMA.

PoC: a12-ghostlock

One-click root for the Samsung Galaxy A12 (SM-A125F) via CVE-2026-43499 (GhostLock) - KernelSU-compatible userspace stack, grant dialog, verified root in Neo Backup / App Manager / Shizuku

PoC: o3root

Shizuku-driven CVE-2026-98260 root + KernelSU runtime LKM loader for Xiaomi yingtian / lhasa (kernel 6.18.21)

PoC: php-fpm-docker-PHP-7.4-CVE-2026-109618-109619-free

php:7.4-fpm-CVE-2026-109618-109619-free

PoC: cve-2026-25262-poc

CVE-2026-25262 (Qualcomm BootROM) deep-dive on the Black Hat Asia 2026 'A journey through Sahara' talk + read-only Sahara/EDL recon harness. GPLv3.

PoC: CVE-2026-74580

CVE-2026-74580 vhost: reset the vring metadata cache on vring reconfiguration - Exploit

PoC: log4shell-audit-4

Quarterly security briefing research notes and remediation tracking for Log4Shell (CVE-2021-44228).

PoC: CEV-2020-25213_wp-file-manger_exploit

CVE-2020-25213 - Unauthenticated RCE exploit for WP File Manager plugin (≤ 6.0) | Educational purposes only

PoC: php-vulns-discovered-23-10-2026

Patch temporanee per sistemi con versioni di PHP inferiori a 8.2.35 contro CVE-2026-109618 - CVE-2026-109619 - CVE-2026-115560

PoC: CVE-2026-109618-php56-public

Exact-build PHP 5.6 research and reproducible labs for CVE-2026-109618 and CVE-2026-109619

PoC: Compiled-CVE-2023-21752

Compiled version of Wh04m1001's exploit for iwr/wget delivery to VM.

PoC: CVE-2026-83548

CVE-2026-83548 — SonicWall SMA1000 Work Place pre-auth SSRF

PoC: CVE-2026-64849

CVE-2026-64849 — MLflow SSRF

PoC: CVE-2026-21627

CVE-2026-21627 proof of concept and exploit script

PoC: php8.1-cve-109618-109619-fix

php:8.1.34-fpm-alpine + official PHP patch for CVE-2026-109618/109619

PoC: php7.4-cve-109618-109619-fix

php:7.4.33-fpm-alpine + official PHP patch for CVE-2026-109618/109619

PoC: php2shell

Exploit & analysis for PHP2Shell (CVE-2026-109618 / CVE-2026-109619). Demonstrating memory disclosure, ASLR bypass, and RCE via session.upload_progress memory bailout dangling pointers.

PoC: php2shell-demo

🛡️ Hands-on defensive Docker lab for the October 2026 RCE week — PHP2Shell (CVE-2026-109618/619), Node.js Brotli & Next.js sharp. See the attack surface and blast radius, and learn to shut them down. No exploits.

PoC: CVE-2026-115560

CVE-2026-115560: PHP session upload-progress serialize_handler mismatch → pre-auth object injection → RCE. Check/exploit/verify scripts + Docker lab + Suricata/Sigma detection rules.

PoC: CVE-2026-86426

CVE-2026-86426 CHECK

PoC: php-radar

Detection-only exposure scanner for PHP2Shell (CVE-2026-109618/109619): finds PHP across repositories, hosts, a network perimeter, and AWS, and grades each install by version and config without triggering the bug.

PoC: spip-cve-2026

PoC for CVE-2026-72708 (blind SQLi) and CVE-2026-109378 (SSRF) in SPIP, both fixed in 4.4.18

PoC: php2shell

PHP2Shell: finding and patching affected PHP CVE-2026-109618 and CVE-2026-109619

PoC: php2shell-audit

Exposure scanner, patch verifier and threat hunter for CVE-2026-109618/9, with a cyberpunk TUI.

PoC: DFRoot

Fork of datfooldive/DFRoot (DirtyFrag CVE-2026-43284, ReSukiSU) + GitHub Actions APK build

PoC: php8-cve-109618-109619-fix

php:8.0.30-fpm-alpine + official PHP patch for CVE-2026-109618/109619

PoC: brotli-secfix

Security backport toolkit for CVE-2026-111497 on Ubuntu 24.04, featuring upstream patch verification, custom Debian package builds, and offline remediation procedures.

PoC: CVE-2026-88009-PoC

CVE-2026-88009 — Traefik forwards a rootless opaque request target that routing/forwardAuth see as '/'. Auth bypass + access-log evasion, verified v3.7.10 / v3.7.13.

PoC: CVE-2026-85595-PoC

CVE-2026-85595 — Traefik digestAuth authentication bypass (unknown username => empty HA1). Lab-verified: v3.7.10 bypass, v3.7.11 401.

PoC: CVE-2026-85168-PoC

CVE-2026-85168 — n8n Git node RCE from repo-local filter.*.clean / merge-driver config on add|commit|checkout. Verified v2.35.3 / v2.36.2.

PoC: CVE-2026-86076-PoC

CVE-2026-86076 — n8n expression sandbox escape via class-field __sanitize rebinding (backend RCE). Verified v2.37.6 (uid=node) / v2.37.7.

PoC: CVE-2026-109618-CVE-2026-109619-php2shell-

MOSTAFA JR7 - Custom security research framework targeting PHP 8.4.26 Apache Prefork RCE and ASLR bypass.

PoC: CVE-2026-111497-node2shell

CVE-2026-111497 Node2Shell — Node.js Brotli OOB Write RCE PoC (CVSS 9.2)

PoC: CVE-2026-56190-Windows-Server-2022-RDP

Unauthenticated RDP vulnerability in termsrv.dll (Windows Server 2022). Proof of Concept for heap spray, XFG bypass, Instruction Pointer control, and reliable Denial of Service (Event ID 7031).

PoC: cve-2026-111497-rce-checker

Lab-only exact-profile RCE/DoS validator for CVE-2026-111497; refuses non-loopback targets

PoC: php2shell-probe

Standalone detection probe for PHP2Shell (CVE-2026-109618 / CVE-2026-109619): passive version fingerprint by default, opt-in active crash probe via Nuclei.

PoC: portainer-cve-2026-44848-checker

Non-destructive checker for CVE-2026-44848: Portainer missing authorization on Docker plugin endpoints

PoC: php2shell

Check and patch all installed PHP versions against PHP2Shell (CVE-2026-109618, CVE-2026-109619) on Debian/Ubuntu with PHP from Surý (HestiaCP supported)

PoC: CVE-2026-38526-Exploit

my version of an exploit for Krayin CRM v2.2.x - CVE-2026-38526

PoC: cve-2026-114820-java-scan

Read-only Ansible playbook that finds Java truststores still anchoring the eMudhra and AAA roots removed for CVE-2026-114820.

PoC: php-5.4-cve-2026-php2shell-patch

Patch for old php 5.4.23 version from CVE-2026-109618 и CVE-2026-109619 vulnerabilities

PoC: CVE-2026-116012

NSA Ghidra contains a numeric truncation vulnerability in PackedDecode::skipAttribute and skipAttributeRemaining in marshal.cc.

PoC: CVE-2026-116011

A remote denial of service vulnerability in CrowCPP due to uncontrolled recursion.

PoC: project2026_20261024_php2shellcheck

One-file PHP check for the PHP2Shell fixes (CVE-2026-109618, CVE-2026-109619). No exploit, no network.

PoC: CVE-2026-109618-POC

A PHP app that ships an unpatched PHP runtime (PHP2Shell), for the Devzy scan to flag. No exploit code.

PoC: rootkit

越狱助手 · RootKit for Honor Magic9 (CVE-2026-64560 → cred 写 → 自制内核模块 → KernelSU),Flutter + Shizuku 一键 root

PoC: php2shell-scan-revamp

A clean, modular, and extensively documented reimplementation of the Assetnote php2shell scanner for detecting CVE-2026-109618 and CVE-2026-109619 in PHP environments.

PoC: php2shell-detection-engineering-lab

Production-grade detection engineering suite (Sigma rules & Wazuh XML) and DFIR triage scripts for CVE-2026-109618 / CVE-2026-109619 (PHP2Shell).

PoC: CVE-2026-98260-BRM-AN00

CVE-2026-98260 temporary root for HONOR Win2 BRM-AN00, handed to BakaSU. No flashing.

PoC: patchferry-check

Free read-only scripts to check servers for PHP2Shell (CVE-2026-109618 / CVE-2026-109619) and PHP end-of-life versions

PoC: php2shell-php

Detect php2shell (CVE-2026-109618 / CVE-2026-109619) on remote PHP targets — behavioral multipart probes, version fallback, async CLI in PHP.

PoC: php2shell-el7-el8-rpm-fixed

Unofficial patched PHP RPMs for EL7/EL8 mitigating php2shell (CVE-2026-109618, CVE-2026-109619), including legacy Remi SCL and AppStream builds.

PoC: cve-2026-110152-chrome-ngle-rce-poc

PoC: CVE-2026-110152 Chrome ANGLE vertex-attribute translation heap buffer overflow (CVSS 9.6)

PoC: cve-2026-109618-php2shell-poc

CVE-2026-109618 (php2shell part 1): local deterministic memory-safety PoC

PoC: php2shel

This repository contains operational information regarding the critical PHP vulnerabilities tracked by CERT-EU as CVE-2026-109618 and CVE-2026-109619. PHP is a widely used open-source server-side scripting language, so these vulnerabilities may affect a broad range of internet-facing web applications and products that embed or depend on PHP.

PoC: docker-php74-trixie

Docker Image php:7.4-fpm with security fixes for CVE-2026-109618 and CVE-2026-109619 updated to build and run on Debian Trixie

PoC: CVE-2024-45490-libexpat-poc

PoC + Docker test harness for CVE-2024-45490 (libexpat XML_ParseBuffer negative length integer handling issue)

PoC: log4shell-audit-3

Log4Shell (CVE-2021-44228) remediation tracking for the quarterly security briefing

PoC: RHYTHM-SINGH

High fidelity scanner for php2shell (CVE-2026-109618 and CVE-2026-109619)

PoC: php2shell-detection

Detection and response package for php2shell (CVE-2026-109618 / CVE-2026-109619): Suricata, Zeek, YARA, Sigma, ModSecurity rules, hunting queries, SOC triage, patch matrix. No exploit code.

PoC: el7-php71-security

Patched PHP 7.1 RPMs for CentOS 7 (Remi php-* and php71-php-*) fixing CVE-2026-109618 / CVE-2026-109619, with an installer that detects the server's PHP, upgrades it and can roll back.

PoC: php2shell-check

Check if your server is vulnerable for latest PHP2Shell (CVE-2026-109618,CVE-2026-109619, CVE-2026-115560)

PoC: php2shell-2026

Published indicators and a log-hunting guide for the PHP2Shell PHP flaws (CVE-2026-109618, CVE-2026-109619)

PoC: php2shell-repro

PHP2Shell CVE-2026-109618/109619: lab-verified reproduction, root-cause analysis & visualizations (educational)

PoC: php2shell-claude-code-prompt

Prompt para corrigir o PHP2Shell (CVE-2026-109618 e CVE-2026-109619) com o Claude Code, aprovando cada passo. Português e inglês.

PoC: poc-cve-2026-111497

CVE-2026-111497 (Node2Shell): deteccion del decoder Brotli vulnerable en Python y Node por el codigo de error real del decoder, con laboratorio HTTP local

PoC: cve-2026-114509-laravel-tokenguard

CVE-2026-114509 — Laravel TokenGuard authentication bypass (CVSS 9.2): PoC, root-cause analysis, Docker lab, and reproduction guide

PoC: node2shell-cve-2026-111497

Node2Shell / HTTP2Shell (CVE-2026-111497) exposure-audit kit — read-only scanner + agent prompt pack. Portable: macOS bash 3.2 + Linux. 78-test suite, CI on 3 platforms.

PoC: node2shell-radar

Find Node.js websites and see which ones need attention. Desktop Node2Shell Scanner for CVE-2026-111497.

PoC: chrome2shell

Chrome Vulnerability Laboratory . CVE-2026-110922

PoC: node2shell

Independent reproduction of the Brotli decoder out-of-bounds write behind CVE-2026-111497 (Node2Shell): payload built from first principles, A/B against the patched release, and a measured ceiling that rules out the advertised RCE path.

PoC: php2shell-runcloud-builds

Unofficial patched PHP 5.6-8.1 builds for RunCloud on Ubuntu 16.04-24.04 (PHP2Shell, CVE-2026-109618/109619), with scripts to build them yourself

PoC: honor-aap-an00-root-skill

Reproducible temporary root for Honor 500 AAP-AN00 (CVE-2026-43499, source, prebuilt payload, guides and evidence)

PoC: PHP-CVE-Scanner

Harmless fingerprint scanner for PHP CVE-2026-109618 / CVE-2026-109619 (CLI + Web UI)

PoC: CVE-2026-59774

Gitea LFI to RCE exploit (CVE-2026-59774) — arbitrary file read via Org-mode #+INCLUDE, chained to remote code execution through git hook injection

PoC: CVE-2026-115560

PoC and Docker lab for CVE-2026-115560 — PHP session upload-progress serialize_handler mismatch to unauthenticated object injection / RCE. Validated end-to-end on php:8.4.27-apache with mitigation and no-switch controls.

PoC: CVE-2026-110264

PoC, reproducible labs, live evidence, Nuclei fingerprint, and technical report for CVE-2026-110264 — GitLab Org-mode/Onigmo unauthenticated RCE (CVSS 10.0); render oracle validated on GitLab CE 19.3.1.

PoC: CVE-2026-111497

PoC, Docker lab, and technical report for CVE-2026-111497 (Node2Shell) — Node.js Brotli decoder invalid block-switch OOB write; validated errno differential and weaponized remote DoS, RCE analysis included.

PoC: GHSA-w8hw-w9fx-j79w

PHP2Shell PoC for GHSA-w8hw-w9fx-j79w / CVE-2026-109618 — PHP OOM longjmp memory corruption. Validated OOM producers and dangling session-state worker crash on PHP 8.4.26 mod_php, with instrumented lab and full report.

PoC: php2shell-kit

Single-command wrapper for the php2shell toolkit (CVE-2026-109618 / CVE-2026-109619) - auto version detection, profile dispatch, Docker lab

PoC: CVE-2026-39987-POC-Marimo

CVE-2026-39987 POC Marimo

PoC: php2shell-poc

CVE-2026-109618 & CVE-2026-109619 — PHP Pre-Auth RCE Exploit & Detection Toolkit

References

View on NVD Search GitHub Search Google

Get alerted for CVEs like this

Register your stack and get notified within minutes when a matching CVE drops.

Start monitoring free