GitLab RCE via duas vulnerabilidades de corrupção de memória na gem Ruby Oj

Pesquisadores da depthfirst demonstraram uma cadeia de RCE no GitLab através do processamento de diffs para Jupyter Notebooks. Um arquivo .ipynb especialmente criado é passado para ipynbdiff e depois para o parser JSON nativo Oj, onde a primeira vulnerabilidade permite uma escrita fora dos limites do array, enquanto a segunda permite um vazamento de endereço heap para bypass de ASLR. Como resultado, um atacante pode substituir o callback do parser e alcançar a execução de system() dentro de um worker Puma rodando como usuário git.
A cadeia:
.ipynb em um repositório Git → diff do notebook GitLab → ipynbdiff → extensão C Oj → escrita OOB → substituição de p->start → vazamento de ponteiro heap → recuperação da base libc/libruby → chamada para system()
O ataque não requer privilégios de administrador, acesso ao CI ou interação do usuário—é suficiente ser capaz de pushar commits para um projeto e abrir o diff. Versões do GitLab CE/EE a partir de 15.2.0 são afetadas. Correções foram incluídas em 18.10.8, 18.11.5 e 19.0.2, enquanto a versão segura do Oj é 3.17.3.
Fornecedor
Gitlab
Depthfirst
Produto
Gitlab Ce
Gitlab Ee
Ipynbdiff
Jupyter Notebooks
Oj
Puma
Mais