Múltiplas vulnerabilidades no Pixar OpenUSD afetam algumas versões do macOS

Pixar OpenUSD contém várias vulnerabilidades que os invasores podem explorar para realizar uma variedade de ações maliciosas.

Aleksandar Nikolic, da Cisco Talos, descobriu essas vulnerabilidades. 
Blog de Aleksandar Nikolic e Jon Munshaw.

OpenUSD significa “Open Universal Scene Descriptor”. A Pixar usa este software para vários tipos de tarefas de animação, incluindo a troca de cenas 3-D arbitrárias que são compostas de muitos elementos diferentes. Destinado a estúdios de animação profissional, o software foi projetado para escalabilidade e velocidade como um canal conectando vários aspectos do processo de animação digital. Em geral, espera-se que ele processe entradas confiáveis ​​na maioria dos casos de uso. Isso está em desacordo com as considerações de segurança. 

O próprio formato de arquivo USD é usado como um formato de arquivo de intercâmbio dentro dos frameworks ARKit (Realidade Aumentada), SceneKit (composição de cena 3-D) e ModelIO (modelagem e animação 3-D) da Apple. A decisão da Apple de usar o USD como base de sua plataforma de realidade aumentada torna-o uma superfície de ataque potencialmente interessante. Com a expansão dos aplicativos de RA nas plataformas macOS e iOS, isso se torna mais importante para os pesquisadores. 

Por padrão, no macOS, uma miniatura e um manipulador de visualização são registrados para formatos de arquivo USD por meio do QuickLook. O aplicativo padrão para abrir arquivos USD é o aplicativo Preview. No iOS, o aplicativo AR é o manipulador padrão. Um arquivo USD pode ser incorporado em uma página da web ou enviado em uma mensagem e um aplicativo AR é aberto quando o arquivo é clicado.

Este software contém várias vulnerabilidades diferentes, incluindo alguns bugs que podem corromper a memória de forma que um invasor possa realizar ações maliciosas adicionais na máquina da vítima. De acordo com nossa política de divulgação coordenada, a Cisco Talos trabalhou com a Pixar e a Apple para garantir que esses problemas sejam resolvidos e que uma atualização esteja disponível para os clientes afetados.

DETALHES DE VULNERABILIDADE

Vulnerabilidades de execução de código de representantes de formato de arquivo binário Pixar OpenUSD (TALOS-2020-1101 / CVE-2020-6155)

Existe uma vulnerabilidade de estouro de heap no Pixar OpenUSD 20.05 durante a análise de matrizes rep de valor compactado em arquivos USD binários. Um arquivo malformado especialmente criado pode disparar um estouro de heap, o que pode resultar na execução remota de código. Para acionar essa vulnerabilidade, a vítima precisa acessar um arquivo malformado fornecido pelo invasor.

Para obter mais informações sobre esta vulnerabilidade, leia o comunicado completo aqui .

Vulnerabilidade de vazamento de informações de strings de token de formato de arquivo binário Pixar OpenUSD (TALOS-2020-1103 / CVE-2020-13494)

Existe uma vulnerabilidade de estouro de heap na análise Pixar OpenUSD 20.05 de tokens de string compactados em arquivos USD binários. Um arquivo malformado especialmente criado pode disparar um estouro de heap que pode resultar em acesso à memória fora dos limites, o que pode levar à divulgação de informações. Esta vulnerabilidade pode ser usada para contornar as mitigações e ajudar na exploração futura. Para acionar essa vulnerabilidade, a vítima precisa acessar um arquivo malformado fornecido pelo invasor.

Para obter mais informações sobre esta vulnerabilidade, leia o comunicado completo aqui .

Vulnerabilidade de vazamento de informação de busca de deslocamento de formato de arquivo binário Pixar OpenUSD (TALOS-2020-1104 / CVE-2020-13495)

