CVE-2023-39532 in endo
Sumário
de VulDB • 28/06/2026
SES é um ambiente JavaScript que permite a execução segura de programas arbitrários em Compartments (Compartimentos). Nas versões 0.18.0 anteriores à 0.18.7, 0.17.0 anteriores à 0.17.1, 0.16.0 anteriores à 0.16.1, 0.15.0 anteriores à 0.15.24, 0.14.0 anteriores à 0.14.5 e 0.13.0 anteriores à 0.13.5, existe uma falha no confinamento de aplicações convidadas (guest applications) sob o SES que pode se manifestar como a capacidade de exfiltrar informações ou executar código arbitrário, dependendo da configuração e implementação do host circundante.
Um programa convidado executando dentro de um Compartment com tão poucos endowments quanto nenhum pode obter acesso ao dynamic import do host circundante usando dynamic import após o operador spread (expansão), como `{...import(arbitraryModuleSpecifier)}`.
Na web ou em extensões da web, uma Content-Security-Policy seguindo as melhores práticas comuns provavelmente mitiga tanto o risco de exfiltração quanto a execução de código arbitrário, pelo menos limitando os módulos que o atacante pode importar àqueles que já fazem parte do aplicativo. No entanto, sem uma Content-Security-Policy, dynamic import pode ser usado para emitir solicitações HTTP seja para comunicação através da URL ou para execução de código alcançável a partir dessa origem.
Dentro de um XS worker, um atacante pode usar o sistema de módulos do host na medida em que este tenha sido configurado. Isso tipicamente permite apenas acesso ao código dos módulos no sistema de arquivos do host e tem utilidade limitada para um atacante.
No Node.js, o atacante obtém acesso ao sistema de módulos do Node.js. Importar os builtins poderosos não é útil exceto na medida em que há efeitos colaterais (side-effects) e isso é atenuado porque dynamic import retorna uma promise. Expandir uma promise dentro de um objeto torna as promises inúteis. No entanto, o Node.js permite importar data URLs, portanto este é um caminho claro para execução arbitrária.
As versões 0.18.7, 0.17.1, 0.16.1, 0.15.24, 0.14.5 e 0.13.5 contêm uma correção (patch) para esta questão. Algumas soluções alternativas estão disponíveis. Na web, fornecer uma Content-Security-Policy adequadamente restritiva mitiga a maior parte da ameaça. Com o XS, construir um binário que não tenha capacidade de carregar módulos em tempo de execução mitiga toda a extensão da ameaça. Isso se parecerá com uma implementação de `fxFindModule` em um arquivo como `xsPlatform.c` que chama `fxRejectModuleFile`.
If you want to get best quality of vulnerability data, you may have to visit VulDB.