The vulnerability, identified as GHSA-rj4j-2jph-gg43, is a series of path traversal flaws within the LF Edge eKuiper application. The root cause is the improper handling of user-provided input across multiple components when constructing file system paths. Attacker-controlled data, including rule names, schema versions, plugin names, uploaded file names, and ZIP archive entries, were used directly in file operations without sufficient sanitization.
The analysis of the patch commit 58362b089c76f08c400fe0dbb3667e6e871eaffd reveals several functions that were modified to add input validation. These modifications highlight the exact locations of the vulnerabilities. For instance, the filex.UnzipTo function was patched to validate filenames from zip entries, native.Manager.getSoFilePath was changed to sanitize plugin names, and server.deleteRuleData now checks rule names before deletion. In each case, the lack of prior validation allowed for arbitrary file read, write, or deletion by crafting inputs with path traversal sequences like ../.
filex.UnzipTointernal/pkg/filex/zip.go
native.Manager.getSoFilePathinternal/plugin/native/manager.go
schema.CreateOrUpdateSchemainternal/schema/registry.go
server.fileContent.Validateinternal/server/rest.go
server.deleteRuleDatainternal/server/rule_manager.go
service.Manager.initFileinternal/service/manager.go
| Package Name | Ecosystem | Vulnerable Versions | First Patched Version |
|---|---|---|---|
| github.com/lf-edge/ekuiper/v2 | go | < 2.3.0 | 2.3.0 |
Ongoing coverage of React2Shell