CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-33677

CVE-2026-33677: Plaintext Credential Exposure in Vikunja Webhook API

Alon Barad
Alon Barad
Software Engineer

Mar 26, 2026·6 min read·104 visits

Executive Summary (TL;DR)

A flaw in Vikunja's API data serialization layer exposes unredacted Basic Authentication webhook credentials to unauthorized, low-privileged collaborators.

Vikunja versions prior to 2.2.1 suffer from a medium-severity information disclosure vulnerability (CWE-200). The webhook management API fails to redact Basic Authentication credentials during serialization, exposing plaintext usernames and passwords intended for external systems to any user with read-only project access.

Vulnerability Overview

Vikunja is an open-source, self-hosted task management platform that provides webhook integrations to notify external systems of project events. The platform exposes a REST API for managing these webhooks, allowing project members to view and configure destination URLs and authentication parameters. A vulnerability exists in the implementation of this webhook management API, tracked as CVE-2026-33677, which results in the exposure of sensitive information to unauthorized actors.

The flaw specifically affects the endpoint responsible for listing webhooks associated with a given project. When a client requests the webhook configuration, the API serializes the internal database models into JSON responses. While certain sensitive fields were historically redacted during this serialization process, newly introduced authentication fields were omitted from the redaction routine.

Consequently, the API transmits plaintext Basic Authentication credentials to any authenticated user possessing read-only permissions for the target project. This oversight breaks the principle of least privilege, granting low-privileged collaborators access to high-value secrets intended exclusively for automated system-to-system communication.

Root Cause Analysis

The root cause of CVE-2026-33677 is an oversight in the data serialization layer of the Vikunja API, specifically within the webhook management handlers. The application relies on database models to represent webhooks, which include configuration fields for external target URLs, event triggers, and authentication secrets. When a user requests the webhook list via GET /api/v1/projects/:project/webhooks, the application fetches these models from the database and serializes them into JSON.

Historically, the application correctly implemented a masking mechanism for the HMAC secret field. The serialization logic explicitly overwrote the secret value with placeholder asterisks before writing the JSON payload to the HTTP response body. This ensured that while users could see a webhook was configured with a secret, they could not extract the plaintext value itself.

In a subsequent feature update, developers introduced support for Basic Authentication, adding basic_auth_user and basic_auth_password fields to the webhook data model. However, the serialization logic was not updated to include these new fields in the redaction process. The application directly serialized the database records, emitting the plaintext username and password strings into the final JSON response.

Furthermore, the access control logic governing the GET /api/v1/projects/:project/webhooks endpoint only verifies that the requesting user holds "read" access to the specified project. Because the endpoint does not differentiate between standard configuration reads and administrative secret management, any read-only collaborator successfully passes the authorization check and triggers the vulnerable serialization path.

Architecture and Serialization Defect

The vulnerability manifests in the data transformation boundary between the internal database representation and the external API response. The structural defect is evident in the serialization pipeline. The application fetches the webhook structure, which maps directly to the underlying database table containing all authentication columns.

In the vulnerable implementation, the API handler executes a data masking routine that targets specific fields based on identifiers. The routine successfully identifies the HMAC secret field and replaces its contents with a static string. The newly added Basic Authentication fields bypass this routine entirely because they lack the necessary struct tags or hardcoded references required by the masking function.

The patch for CVE-2026-33677 extends the masking mechanism to encompass the basic_auth_password field. By updating the serialization logic to recognize and redact the newly introduced authentication variables, the application correctly limits credential visibility to the server's internal memory space, preventing accidental exposure over the REST API interface.

Exploitation Methodology

Exploitation of CVE-2026-33677 requires the attacker to possess a valid account on the target Vikunja instance and read-only access to at least one project utilizing webhooks with Basic Authentication. The attack does not require any specialized tools or complex memory manipulation; it relies entirely on standard HTTP requests directed at the vulnerable API endpoint.

The attacker begins by identifying the target project ID. This identifier is readily available in the Vikunja user interface or can be enumerated via the GET /api/v1/projects endpoint. Once the project ID is obtained, the attacker constructs an authenticated GET request targeting the webhook listing route.

