☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
CVSS: 6.5 CVSS:3.1/AV:N/AC:L/PR:L/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-2024-10330

CVE-2024-10330 Supply Chain Attack in Lunary-ai
📅 PUBLISHED: 2025-03-20 10:10 UTC 🔄 UPDATED: 2026-08-12 14:52 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.17%
👁️
0.17% probability
4.1× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1190
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 6.5
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: L Privileges Required Low
UI: N User Interaction None
S: U Scope Unchanged
C: H Confidentiality High
I: N Integrity None
A: N Availability None
6.5
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2024-10330 is a missing authorization vulnerability in lunary-ai/lunary version 1.5.6. The /v1/evaluators/ endpoint fails to enforce proper access controls, allowing any authenticated user associated with a project to retrieve all evaluator data, regardless of their assigned role. This flaw enables low-privilege users (e.g., viewers or contributors) to access potentially sensitive evaluation data that should be restricted to administrators or project owners. The vulnerability has a CVSS score of 6.5 (Medium) and a low EPSS score of 0.0%, indicating limited active exploitation at the time of analysis. No public proof-of-concept or patch is currently available.

⚡ 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 affects the lunary-ai/lunary open-source project, which is distributed as a Python package via PyPI. Organizations using lunary in their AI/LLM evaluation pipelines should verify their deployment version and restrict network access to the /v1/evaluators/ endpoint until a patch is applied.

CVSS Breakdown & Threat Level

  • Attack Vector (AV): Network (N) – The endpoint is accessible over the network.
  • Attack Complexity (AC): Low (L) – No special conditions are required to exploit.
  • Privileges Required (PR): Low (L) – An attacker needs a valid low-privilege account.
  • User Interaction (UI): None (N) – No user action is needed.
  • Scope (S): Unchanged (U) – The vulnerability does not cross trust boundaries.
  • Confidentiality (C): High (H) – Sensitive evaluator data is exposed.
  • Integrity (I): None (N) – No data modification is possible.
  • Availability (A): None (N) – No denial-of-service impact.

Threat Level: Medium. While the CVSS score is 6.5, the low EPSS score and lack of public exploits reduce immediate risk. However, the ease of exploitation (low privileges, no user interaction) makes it a credible threat for organizations using lunary with untrusted users.

Deep Dive & Mechanics

The vulnerability resides in the /v1/evaluators/ API endpoint of lunary version 1.5.6. The endpoint is designed to return evaluator data (e.g., evaluation results, metrics, and configurations) for a given project. The flaw is a classic Missing Authorization (CWE-862): the endpoint does not verify whether the requesting user has the appropriate role (e.g., admin, owner) to access all evaluator records. Instead, it only checks that the user is associated with the project, allowing any project member to enumerate and retrieve all evaluator data.

The likely root cause is that the backend code uses a simple membership check (e.g., user.project_id == project.id) without enforcing role-based access control (RBAC) on the evaluator resource. This means a user with a "viewer" or "contributor" role can access data intended only for "admin" or "owner" roles.

Vulnerable vs. Patched Code

Vulnerable Code (lunary 1.5.6):

# Hypothetical vulnerable implementation
@app.route('/v1/evaluators/', methods=['GET'])
def get_evaluators():
    project_id = request.args.get('project_id')
    user = get_current_user()
    # Only checks project membership, not role
    if not user.is_member_of(project_id):
        return jsonify({'error': 'Forbidden'}), 403
    evaluators = db.query(Evaluator).filter_by(project_id=project_id).all()
    return jsonify([e.to_dict() for e in evaluators])

Patched Code (Expected fix):

# Patched implementation with role check
@app.route('/v1/evaluators/', methods=['GET'])
def get_evaluators():
    project_id = request.args.get('project_id')
    user = get_current_user()
    # Enforce role-based access: only admin/owner can view all evaluators
    if not user.has_role(project_id, ['admin', 'owner']):
        return jsonify({'error': 'Forbidden'}), 403
    evaluators = db.query(Evaluator).filter_by(project_id=project_id).all()
    return jsonify([e.to_dict() for e in evaluators])

Exploitation & Lab Setup

Red Team

Prerequisites:

  • A valid low-privilege account (e.g., viewer) on a lunary instance.
  • Network access to the lunary API endpoint.

Exploitation Steps:

  1. Authenticate as a low-privilege user and obtain a session token or API key.
  2. Send a GET request to the /v1/evaluators/ endpoint with the target project ID:
    curl -X GET "https://lunary-instance.example.com/v1/evaluators/?project_id=123" \
         -H "Authorization: Bearer <low_priv_token>"
    
  3. If successful, the response will contain all evaluator data for the project, including sensitive evaluation results and configurations.

Expected Output:

[
  {
    "id": "eval_001",
    "name": "LLM Response Quality",
    "results": { "accuracy": 0.95, "hallucination_rate": 0.02 },
    "config": { "model": "gpt-4", "prompt_template": "..." }
  }
]

Blue Team

Detection:

  • Monitor API logs for repeated GET requests to /v1/evaluators/ from low-privilege users.
  • Alert on any user with a role other than "admin" or "owner" accessing the evaluator endpoint.

Mitigation:

  • Immediately restrict access to the /v1/evaluators/ endpoint using a reverse proxy or WAF rule until a patch is applied.
  • Implement temporary RBAC checks in the application code (see patched code example).
  • Audit all project memberships and remove unnecessary low-privilege users.

Indicators of Compromise (IOCs)

  • Network: HTTP GET requests to /v1/evaluators/ with a project_id parameter from non-admin users.
  • Logs: API access logs showing GET /v1/evaluators/ with HTTP 200 responses for users with role != admin/owner.
  • User Agent: No specific UA; any standard HTTP client (curl, requests, browser).

Detection Engineering

YARA Rule

rule Detect_Lunary_Evaluator_Exposure {
    meta:
        description = "Detects potential exploitation of CVE-2024-10330 by identifying unauthorized access to /v1/evaluators/ endpoint"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2024-10330"
    strings:
        $endpoint = "/v1/evaluators/"
        $project_param = "project_id="
        $response = "evaluator"
    condition:
        all of them
}

Sigma Rule

title: Unauthorized Access to Lunary Evaluators Endpoint
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects GET requests to /v1/evaluators/ from users with low privileges
logsource:
    category: webserver
    product: apache
detection:
    selection:
        cs-method: GET
        cs-uri-stem: "/v1/evaluators/"
        cs-uri-query: "project_id=*"
    condition: selection
falsepositives:
    - Legitimate admin access
level: medium

Suricata Rule

alert http any any -> any any (msg:"CVE-2024-10330 - Unauthorized Access to Lunary Evaluators"; flow:to_server; http.method; content:"GET"; http.uri; content:"/v1/evaluators/"; http.uri; content:"project_id="; classtype:attempted-recon; sid:1000001; rev:1;)

Remediation & Mitigation

  1. Immediate: Restrict access to /v1/evaluators/ via firewall or reverse proxy to only trusted IPs or admin users.
  2. Short-term: Apply the patched code example above to enforce RBAC on the evaluator endpoint.
  3. Long-term: Upgrade to a patched version of lunary once available. Monitor the official repository for updates.
  4. Compensating Controls: Implement additional logging and alerting for all API access to sensitive endpoints. Conduct a role audit to ensure least privilege.

Report generated by Valters IT DevSecOps & CTI Division

👁️ SHODAN DORKS (THREAT HUNTING)

What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.

lunary-ai
lunary evaluators

💣 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-2024-10330/ · 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.