☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
SOON 🐛 CWE-667
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2023-52725

CVE-2023-52725 Supply Chain Attack in Open networking foundation
📅 PUBLISHED: 2024-04-29 00:00 UTC 🔄 UPDATED: 2026-08-21 19:37 UTC
⏳ SCORE PENDING — ANALYSIS IN PROGRESS [ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.10%
👁️
0.10% probability
2.4× above the median CVE
Tier: LOW
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1499.001
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
VULNERABLE: 0.4.7
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
SOON
PENDING NVD
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2023-52725 is a denial-of-service (DoS) vulnerability in the Open Networking Foundation SD-RAN ONOS kpimon component, version 0.4.7. The flaw resides in the Start function of the monitoring package, where the errCh channel can be blocked, preventing error handling and leading to a hang or crash of the monitoring process. This can be exploited by an attacker with network access to the kpimon service to disrupt network monitoring and control in SD-RAN environments.

⚡ 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 onos-kpimon component, which is part of the SD-RAN ONOS project. The project is distributed as a Go binary and Docker image. No official patch has been released as of this analysis. Users should monitor the official ONOS repository for updates and consider building from source with a fix if available.

CVSS Breakdown & Threat Level

CVSS Score: 0.0 (No official CVSS vector assigned) Threat Level: Medium (based on impact and exploitability)

Rationale:

  • Attack Vector (AV): Network (likely)
  • Attack Complexity (AC): Low (simple channel blocking)
  • Privileges Required (PR): None (unauthenticated network access)
  • User Interaction (UI): None
  • Scope (S): Unchanged
  • Confidentiality (C): None
  • Integrity (I): None
  • Availability (A): High (DoS)

Deep Dive & Mechanics

The vulnerability exists in the Start function of the monitoring package within onos-kpimon. The function creates a channel errCh to receive errors from monitoring goroutines. If an attacker can cause a condition where the channel is never read (e.g., by sending a large number of requests that fill the channel buffer or by exploiting a race condition), the goroutine writing to the channel will block indefinitely. This blocks the entire Start function, preventing the monitoring service from processing further requests or handling errors, effectively causing a denial of service.

Root Cause: The errCh channel is unbuffered or has a small buffer, and the code does not implement a timeout or non-blocking send. If the receiver (the main loop) is busy or blocked, the sender goroutine hangs.

Attack Vector: An attacker sends a crafted sequence of requests to the kpimon service (e.g., via gRPC or REST API) that triggers an error condition in a monitoring goroutine. The goroutine attempts to send the error to errCh, but the main loop is not reading from the channel (e.g., due to a previous blocking operation or a race condition). This causes the goroutine to block, and subsequent operations stall.

Vulnerable vs. Patched Code

Vulnerable Code (0.4.7):

func (m *Monitor) Start() error {
    errCh := make(chan error)
    go func() {
        // ... monitoring logic ...
        if err != nil {
            errCh <- err  // Blocking send
        }
    }()
    // Main loop
    for {
        select {
        case err := <-errCh:
            // handle error
        default:
            // other work
        }
    }
}

Patched Code (Hypothetical):

func (m *Monitor) Start() error {
    errCh := make(chan error, 10) // Buffered channel
    go func() {
        // ... monitoring logic ...
        if err != nil {
            select {
            case errCh <- err:
            default:
                // Log and drop error if channel full
                log.Warn("Dropped error due to full channel")
            }
        }
    }()
    // Main loop with timeout
    for {
        select {
        case err := <-errCh:
            // handle error
        case <-time.After(5 * time.Second):
            // timeout to prevent blocking
        }
    }
}

Exploitation & Lab Setup

Red Team

Prerequisites:

  • Access to the kpimon service (default port 5150 for gRPC)
  • Ability to send gRPC requests

Exploit Steps:

  1. Identify the kpimon endpoint (e.g., 10.0.0.1:5150).
  2. Send a burst of requests that trigger errors (e.g., malformed monitoring configurations).
  3. The errCh channel becomes blocked, causing the Start function to hang.
  4. The monitoring service becomes unresponsive, disrupting SD-RAN operations.

Example gRPC request (using grpcurl):

grpcurl -plaintext -d '{"invalid_field": "test"}' 10.0.0.1:5150 onos.kpimon.Monitoring/Start

Blue Team

Detection:

  • Monitor for sudden increase in gRPC errors from kpimon.
  • Watch for goroutine leaks (increased memory usage).
  • Alert on kpimon process hang or crash.

Mitigation:

  • Apply rate limiting to the kpimon API.
  • Use a reverse proxy with timeout settings.
  • Implement a watchdog to restart the kpimon service if it becomes unresponsive.

Indicators of Compromise (IOCs)

  • Network: Unusual gRPC traffic to port 5150 with malformed payloads.
  • Process: kpimon process consuming 100% CPU or stuck in D state (uninterruptible sleep).
  • Logs: Repeated error messages like error sending to errCh or monitoring goroutine blocked.
  • Memory: High memory usage due to goroutine leaks.

Detection Engineering

YARA Rule

rule CVE_2023_52725_kpimon_DoS {
    meta:
        description = "Detects vulnerable onos-kpimon binary with blocking errCh channel"
        author = "Valters IT"
        date = "2025-04-10"
        cve = "CVE-2023-52725"
    strings:
        $errCh = "errCh <- err" ascii wide nocase
        $make_chan = "make(chan error)" ascii wide nocase
    condition:
        $errCh and $make_chan
}

Sigma Rule

title: CVE-2023-52725 - kpimon DoS via Blocked errCh Channel
id: 8a9b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
status: experimental
description: Detects potential exploitation of CVE-2023-52725 by monitoring for kpimon service hangs
logsource:
    category: process_creation
    product: linux
detection:
    selection:
        Image|endswith: '/kpimon'
        CommandLine|contains: 'start'
    condition: selection
falsepositives:
    - Legitimate service restarts
level: medium

Suricata Rule

alert tcp any any -> any 5150 (msg:"CVE-2023-52725 - kpimon DoS Attempt"; flow:to_server,established; content:"|00 00 00 00|"; depth:4; offset:0; content:"|0a|"; within:10; reference:cve,2023-52725; classtype:attempted-dos; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate:

  1. Restrict network access to the kpimon service (firewall rules).
  2. Implement rate limiting on the gRPC endpoint.
  3. Set up a watchdog to restart the kpimon service if it becomes unresponsive.

Long-term:

  1. Apply a patch from the ONOS repository when available.
  2. Modify the source code to use a buffered channel with a non-blocking send.
  3. Add timeouts to the main loop to prevent indefinite blocking.

Workaround:

  • Use a reverse proxy (e.g., Envoy) in front of kpimon with connection timeouts.

Valters IT
Senior DevSecOps & Cyber Threat Intelligence Expert
Report generated for CVE-2023-52725

👁️ 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.

http.title:"onos-kpimon"
product:"Open Networking Foundation SD-RAN ONOS"

💣 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-2023-52725/ · 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.