GET /api/v1/projects/<PROJECT_ID>/webhooks HTTP/1.1
Host: target-vikunja-instance.local
Authorization: Bearer <USER_TOKEN>
Accept: application/json

The server processes the request, performs the read-only authorization check, and returns an HTTP 200 OK response containing the unredacted webhook configurations. The attacker parses the resulting JSON payload, isolating the basic_auth_user and basic_auth_password key-value pairs.

[
  {
    "id": 1,
    "target_url": "https://external-service.com/webhook",
    "basic_auth_user": "admin_service",
    "basic_auth_password": "super_secret_password_123",
    "secret": "**********"
  }
]

Impact Assessment

The primary impact of CVE-2026-33677 is a direct loss of confidentiality for credentials entrusted to the Vikunja application. While the CVSS v3.1 score is 6.5 (Medium), the real-world severity depends entirely on the privileges associated with the exposed external credentials. The vulnerability allows an attacker to pivot from a low-privileged position within Vikunja to potentially high-privileged access on external systems.

Webhooks are frequently integrated with internal enterprise services, automation platforms like Jenkins or GitLab, and communication tools such as Slack. If the exposed Basic Authentication credentials authorize administrative actions on these downstream systems, the attacker can leverage them to achieve lateral movement, execute arbitrary code on CI/CD runners, or access sensitive corporate communications.

The vulnerability highlights the risks associated with storing third-party secrets within collaboration tools. Because the exposure is passive and occurs via standard API requests, exploitation leaves minimal forensic traces in application logs. Defenders cannot easily differentiate between a legitimate client synchronizing application state and an attacker harvesting external system credentials.

Remediation and Detection

The mandatory remediation for CVE-2026-33677 is upgrading the Vikunja application to version 2.2.1 or later. The patched versions correctly apply the data masking routines to the basic_auth_password fields, ensuring that subsequent API requests do not leak sensitive configuration material to the client.

Upgrading the application does not remediate credentials that were previously exposed. Organizations must assume that any Basic Authentication credentials configured in Vikunja prior to the patch have been compromised. Administrators must identify all target systems integrated via Vikunja webhooks and immediately rotate the corresponding usernames, passwords, and API keys.

