{"schema_version": "1.6.1", "id": "CVE-2022-25757", "summary": "Apache APISIX: the body_schema check in request-validation plugin can be bypassed", "details": "In Apache APISIX before 2.13.0, when decoding JSON with duplicate keys, lua-cjson will choose the last occurred value as the result. By passing a JSON with a duplicate key, the attacker can bypass the body_schema validation in the request-validation plugin. For example, `{\"string_payload\":\"bad\",\"string_payload\":\"good\"}` can be used to hide the \"bad\" input.\n\nSystems satisfy three conditions below are affected by this attack:\n1. use body_schema validation in the request-validation plugin\n2. upstream application uses a special JSON library that chooses the first occurred value, like jsoniter or gojay\n3. upstream application does not validate the input anymore.\n\nThe fix in APISIX is to re-encode the validated JSON input back into the request body at the side of APISIX.", "affected": [{"ranges": [{"type": "SEMVER", "events": [{"introduced": "Apache APISIX"}, {"last_affected": "Apache APISIX"}]}]}], "references": [{"type": "ADVISORY", "url": "https://lists.apache.org/thread/03vd2j81krxmpz6xo8p1dl642flpo6fv"}]}