Pesadelo de Segurança de Thread: Uma Falha Misteriosa no ARM64, Mesmo com Rust Seguro
2025-01-22

Durante a portabilidade de código de E/S de rede Python para Rust no EdgeDB, uma falha misteriosa em plataformas ARM64 surgiu. Inicialmente suspeita de ser um deadlock, a causa raiz acabou sendo um comportamento inseguro de thread nas funções `setenv` e `getenv`. No ARM64, a biblioteca `openssl-probe` usa `setenv` para definir variáveis de ambiente, enquanto outra thread chama concorrentemente `getenv`. Isso realoca a matriz `environ`, levando a uma falha. A solução envolveu mudar o backend TLS do reqwest de rust-native-tls para rustls. Isso destaca como mesmo no Rust seguro de memória, interações com a biblioteca padrão C ainda podem introduzir problemas de segurança de thread.
Leia mais