Existe uma vulnerabilidade explorável na maneira como o Pixar OpenUSD 20.05 lida com deslocamentos de arquivos em arquivos USD binários. Um arquivo malformado especialmente criado pode acionar um acesso arbitrário à memória fora dos limites que pode levar à divulgação de informações confidenciais. Essa vulnerabilidade pode ser usada para contornar atenuações e ajudar na exploração adicional. Para acionar essa vulnerabilidade, a vítima precisa acessar um arquivo fornecido pelo invasor.

Para obter mais informações sobre esta vulnerabilidade, leia o comunicado completo aqui .

Vulnerabilidade de vazamento de informações de valores de tipo de índice de formato de arquivo binário Pixar OpenUSD (TALOS-2020-1105 / CVE-2020-13496 – CVE-2020-13498)

Existe uma vulnerabilidade que pode ser explorada na maneira como o Pixar OpenUSD 20.05 lida e analisa certos tipos codificados. Um arquivo malformado especialmente criado pode desencadear um acesso arbitrário à memória fora dos limites, o que pode levar à divulgação de informações. Esta vulnerabilidade pode ser usada para contornar as mitigações e ajudar na exploração futura. Para acionar essa vulnerabilidade, a vítima precisa acessar um arquivo malformado fornecido pelo invasor.

Para obter mais informações sobre esta vulnerabilidade, leia o comunicado completo aqui .

Caminho descompactado do formato de arquivo binário Pixar OpenUSD que reconstrói a memória corrompida (TALOS-2020-1120 / CVE-2020-13520)

Existe uma vulnerabilidade de corrupção de memória fora dos limites na maneira como o Pixar OpenUSD 20.05 reconstrói caminhos de arquivos USD binários. Um arquivo malformado especialmente criado pode acionar uma modificação de memória fora dos limites que pode resultar na execução remota de código. Para acionar essa vulnerabilidade, a vítima precisa acessar um arquivo malformado fornecido pelo invasor.

Para obter mais informações sobre esta vulnerabilidade, leia o comunicado completo aqui .

Especificações do formato de arquivo binário Pixar OpenUSD corrompido na memória (TALOS-2020-1125 / CVE-2020-13524)

Existe uma vulnerabilidade de corrupção de memória fora dos limites na maneira como o Pixar OpenUSD 20.05 reconstrói caminhos de arquivos USD binários. Um arquivo malformado especialmente criado pode acionar uma modificação de memória fora dos limites que pode resultar na execução remota de código. Para acionar essa vulnerabilidade, a vítima precisa acessar um arquivo malformado fornecido pelo invasor.

Para obter mais informações sobre esta vulnerabilidade, leia o comunicado completo aqui .

Execução remota de código do caminho da camada Pixar OpenUSD SDF (TALOS-2020-1145 / CVE-2020-13531)

Existe uma vulnerabilidade de uso pós-livre na maneira como o Pixar OpenUSD 20.08 processa arquivos de texto USD de caminhos de referência. Um arquivo especialmente criado pode acionar a reutilização de uma memória liberada, o que pode resultar em mais corrupção de memória e execução arbitrária de código. Para acionar essa vulnerabilidade, a vítima precisa abrir um arquivo malformado fornecido pelo invasor.

Para obter mais informações sobre esta vulnerabilidade, leia o comunicado completo aqui .

Mergulho profundo da vulnerabilidade

USD define três tipos e extensões de arquivo distintos: “.usdz,” “.usda,” ou “.usdc.” Alguns arquivos também podem ter a extensão “.usd” abreviada. USDZ é um arquivo ZIP não compactado que pode conter modelos USD ou outros ativos, como texturas:

O arquivo de amostra “toy_biplane.usdz” acima é mostrado para conter “toy_biplane.usdc”, bem como as texturas que o acompanham no formato de arquivo PNG. 

Os formatos de arquivo USDA e USDC têm a mesma finalidade, mas são bastante diferentes. “A” em USDA significa ASCII, pois é uma representação textual do modelo ou cena do USD, potencialmente legível por humanos. USDC, por outro lado, é uma representação binária otimizada para armazenamento e carregamento eficientes. Esses dois são completamente intercambiáveis ​​e podem ter a extensão “.usd”, caso em que cabe ao software determinar o tipo de arquivo. 

Desde sua inclusão no macOS e no iOS, os analisadores de USD estão expostos a entradas potencialmente não confiáveis, o que foi nossa motivação para examinar mais de perto esses formatos de arquivo e procurar vulnerabilidades potenciais no software correspondente. 

Começamos analisando o formato do arquivo binário que, em suma, representa uma versão serializada de modelos, cenas ou ativos contidos em um arquivo USD. No nível superior, o formato do arquivo é muito simples. Ele consiste em um cabeçalho apontando para um índice que, por sua vez, aponta para seis seções diferentes: tokens, strings, campos, conjuntos de campos, caminhos e especificações. Cada uma dessas seções tem sua própria codificação, que pode ser tão simples quanto um array de strings (no caso de tokes) ou campos mais complexos que contêm diferentes tipos de dados codificados. Ao abrir um arquivo, todos eles estão sendo analisados ​​para reconstruir o modelo na memória. Como pode ser visto nas vulnerabilidades que divulgamos, há pouca validação dos dados. 

Como foi observado anteriormente, os arquivos USDC e USDA são intercambiáveis ​​e podem ser convertidos um no outro sem perda de informações. Existe até um utilitário no OpenUSD que faz isso (usdcat), pois é comum usar formato de arquivo binário para visualizações e formato baseado em texto para inspeção manual ou edições. A representação textual de ativos em USD é melhor descrita no seguinte exemplo:

Este exemplo define um modelo de cubo e usa alguns primitivos existentes. A representação textual parece uma linguagem de programação, mas é mais semelhante a uma linguagem de marcação. Ele começa com um cabeçalho que define o tipo e a versão do arquivo (usado para distinguir do formato de arquivo binário) e então prossegue para definir várias propriedades cujo significado é definido em outros esquemas. Em seguida, podemos ver a definição de um “prim” ou um primitivo chamado “malha” que por sua vez contém outra, aninhada, a definição do tipo Scope, que finalmente contém a definição de uma malha que representa um cubo. O cubo é então definido como uma malha de faces com um certo número de vértices e assim por diante. Essa estrutura aninhada é típica para arquivos USD. Salvo como “cube.usd”, este modelo pode ser referenciado ou importado em outros modelos ou cenas ou de outra forma “composto. ”Há um grande número de conceitos que podem ser expressos nesta linguagem, o que torna seu analisador e renderizador muito complexos. Isso o torna um alvo interessante para fuzzing baseado em gramática. 

As complexidades existentes em ambos os formatos de arquivo, bem como sua expressividade, podem levar a poderosas primitivas de exploração. O fato de que diferentes arquivos USD podem referenciar uns aos outros e serem empacotados em um único arquivo por meio do arquivo USDZ provaria ser muito valioso ao contornar as mitigações de exploração presentes nas plataformas modernas. 

Versões testadas

Talos testou e confirmou que essas vulnerabilidades, exceto para TALOS-2020-1145, afetam Pixar OpenUSD, versão 20.05 e Apple macOS Catalina, versão 10.15.3. TALOS-2020-1145 afeta as versões 20.08 e 10.15.6, respectivamente.

Cobertura

As seguintes regras SNORTⓇ detectarão tentativas de exploração. Observe que regras adicionais podem ser lançadas em uma data futura e as regras atuais estão sujeitas a alterações pendentes de informações adicionais de vulnerabilidade. Para obter as informações mais recentes sobre as regras, consulte o seu Firepower Management Center ou Snort.org.

Regras do Snort: 54415, 54416, 54467 – 54472, 54488 – 54493, 54922, 54923

Fonte: https://blog.talosintelligence.com/2020/11/vuln-spotlight-pixar-open-usd-nov-2020.html