Security vulnerabilities

  • Status Closed
  • Assigned To
    cbay
  • Private
Attached to Project: Security vulnerabilities
Opened by trinityxploit - 16.08.2026
Last edited by cbay - 19.08.2026

FS#446 - Missing Authorization Check Allows Unauthenticated Access to Closed Vulnerability Reports.

Hi Team We have Found a Vulnerability in your Website.

Target: security.alwaysdata.com

Endpoint: https://security.alwaysdata.com/task/<id> (individual task pages),
https://security.alwaysdata.com/feed.php?feed_type=rss2&project=1 (RSS feed)
Severity: P2 — Medium/High

security.alwaysdata.com is alwaysdata's own Flyspray-based vulnerability disclosure and bug bounty intake tracker. The authorization check that correctly restricts access to task pages (Error #102: You have no permission to view this task) is not applied once a task's status is changed to Closed. Any unauthenticated user can browse /task/<id> for a closed task and receive the full report body — title, description, complete reproduction steps, PoC scripts, affected infrastructure hostnames, internal usernames, and private staff/reporter comment threads.

This is not limited to one task. Testing across six closed tasks spanning different vulnerability classes and dates confirms the behavior is systemic, not an isolated misconfiguration on a single report. An accompanying open (unpatched) task was correctly blocked under identical, cookie-free request conditions, isolating the defect specifically to the closed-status code path rather than a site-wide access control failure.

Root CauseThe task detail view in Flyspray renders a Private field in its metadata table, but that field was empty on the tested task (confirmed by inspecting the rendered HTML — no private value or class was present). This means the exposure is not an override of an explicit Private flag. The actual defect is narrower and more precise:

The authorization check that gates task visibility is not invoked — or is bypassed — once a task's status transitions to Closed.

Evidence for this: an open task (FS#444) under the exact same unauthenticated request conditions returns Error #102: You have no permission to view this task, logging in might help. The moment a task is closed, that same check no longer applies. Status, not the Private flag, is the variable that determines whether the authorization check runs.

CWE-862 — Missing Authorization is the precise classification: the system fails to perform an authorization check for a resource in one specific state (closed), while correctly performing it in another (open).

Proof of Concept All requests below were made with –cookie-jar /dev/null –cookie /dev/null, guaranteeing zero session state — no prior login, no leftover cookies, fully anonymous.

Step 1 — Control: open (unpatched) task correctly requires authentication
curl -s "https://security.alwaysdata.com/task/444" \

  1. -cookie-jar /dev/null –cookie /dev/null

Response includes:

Error #102: You have no permission to view this task, logging in might help.
No task title, description, or body content is returned — only the shell page and login form.

Step 2 — Closed task renders full content, zero authentication
curl -s "https://security.alwaysdata.com/task/440" \

  1. -cookie-jar /dev/null –cookie /dev/null

Returns HTTP 200 with the complete task page, including:

Full title:  FS#440  - Incomplete Fix for  FS#426  - Staff Files Still Publicly Accessible via Symlink
Status field: Closed
Opening description paragraph of the vulnerability
Redacted excerpt (sensitive reproduction steps, PoC script, and internal usernames omitted — see Impact section for what was present in the full response):

Status: Closed
Assigned To: cbay
Opened by Bores - 10.08.2026
Last edited by cbay - 10.08.2026

 FS#440  - Incomplete Fix for  FS#426  - Staff Files Still Publicly Accessible via Symlink

The fix for  FS#426  removed staff entries from NSS (`getent passwd` now returns
empty for staff), but the files themselves were not restricted…

[Report continues with full SSH reproduction steps, a working PoC bash script,
specific staff usernames, and internal staff comments discussing bounty payout —
omitted from this report to avoid redistributing sensitive data already exposed
by the underlying access control failure being reported here.]

Step 3 — Confirm zero session state and quantify the content disparity
echo "=== Closed task ( FS#440 ) ==="
curl -s –cookie-jar /dev/null –cookie /dev/null \

"https://security.alwaysdata.com/task/440" | wc -l

echo "=== Open task (FS#444) ==="
curl -s –cookie-jar /dev/null –cookie /dev/null \

"https://security.alwaysdata.com/task/444" | wc -l

Result:

