-
Notifications
You must be signed in to change notification settings - Fork 38
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Logic Flaw in Delete Watcher Function | Improper Closure | A1T DoS #206
Comments
bergen876
changed the title
Logic Flaw in Delete Watcher Fucntion | Improper Closure | A1T DoS
Logic Flaw in Delete Watcher Function | Improper Closure | A1T DoS
Oct 3, 2024
Please find the attached logs preceding the crash of the A1T
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Issue Summary –
Issue: Our tests revealed that the ONOS A1 Termination component of SD RAN ORAN deployment was susceptible to a Denial of Service attack through the continuous replay of concurrent HTTP policies. This attack resulted in the termination of the service, impacting the management of A1 policies.
Logs Overview: The strace logs show a panic was triggered during a sequence of epoll_pwait and futex operations, which can hint about thread synchronization issues. Multiple write system calls were noted, corresponding to log outputs of watcher deletions. This aligns with the A1 Termination service logs, which indicate a panic when attempting to close a nil channel in the DeleteWatcher method.
Attack Reproduction : We tested the SDRAN-in-a-Box (RiaB) v1.4.3, specifically the RAN Simulator and Rimedo Traffic Steering xApp edition ( https://docs.sd-ran.org/master/sdran-in-a-box/docs/Installation_RANSim_RIMDEO_TS.html ). However, we believe this attack is applicable to all other editions that utilize the AI Termination module. The attack consists of replaying the JSON-based Traffic Steering Policies (ORAN_TrafficSteeringPreference_2.0.0) by scripting a multithreaded curl command.
Technical Details:
Strace Logs:
A1 Termination Logs:
The error originated in the DeleteWatcher function (stream/broker.go:129-132) with a panic message: "close of nil channel" at broker.go:130. onos-a1t/pkg/stream/broker.go at master · onosproject/onos-a1t · GitHub
The goroutine in question (goroutine 2793) was active during the panic, attempting to delete a watcher from a map with UUIDs tied to components like EnrichmentInformation and PolicyManagement.
Potential Causes:
The nil channel panic suggests a potential logic flaw where the code attempts to close a watcher channel that is either not properly initialized or has already been closed.
Thread synchronization issues as indicated by futex behavior could be causing a race condition, leading to the panic during the watcher deletion.
Next Steps:
The text was updated successfully, but these errors were encountered: