Vulnerabilidade no Python que permite executar comandos do sistema a partir de scripts isolados

Foi publicado um método de contorno para sistemas de execução isolada de código em Python, baseado em um erro antigo, que surgiu no Python 2.7, identificado em 2012 e ainda não corrigido no Python 3. Esse erro permite, por meio de um código especialmente elaborado em Python, iniciar um acesso à memória já liberada (Use-After-Free) no CPython. Inicialmente, acreditava-se que esse erro não apresentava uma ameaça à segurança e que apenas em casos muito raros, normalmente artificiais, poderia levar a um encerramento anômalo do script.

Um pesquisador de segurança sob o pseudônimo kn32 se interessou pelo problema e conseguiu desenvolver um exploit funcional que permite executar qualquer comando do sistema, sem ter acesso direto a métodos como os.system. O exploit está implementado em puro Python e funciona sem importar bibliotecas externas ou instalar um manipulador 'code.__new__'. Ele utiliza apenas 'builtin.__id__', que geralmente não é bloqueado. Do ponto de vista prático, o código proposto pode ser utilizado para contornar mecanismos de isolamento em diversos serviços e ambientes (por exemplo, em ambientes de aprendizagem, shells online, manipuladores integrados, etc.), que permitem a execução de código em Python, mas restringem chamadas disponíveis e não permitem acessos a métodos como os.system.

O código proposto é análogo à chamada de os.system, funcionando através da exploração de uma vulnerabilidade no CPython. O exploit funciona com todas as versões do Python 3 em sistemas com arquitetura x86-64 e demonstra funcionamento estável no Ubuntu 22.04, mesmo com modos de proteção PIE, RELRO e CET ativados. A execução consiste em obter informações do código em Python sobre o endereço de uma das funções no código executável do CPython. Com base nesse endereço, é calculado o endereço base do CPython na memória e o endereço da função system() na instância do libc carregada na memória. Finalmente, é iniciada uma transição direta para um endereço específico de system substituindo o ponteiro do primeiro argumento pela string 'bin/sh'.

Vulnerabilidade no Python que permite executar comandos do sistema a partir de scripts isolados


Fonte: opennet.ru
Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster