{
  "containers": {
    "cna": {
      "affected": [
        {
          "product": "Apache Tapestry",
          "vendor": "Apache Software Foundation",
          "versions": [
            {
              "status": "affected",
              "version": "Apache Tapestry 5.5.0"
            },
            {
              "status": "affected",
              "version": "Apache Tapestry 5.7.0"
            },
            {
              "lessThan": "Apache Tapestry 5.4.0*",
              "status": "affected",
              "version": "Apache Tapestry 5.4.5",
              "versionType": "custom"
            },
            {
              "lessThan": "Apache Tapestry 5.6.0*",
              "status": "affected",
              "version": "Apache Tapestry 5.6.2",
              "versionType": "custom"
            }
          ]
        }
      ],
      "credits": [
        {
          "lang": "en",
          "value": "Apache Tapestry would like to thank Johannes Moritz for finding and notifying this vulnerability"
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "A critical unauthenticated remote code execution vulnerability was found\nall recent versions of Apache Tapestry.\nThe affected versions include 5.4.5, 5.5.0, 5.6.2 and 5.7.0.\n\nThe vulnerability I have found is a bypass of the fix for CVE-2019-0195.\n\nRecap:\n\nBefore the fix of CVE-2019-0195 it was possible to download arbitrary\nclass files from the classpath by providing a crafted\nasset file URL.\nAn attacker was able to download the file `AppModule.class` by\nrequesting the URL\n`http://localhost:8080/assets/something/services/AppModule.class`\nwhich contains a HMAC secret key.\nThe fix for that bug was a blacklist filter that checks if the URL\nends with `.class`, `.properties` or `.xml`.\n\nBypass:\n\nUnfortunately, the blacklist solution can simply be bypassed by\nappending a `/` at the end of the URL:\n\n`http://localhost:8080/assets/something/services/AppModule.class/`\nThe slash is stripped after the blacklist check and the file\n`AppModule.class` is loaded into the response.\nThis class usually contains the HMAC secret key which is used to sign\nserialized Java objects.\nWith the knowledge of that key an attacker can sign a Java gadget\nchain that leads to RCE (e.g. CommonsBeanUtils1 from ysoserial)."
        },
        {
          "lang": "en",
          "value": "Solution for this vulnerability:\n* For Apache Tapestry 5.4.0 to 5.6.1, upgrade to 5.6.2 or later.\n* For Apache Tapestry 5.7.0, upgrade to 5.7.1 or later."
        }
      ],
      "problemTypes": [
        {
          "descriptions": [
            {
              "cweId": "CWE-200",
              "description": "CWE-200 Information Exposure",
              "lang": "en",
              "type": "CWE"
            }
          ]
        },
        {
          "descriptions": [
            {
              "cweId": "CWE-502",
              "description": "CWE-502 Deserialization of Untrusted Data",
              "lang": "en",
              "type": "CWE"
            }
          ]
        }
      ],
      "providerMetadata": {
        "orgId": "Not found",
        "shortName": "Not found"
      },
      "references": [
        {
          "tags": [
            "x_refsource_CONFIRM"
          ],
          "url": "https://lists.apache.org/thread.html/r237ff7f286bda31682c254550c1ebf92b0ec61329b32fbeb2d1c8751%40%3Cusers.tapestry.apache.org%3E"
        }
      ],
      "source": {
        "defect": [
          "TAP5-2663"
        ],
        "discovery": "UNKNOWN"
      },
      "title": "Bypass of the fix for CVE-2019-0195",
      "x_ValidationErrors": [
        "$.cveMetadata.assignerOrgId -- validator = pattern",
        "$.containers.cna.providerMetadata.orgId -- validator = pattern"
      ],
      "x_generator": {
        "engine": "Vulnogram 0.0.9"
      },
      "x_legacyV4Record": {
        "CNA_private": {
          "CVE_list": [],
          "CVE_table_description": [],
          "email": "thiagohp@apache.org",
          "internal_comments": "",
          "owner": "tapestry",
          "publish": {
            "month": "",
            "year": "",
            "ym": ""
          },
          "share_with_CVE": true,
          "todo": []
        },
        "CVE_data_meta": {
          "AKA": "",
          "ASSIGNER": "security@apache.org",
          "DATE_PUBLIC": "",
          "ID": "CVE-2021-27850",
          "STATE": "PUBLIC",
          "TITLE": "Bypass of the fix for CVE-2019-0195"
        },
        "affects": {
          "vendor": {
            "vendor_data": [
              {
                "product": {
                  "product_data": [
                    {
                      "product_name": "Apache Tapestry",
                      "version": {
                        "version_data": [
                          {
                            "platform": "",
                            "version_affected": ">=",
                            "version_name": "Apache Tapestry 5.4.0",
                            "version_value": "Apache Tapestry 5.4.5"
                          },
                          {
                            "platform": "",
                            "version_affected": "=",
                            "version_name": "Apache Tapestry 5.5.0",
                            "version_value": "Apache Tapestry 5.5.0"
                          },
                          {
                            "platform": "",
                            "version_affected": ">=",
                            "version_name": "Apache Tapestry 5.6.0",
                            "version_value": "Apache Tapestry 5.6.2"
                          },
                          {
                            "platform": "",
                            "version_affected": "=",
                            "version_name": "Apache Tapestry 5.7.0",
                            "version_value": "Apache Tapestry 5.7.0"
                          }
                        ]
                      }
                    }
                  ]
                },
                "vendor_name": "Apache Software Foundation"
              }
            ]
          }
        },
        "configuration": [],
        "credit": [
          {
            "lang": "eng",
            "value": "Apache Tapestry would like to thank Johannes Moritz for finding and notifying this vulnerability"
          }
        ],
        "data_format": "MITRE",
        "data_type": "CVE",
        "data_version": "4.0",
        "description": {
          "description_data": [
            {
              "lang": "eng",
              "value": "A critical unauthenticated remote code execution vulnerability was found\nall recent versions of Apache Tapestry.\nThe affected versions include 5.4.5, 5.5.0, 5.6.2 and 5.7.0.\n\nThe vulnerability I have found is a bypass of the fix for CVE-2019-0195.\n\nRecap:\n\nBefore the fix of CVE-2019-0195 it was possible to download arbitrary\nclass files from the classpath by providing a crafted\nasset file URL.\nAn attacker was able to download the file `AppModule.class` by\nrequesting the URL\n`http://localhost:8080/assets/something/services/AppModule.class`\nwhich contains a HMAC secret key.\nThe fix for that bug was a blacklist filter that checks if the URL\nends with `.class`, `.properties` or `.xml`.\n\nBypass:\n\nUnfortunately, the blacklist solution can simply be bypassed by\nappending a `/` at the end of the URL:\n\n`http://localhost:8080/assets/something/services/AppModule.class/`\nThe slash is stripped after the blacklist check and the file\n`AppModule.class` is loaded into the response.\nThis class usually contains the HMAC secret key which is used to sign\nserialized Java objects.\nWith the knowledge of that key an attacker can sign a Java gadget\nchain that leads to RCE (e.g. CommonsBeanUtils1 from ysoserial)."
            },
            {
              "lang": "eng",
              "value": "Solution for this vulnerability:\n* For Apache Tapestry 5.4.0 to 5.6.1, upgrade to 5.6.2 or later.\n* For Apache Tapestry 5.7.0, upgrade to 5.7.1 or later."
            }
          ]
        },
        "exploit": [],
        "generator": {
          "engine": "Vulnogram 0.0.9"
        },
        "impact": [],
        "problemtype": {
          "problemtype_data": [
            {
              "description": [
                {
                  "lang": "eng",
                  "value": "CWE-200 Information Exposure"
                }
              ]
            },
            {
              "description": [
                {
                  "lang": "eng",
                  "value": "CWE-502 Deserialization of Untrusted Data"
                }
              ]
            }
          ]
        },
        "references": {
          "reference_data": [
            {
              "name": "",
              "refsource": "CONFIRM",
              "url": "https://lists.apache.org/thread.html/r237ff7f286bda31682c254550c1ebf92b0ec61329b32fbeb2d1c8751%40%3Cusers.tapestry.apache.org%3E"
            }
          ]
        },
        "solution": [],
        "source": {
          "advisory": "",
          "defect": [
            "TAP5-2663"
          ],
          "discovery": "UNKNOWN"
        },
        "timeline": [],
        "work_around": []
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "Not found",
    "assignerShortName": "Not found",
    "cveId": "CVE-2021-27850",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.0"
}