The vulnerability consists of two distinct vectors: a failure to sanitize URL-holding attributes in SVG and MathML, and a lack of validation for dynamic bindings to the attributeName attribute on SVG animation elements. The analysis of the patch commit 1c6b0704fb63d051fab8acff84d076abfbc4893a reveals the runtime functions involved in mitigating these issues.
For the first vector (insecure URL attributes), the patch modifies the compiler's SECURITY_SCHEMA to correctly classify a wide range of SVG and MathML attributes (like xlink:href) as requiring URL sanitization. This change ensures that the compiler generates code that funnels any value bound to these attributes through the ɵɵsanitizeUrl function at runtime. This function inspects the URL and prevents javascript: payloads from executing. The vulnerability, therefore, was the absence of calls to ɵɵsanitizeUrl for these specific attributes.
For the second vector (attributeName binding), the patch introduces a new runtime validation function, ɵɵvalidateAttribute. The compiler schema was updated to identify attributeName on elements like <animate> as a security-sensitive attribute that cannot be dynamically bound. This triggers the compiler to insert a call to ɵɵvalidateAttribute in the generated template code. At runtime, this function checks for the forbidden binding and throws an error, effectively blocking the exploit path. Before this function was introduced, no runtime check was performed, allowing the attack to succeed.
Consequently, ɵɵsanitizeUrl and the newly added ɵɵvalidateAttribute are the key runtime functions that process the malicious input and enforce the security policy that was previously missing.