top of page

Falha na framework Angular permite injeção de javascript - CVE-2026-22610

  • Foto do escritor: zecorreia93
    zecorreia93
  • 13 de jan.
  • 2 min de leitura

A falha dada pelo CVE-2026-22610 - severidade de 8.5 (Alta) está presente no compilador de templates do Angular, podendo ser explorada através da injeção de URI's com javascript (data: text/javascript) ou usando URL's externos maliciosos. Estes compiladores às vezes usam propriedades para atributos como por exemplo <script [attr.href]=”userInput”, e são tratados como strings padrão, não como algo malicioso.


Consequências:

  • Execução de javascript nas sessões dos utilizadores

  • Roubo de sessões

  • Exfiltração de dados

  • Ações não autorizadas em nome de utilizadores autenticados


Versões corrigidas

19.2.18, 20.3.16, 21.0.7, or 21.1.0-rc.0



Prevenção para os developers

  • Evitar bindings dinânmicos em elementos <script> svg

  • Implementar validação do lado do servidor com base em "listas brancas" de URL's



Monitorização


Sentinel (kql):


let timeframe = 1h; //timeframe de 1h

CommonSecurityLog

| where TimeGenerated > ago(timeframe)

| where DeviceCustomString1_s =~ "HTTP" //ajustar de acordo com a nomenclatura dos ataques http

| where (UriQuery_s has "data:text/javascript" or

UriPath_s has "<svg" or

UriQuery_s has "<script" or

UriQuery_s has "xlink:href" or

UriQuery_s has "href=")

| extend SuspiciousPattern = case(

UriQuery_s has "data:text/javascript", "Potential data URI XSS",

UriQuery_s has "<script", "Embedded script in query",

UriQuery_s has "xlink:href", "SVG xlink reference",

UriQuery_s has "href=", "Generic href payload",

"Unknown pattern")

| summarize Count = count(), AnyIPs=make_set(SourceIP) by SuspiciousPattern

| where Count > 0



Splunk:

(index=web OR index=waf OR index=proxy OR index=iis OR index=azure)

(

uri_query="*<svg*" OR

uri_query="*xlink:href*" OR

uri_query="*data:text/javascript*" OR

uri_query="*javascript:*" OR

uri_query="*<script*" OR

uri_path="*<svg*" OR

uri_path="*xlink:href*" OR

uri="*data:text/javascript*" OR

request="*<svg*" OR

request="*xlink:href*" OR

request="*data:text/javascript*" OR

request="*javascript:*"

)

| eval AttackType=case(

like(_raw,"%data:text/javascript%"), "Data URI JavaScript",

like(_raw,"%xlink:href%"), "SVG xlink:href",

like(_raw,"%javascript:%"), "JavaScript URI",

like(_raw,"%<svg%"), "SVG Tag Injection",

like(_raw,"%<script%"), "Script Injection",

true(), "Unknown XSS Vector"

)

| stats count

min(_time) as firstSeen

max(_time) as lastSeen

values(uri) as uris

values(uri_query) as queries

values(src_ip) as src_ip

values(user_agent) as user_agents

by AttackType

| where count > 0





Referências

Comentários


POSTS RECENTES:
PROCURE POR TAGS:
bottom of page