{
    "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 all recent versions of Apache Tapestry. The affected versions include 5.4.5, 5.5.0, 5.6.2 and 5.7.0. The vulnerability I have found is a bypass of the fix for CVE-2019-0195. Recap: Before the fix of CVE-2019-0195 it was possible to download arbitrary class files from the classpath by providing a crafted asset file URL. An attacker was able to download the file `AppModule.class` by requesting the URL `http://localhost:8080/assets/something/services/AppModule.class` which contains a HMAC secret key. The fix for that bug was a blacklist filter that checks if the URL ends with `.class`, `.properties` or `.xml`. Bypass: Unfortunately, the blacklist solution can simply be bypassed by appending a `/` at the end of the URL: `http://localhost:8080/assets/something/services/AppModule.class/` The slash is stripped after the blacklist check and the file `AppModule.class` is loaded into the response. This class usually contains the HMAC secret key which is used to sign serialized Java objects. With the knowledge of that key an attacker can sign a Java gadget chain that leads to RCE (e.g. CommonsBeanUtils1 from ysoserial). Solution for this vulnerability: * For Apache Tapestry 5.4.0 to 5.6.1, upgrade to 5.6.2 or later. * 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": {
                "dateUpdated": "2021-05-28T09:06:12",
                "orgId": "f0158376-9dc2-43b6-827c-5f631a4d8d09",
                "shortName": "apache"
            },
            "references": [
                {
                    "tags": [
                        "x_refsource_MISC"
                    ],
                    "url": "https://lists.apache.org/thread.html/r237ff7f286bda31682c254550c1ebf92b0ec61329b32fbeb2d1c8751%40%3Cusers.tapestry.apache.org%3E"
                },
                {
                    "name": "[oss-security] 20210414 CVE-2021-27850: Apache Tapestry: Bypass of the fix for CVE-2019-0195",
                    "tags": [
                        "mailing-list",
                        "x_refsource_MLIST"
                    ],
                    "url": "http://www.openwall.com/lists/oss-security/2021/04/15/1"
                },
                {
                    "tags": [
                        "x_refsource_CONFIRM"
                    ],
                    "url": "https://security.netapp.com/advisory/ntap-20210528-0002/"
                }
            ],
            "source": {
                "defect": [
                    "TAP5-2663"
                ],
                "discovery": "UNKNOWN"
            },
            "title": "Bypass of the fix for CVE-2019-0195",
            "x_generator": {
                "engine": "Vulnogram 0.0.9"
            },
            "x_legacyV4Record": {
                "CVE_data_meta": {
                    "ASSIGNER": "security@apache.org",
                    "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": [
                                                    {
                                                        "version_affected": ">=",
                                                        "version_name": "Apache Tapestry 5.4.0",
                                                        "version_value": "Apache Tapestry 5.4.5"
                                                    },
                                                    {
                                                        "version_affected": "=",
                                                        "version_name": "Apache Tapestry 5.5.0",
                                                        "version_value": "Apache Tapestry 5.5.0"
                                                    },
                                                    {
                                                        "version_affected": ">=",
                                                        "version_name": "Apache Tapestry 5.6.0",
                                                        "version_value": "Apache Tapestry 5.6.2"
                                                    },
                                                    {
                                                        "version_affected": "=",
                                                        "version_name": "Apache Tapestry 5.7.0",
                                                        "version_value": "Apache Tapestry 5.7.0"
                                                    }
                                                ]
                                            }
                                        }
                                    ]
                                },
                                "vendor_name": "Apache Software Foundation"
                            }
                        ]
                    }
                },
                "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 all recent versions of Apache Tapestry. The affected versions include 5.4.5, 5.5.0, 5.6.2 and 5.7.0. The vulnerability I have found is a bypass of the fix for CVE-2019-0195. Recap: Before the fix of CVE-2019-0195 it was possible to download arbitrary class files from the classpath by providing a crafted asset file URL. An attacker was able to download the file `AppModule.class` by requesting the URL `http://localhost:8080/assets/something/services/AppModule.class` which contains a HMAC secret key. The fix for that bug was a blacklist filter that checks if the URL ends with `.class`, `.properties` or `.xml`. Bypass: Unfortunately, the blacklist solution can simply be bypassed by appending a `/` at the end of the URL: `http://localhost:8080/assets/something/services/AppModule.class/` The slash is stripped after the blacklist check and the file `AppModule.class` is loaded into the response. This class usually contains the HMAC secret key which is used to sign serialized Java objects. With the knowledge of that key an attacker can sign a Java gadget chain that leads to RCE (e.g. CommonsBeanUtils1 from ysoserial). Solution for this vulnerability: * For Apache Tapestry 5.4.0 to 5.6.1, upgrade to 5.6.2 or later. * For Apache Tapestry 5.7.0, upgrade to 5.7.1 or later."
                        }
                    ]
                },
                "generator": {
                    "engine": "Vulnogram 0.0.9"
                },
                "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": "https://lists.apache.org/thread.html/r237ff7f286bda31682c254550c1ebf92b0ec61329b32fbeb2d1c8751%40%3Cusers.tapestry.apache.org%3E",
                            "refsource": "MISC",
                            "url": "https://lists.apache.org/thread.html/r237ff7f286bda31682c254550c1ebf92b0ec61329b32fbeb2d1c8751%40%3Cusers.tapestry.apache.org%3E"
                        },
                        {
                            "name": "[oss-security] 20210414 CVE-2021-27850: Apache Tapestry: Bypass of the fix for CVE-2019-0195",
                            "refsource": "MLIST",
                            "url": "http://www.openwall.com/lists/oss-security/2021/04/15/1"
                        },
                        {
                            "name": "https://security.netapp.com/advisory/ntap-20210528-0002/",
                            "refsource": "CONFIRM",
                            "url": "https://security.netapp.com/advisory/ntap-20210528-0002/"
                        }
                    ]
                },
                "source": {
                    "defect": [
                        "TAP5-2663"
                    ],
                    "discovery": "UNKNOWN"
                }
            }
        },
        "adp": [
            {
                "providerMetadata": {
                    "orgId": "af854a3a-2127-422b-91ae-364da2661108",
                    "shortName": "CVE",
                    "dateUpdated": "2024-08-03T21:33:15.996Z"
                },
                "title": "CVE Program Container",
                "references": [
                    {
                        "tags": [
                            "x_refsource_MISC",
                            "x_transferred"
                        ],
                        "url": "https://lists.apache.org/thread.html/r237ff7f286bda31682c254550c1ebf92b0ec61329b32fbeb2d1c8751%40%3Cusers.tapestry.apache.org%3E"
                    },
                    {
                        "name": "[oss-security] 20210414 CVE-2021-27850: Apache Tapestry: Bypass of the fix for CVE-2019-0195",
                        "tags": [
                            "mailing-list",
                            "x_refsource_MLIST",
                            "x_transferred"
                        ],
                        "url": "http://www.openwall.com/lists/oss-security/2021/04/15/1"
                    },
                    {
                        "tags": [
                            "x_refsource_CONFIRM",
                            "x_transferred"
                        ],
                        "url": "https://security.netapp.com/advisory/ntap-20210528-0002/"
                    }
                ]
            }
        ]
    },
    "cveMetadata": {
        "assignerOrgId": "f0158376-9dc2-43b6-827c-5f631a4d8d09",
        "assignerShortName": "apache",
        "cveId": "CVE-2021-27850",
        "datePublished": "2021-04-15T07:40:11",
        "dateReserved": "2021-03-01T00:00:00",
        "dateUpdated": "2024-08-03T21:33:15.996Z",
        "state": "PUBLISHED"
    },
    "dataType": "CVE_RECORD",
    "dataVersion": "5.1"
}