Detection of exploitation attempts requires deep packet inspection or proxy logging that captures API response bodies. Network defenders can implement detection rules looking for the concurrent presence of the strings basic_auth_user and basic_auth_password alongside recognizable credential patterns in responses from the /api/v1/projects/*/webhooks endpoint. Standard HTTP access logs are insufficient for detection, as they only record the request URI and status code, not the unredacted payload.

Official Patches

VikunjaGitHub Security Advisory
VikunjaOfficial Release Changelog

Technical Appendix

CVSS Score
6.5/ 10
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
EPSS Probability
0.03%
Top 91% most exploited

Affected Systems

Vikunja Open Source Task Management Platform

Affected Versions Detail

Product
Affected Versions
Fixed Version
Vikunja
Vikunja
< 2.2.12.2.1
AttributeDetail
Vulnerability TypeCWE-200: Exposure of Sensitive Information to an Unauthorized Actor
Attack VectorNetwork (Authenticated API Request)
CVSS v3.1 Score6.5 (Medium)
EPSS Score0.00031 (8.70th percentile)
Privileges RequiredLow (Read-only project access)
Exploit StatusUnexploited / No public PoC
CISA KEVNot Listed

MITRE ATT&CK Mapping

T1005Data from Local System
Collection
T1552Unsecured Credentials
Credential Access
CWE-200
Exposure of Sensitive Information to an Unauthorized Actor

Exposure of Sensitive Information to an Unauthorized Actor

Vulnerability Timeline

Vikunja 2.2.0 released
2026-03-20
Reporter @restriction disclosed the issue
2026-03-23
Patch developed and released in version 2.2.1
2026-03-23
Official CVE-2026-33677 publication and NVD entry
2026-03-24

References & Sources

  • [1]GitHub Advisory GHSA-7c2g-p23p-4jg3
  • [2]Vikunja v2.2.2 Changelog
  • [3]NVD CVE-2026-33677
  • [4]CVE.org Record for CVE-2026-33677

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•24 minutes ago•CVE-2026-61612
5.7

CVE-2026-61612: Server-Side Request Forgery Bypass via DNS Resolution in CKAN MCP Server

An input validation bypass in the CKAN MCP Server (NPM package @aborruso/ckan-mcp-server) prior to version 0.4.108 allows remote attackers to perform Server-Side Request Forgery (SSRF). The application's server URL validation mechanism checked hostnames only as literal strings without performing pre-connection DNS resolution. An attacker can bypass these checks using hostnames that resolve to loopback, private, or link-local IP addresses, including the AWS Instance Metadata Service (IMDS). This is the third documented bypass of this protection mechanism, succeeding previous incomplete mitigations in CVE-2026-33060 and CVE-2026-53509.

Alon Barad
Alon Barad
2 views•7 min read
•about 14 hours ago•GHSA-JHJP-4C2Q-XMX4
8.1

GHSA-JHJP-4C2Q-XMX4: Falco k8saudit Plugin Ruleset Bypass via initContainers and ephemeralContainers

A security feature bypass vulnerability in the Falco k8saudit plugin (and its cloud-specific variants) allowed privileged workloads to run undetected. This bypass occurred because the plugin's default extraction logic and rules only evaluated standard containers, completely omitting initContainers and ephemeralContainers.

Amit Schendel
Amit Schendel
5 views•6 min read
•about 15 hours ago•CVE-2026-61630
4.2

CVE-2026-61630: Time-Based One-Time Password (TOTP) Reuse/Replay in nginx-ignition

nginx-ignition is a web-based user interface for managing the Nginx web server. In versions 2.33.0 through 2.35.0, the application is vulnerable to an improper authentication flaw (CWE-287) in its Multi-Factor Authentication (MFA) implementation. The stateless validation of Time-Based One-Time Passwords (TOTP) allows an attacker to reuse a captured, active verification code multiple times within the standard 30-second validity window, successfully bypassing secondary authentication checks if primary credentials are known.

Amit Schendel
Amit Schendel
10 views•5 min read
•about 16 hours ago•CVE-2026-61629
7.5

CVE-2026-61629: CPU Amplification Denial of Service via ParseAcceptLanguage Underscore Bypass

A vulnerability exists in the i18n middleware of nginx-ignition, enabling CPU amplification attacks. By transmitting a crafted Accept-Language header containing malformed tags separated by underscores, an unauthenticated remote attacker can bypass the length-guard threshold of the underlying Go parsing library. Normalization of underscores to hyphens occurs after the initial validation checks, forcing the parser into expensive quadratic-time loops that consume 100% of available CPU resources. This leads to a complete denial of service for the administrative API and potentially degrades the availability of the hosting system. This vulnerability has been resolved in version 2.40.1.

Alon Barad
Alon Barad
7 views•7 min read
•about 17 hours ago•CVE-2026-61628
8.1

CVE-2026-61628: Unauthenticated Admin Account Creation via Onboarding Race Condition in Nginx Ignition

Nginx Ignition prior to version 2.41.1 contains a Time-of-Check to Time-of-Use (TOCTOU) race condition in its unauthenticated onboarding API endpoint. This flaw allows remote, unauthenticated attackers to register an administrative account by sending concurrent HTTP requests during the initial system configuration phase, bypassing the check meant to restrict onboarding to a single initial administrator.

Amit Schendel
Amit Schendel
8 views•6 min read
•about 23 hours ago•CVE-2026-61687
7.1

CVE-2026-61687: OAuth State Validation Bypass and Login CSRF in Hatchet

A logic error in Hatchet's OAuth state validation mechanism allows unauthenticated remote attackers to bypass state parameter verification. By submitting an empty state parameter, attackers can exploit an equality collision with cleared session keys, facilitating Login Cross-Site Request Forgery (Login CSRF) or Session Fixation.

Amit Schendel
Amit Schendel
10 views•10 min read