CVE-2024-8999

7.5 HIGH

📋 TL;DR

This vulnerability in lunary-ai/lunary allows any user to export the entire database to Google BigQuery without proper authentication or authorization. It affects all deployments running version v1.4.25 or earlier. The vulnerability enables unauthorized data exfiltration of sensitive information.

💻 Affected Systems

Products:
  • lunary-ai/lunary
Versions: v1.4.25 and earlier
Operating Systems: All
Default Config Vulnerable: ⚠️ Yes
Notes: All deployments with the vulnerable endpoint exposed are affected. The vulnerability exists in the default configuration.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Entire database containing sensitive user data, configuration, and application information is exported to an attacker-controlled Google BigQuery instance, leading to complete data breach and potential regulatory violations.

🟠

Likely Case

Unauthorized users export sensitive data to external systems, compromising data confidentiality and potentially exposing personally identifiable information or business intelligence.

🟢

If Mitigated

With proper authentication and authorization controls, only authorized users can export data, limiting access to legitimate business needs.

🌐 Internet-Facing: HIGH - The vulnerable endpoint is accessible via API and lacks authentication, making it directly exploitable from the internet.
🏢 Internal Only: HIGH - Even internal users without proper authorization could exploit this to access sensitive data they shouldn't have access to.

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

Exploitation requires sending a POST request to the vulnerable endpoint with Google BigQuery connection parameters. No authentication is required.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 1.4.26

Vendor Advisory: https://github.com/lunary-ai/lunary/commit/aa0fd22952d1d84a717ae563eb1ab564d94a9e2b

Restart Required: No

Instructions:

1. Update lunary-ai/lunary to version 1.4.26 or later. 2. Verify the update completed successfully. 3. No restart required as this is a code-level fix.

🔧 Temporary Workarounds

Block vulnerable endpoint

all

Temporarily block access to the vulnerable endpoint using web application firewall or network controls.

# Example nginx config to block endpoint
location /api/v1/data-warehouse/bigquery {
    deny all;
    return 403;
}

Implement authentication middleware

all

Add authentication checks before the vulnerable endpoint processes requests.

# Example middleware pseudocode
function authenticateRequest(req, res, next) {
    if (!req.isAuthenticated()) {
        return res.status(401).send('Unauthorized');
    }
    next();
}

🧯 If You Can't Patch

  • Implement network segmentation to restrict access to the vulnerable endpoint to authorized users only.
  • Deploy a web application firewall with rules to block unauthorized POST requests to the vulnerable endpoint.

🔍 How to Verify

Check if Vulnerable:

Check if lunary version is 1.4.25 or earlier and if POST requests to /api/v1/data-warehouse/bigquery succeed without authentication.

Check Version:

Check package.json or run: npm list lunary-ai/lunary

Verify Fix Applied:

Verify lunary version is 1.4.26 or later and that POST requests to /api/v1/data-warehouse/bigquery without proper authentication return 401 or 403.

📡 Detection & Monitoring

Log Indicators:

  • Unusual POST requests to /api/v1/data-warehouse/bigquery endpoint
  • Failed authentication attempts followed by successful data export requests
  • Large data export operations from unexpected IP addresses

Network Indicators:

  • Unusual outbound connections to Google BigQuery APIs
  • Large data transfers to external cloud services

SIEM Query:

source="web_logs" AND (uri="/api/v1/data-warehouse/bigquery" AND method="POST") AND (response_code=200 OR response_code=201) AND NOT (user_agent="legitimate_client")

🔗 References

📤 Share & Export