Closed task (FS#440)

451

Open task (FS#444)

136
Both requests use identical, empty cookie jars. The closed task returns 3.3x more content — the full report body — while the open task returns only the login-gated shell page. This isolates the defect to task status, ruling out session leakage or caching artifacts as an explanation.

Step 4 — Confirm the pattern is systemic across multiple closed tasks
for id in 401 415 423 426 440 443; do

echo "=== task/$id ==="
curl -sk -o /tmp/task_$id.html -w "HTTP:%{http_code}\n" \
  "https://security.alwaysdata.com/task/$id"
grep -o '<title>[^<]*</title>' /tmp/task_$id.html

done
Result — all six closed tasks return HTTP 200 with full titles rendered, unauthenticated:

task/401

HTTP:200
<title> FS#401  : Critical SSRF via Application Script Source URI — Cross-Tenant Data Leak</title>

task/415

HTTP:200
<title> FS#415  : SSTI → RCE on Core Infrastructure Server (overlord-core)</title>

task/423

HTTP:200
<title> FS#423  : Broken Object Level Authorization (IDOR) → Mass PII Disclosure</title>

task/426

HTTP:200
<title> FS#426  : Internal staff account and privilege hierarchy disclosure via SSH</title>

task/440

HTTP:200
<title> FS#440  : Incomplete Fix for  FS#426  - Staff Files Still Publicly Accessible via Symlink</title>

task/443

HTTP:200
<title> FS#443  : Authenticated API Disclosure of DKIM Private Keys</title>
[Screenshot 4 — attach here: full terminal output of this loop]

Step 5 — Independent surface: RSS feed leaks the same data without authentication
curl -sk "https://security.alwaysdata.com/feed.php?feed_type=rss2&project=1"
Returns task titles, authors, and publish dates for recently filed reports without authentication — including reports as recent as 2–3 days old at test time ( FS#442 ,  FS#443 ). This confirms a second, independent code path exposes the same underlying data, and that newly filed reports enter the exposed state quickly.

Impact What is exposed, concretely, right now, to any unauthenticated internet user:

Complete vulnerability disclosure content for every closed report on the tracker, including:

Exact vulnerable endpoints and affected infrastructure hostnames
Full reproduction steps, in some cases including working exploit/PoC scripts
CVSS scores and severity classifications
Internal staff usernames and reporter identities
Private comment threads between alwaysdata staff and reporters

2)A live reconnaissance dataset spanning multiple vulnerability classes, confirmed present across the six tasks tested alone: SSRF ( FS#401 ), server-side template injection leading to RCE ( FS#415 ), IDOR/mass PII disclosure ( FS#423 ), internal account disclosure ( FS#426 ), symlink-based file exposure ( FS#440 ), and API key disclosure ( FS#443 ). The RSS feed additionally surfaces titles for further reports ( FS#427 ,  FS#429 ,  FS#430 ,  FS#432 ,  FS#433 ,  FS#442 ) not deep-tested here but following the identical exposure pattern.

3)A demonstrated fix-verification gap. The tracker's own history shows this is not a theoretical risk:  FS#426  was closed as fixed, and within 6 days a bypass of that exact fix was filed as  FS#440  — the bypass author could only have known the precise remediation detail (which NSS entries were removed, without the underlying file permissions being fixed) by reading the closed  FS#426  report on this same publicly-accessible tracker.

4)Real-time exposure of new reports. The RSS feed surfaces new task titles within hours of filing, meaning the window between "vulnerability reported" and "details become guessable/discoverable via title" is effectively zero, independent of whether the underlying bug has been fully remediated across all affected infrastructure.

5)Attack surface mapping at scale. Two years of closed reports on this tracker constitute a complete map of every vulnerability class alwaysdata's own infrastructure has been susceptible to, the exact endpoints involved, and in several cases exploit code — usable by an attacker to identify recurring weak points (e.g., the file-permission/symlink issue spanning both  FS#426  and  FS#440 ) without ever probing the live application themselves.

Remediation Immediate:

Enforce the same authorization check on closed tasks that is currently correctly applied to open tasks. Task visibility must be gated by project membership/authentication regardless of status.
Audit the Flyspray permission configuration for the "Security vulnerabilities" project to identify why the anonymous-access check is being bypassed specifically for closed-status tasks — this is most likely a conditional in the task-rendering logic that special-cases closed tasks (e.g., for public changelog purposes) without accounting for the confidentiality requirement of a private security tracker.

RSS feed:

Require authentication for /feed.php or disable it for the Security vulnerabilities project.
If transparency is a goal:

Publish a separate, manually curated advisories page with sanitized summaries only, released on a fixed delay (e.g., 90 days) after full remediation is verified across all affected infrastructure — do not rely on the tracker's native closed-task view for this purpose.

Kind Regards
Team TrinityXploit

Closed by  cbay
19.08.2026 09:12
Reason for closing:  Invalid
Admin
cbay commented on 19.08.2026 09:11

Hello,

That's a Flyspray vulnerability, you should report it to them.

Kind regards,
Cyril

Loading...

Available keyboard shortcuts

Tasklist

Task Details

Task Editing