CVE-2026-27177

7.2 HIGH

📋 TL;DR

MajorDoMo contains an unauthenticated stored XSS vulnerability that allows attackers to inject malicious JavaScript into property values. When administrators view the property editor, the malicious code executes automatically, potentially leading to session hijacking since cookies lack HttpOnly protection. All MajorDoMo instances with the vulnerable endpoint accessible are affected.

💻 Affected Systems

Products:
  • MajorDoMo (Major Domestic Module)
Versions: All versions prior to fix
Operating Systems: All platforms running MajorDoMo
Default Config Vulnerable: ⚠️ Yes
Notes: The /objects/?op=set endpoint is intentionally unauthenticated for IoT device integration, making default configurations vulnerable.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete compromise of admin accounts leading to full system takeover, data exfiltration, and lateral movement within the network.

🟠

Likely Case

Session hijacking of admin accounts, allowing attackers to modify system configurations, install backdoors, or access sensitive IoT device data.

🟢

If Mitigated

Limited impact with proper network segmentation and admin account monitoring, though XSS could still execute in admin context.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ⚠️ Yes
Weaponized: LIKELY
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

Attackers can enumerate properties via /api.php/data/ endpoint and inject payloads without authentication. The XSS fires automatically on admin page load.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Check pull request #1177 for specific version

Vendor Advisory: https://github.com/sergejey/majordomo/pull/1177

Restart Required: No

Instructions:

1. Update to the patched version from the official repository. 2. Apply the fix that adds proper input sanitization and output escaping. 3. Verify the /objects/?op=set endpoint now validates and sanitizes input.

🔧 Temporary Workarounds

Network Access Control

all

Restrict access to the /objects/?op=set endpoint to trusted IoT devices only using firewall rules or web server configuration.

# Example nginx location block
location /objects/ {
    allow 192.168.1.0/24;
    deny all;
}

Add HttpOnly Flag to Session Cookies

all

Configure the application to set HttpOnly flag on session cookies to prevent JavaScript access.

# In PHP configuration
session.cookie_httponly = 1

🧯 If You Can't Patch

  • Implement strict Content Security Policy (CSP) headers to prevent script execution from untrusted sources.
  • Deploy a Web Application Firewall (WAF) with XSS protection rules to block malicious payloads.

🔍 How to Verify

Check if Vulnerable:

Test if you can submit unauthenticated POST requests to /objects/?op=set with malicious payloads that persist and execute in the admin panel.

Check Version:

Check the MajorDoMo version in the admin panel or configuration files.

Verify Fix Applied:

Verify that input to /objects/?op=set is properly sanitized and that output in the admin panel is HTML-encoded.

📡 Detection & Monitoring

Log Indicators:

  • Unusual POST requests to /objects/?op=set endpoint
  • JavaScript payloads in property value fields
  • Multiple property enumeration requests to /api.php/data/

Network Indicators:

  • Unusual traffic patterns to the vulnerable endpoints from untrusted sources
  • Suspicious JavaScript in HTTP POST parameters

SIEM Query:

source="web_server" AND (url="/objects/?op=set" OR url="/api.php/data/") AND (method="POST" OR status=200)

🔗 References

📤 Share & Export