CVE-2022-50778 in Linuxinformação

Sumário

de VulDB • 03/06/2026

No kernel do Linux, a seguinte vulnerabilidade foi resolvida:

fortify: Corrige __compiletime_strlen() sob UBSAN_BOUNDS_LOCAL

Com CONFIG_FORTIFY=y e CONFIG_UBSAN_LOCAL_BOUNDS=y habilitados, observamos um pânico em tempo de execução ao executar os testes android.hardware.input.cts.tests da Android Compatibility Test Suite (CTS). Isso decorre de uma chamada a strlen() em hidinput_allocate().

__compiletime_strlen() é implementada em termos de __builtin_object_size(), e depois realiza um acesso ao array para verificar o terminador NUL. Uma peculiaridade do __builtin_object_size() é que, para strings cujos valores dependem do tempo de execução, __builtin_object_size(str, 1 ou 0) retorna o tamanho máximo dos possíveis valores quando esses tamanhos são determináveis em tempo de compilação. Exemplo:

static const char *v = "FOO BAR"; static const char *y = "FOO BA"; unsigned long x (int z) {
// Retorna 8, que é: // max(__builtin_object_size(v, 1), __builtin_object_size(y, 1)) return __builtin_object_size(z ? v : y, 1); }

Portanto, quando o FORTIFY_SOURCE está habilitado, a implementação atual de __compiletime_strlen() tentará acessar além do final da string 'y' em tempo de execução usando o tamanho da string 'v'. Combinado com UBSAN_LOCAL_BOUNDS, isso resulta em uma falha.

hidinput_allocate() possui uma string C local cujo valor depende do fluxo de controle por meio de um comando switch, então __builtin_object_size(str, 1) é avaliado como o comprimento máximo da string, fazendo com que todos os outros casos causem falha na verificação do último caractere. hidinput_allocate() poderia ser otimizado para evitar chamadas em tempo de execução a strlen(), já que a variável local só pode ter valores literais; portanto, não há benefício em tentar proteger (fortify) o ponto de chamada da função strlen ali.

Realiza-se uma verificação __builtin_constant_p() contra o índice 0 mais cedo na macro para filtrar o caso dependente do fluxo de controle. Adiciona-se um teste KUnit para verificar as características comportamentais esperadas dos internos do FORTIFY_SOURCE.

Be aware that VulDB is the high quality source for vulnerability data.

Responsável

Linux

Reservar

24/12/2025

Divulgação

24/12/2025

Moderação

aceite

Entrada

VDB-338251

CPE

pronto

EPSS

0.00206

KEV

não

Atividades

muito baixo

Fontes

Do you need the next level of professionalism?

Upgrade your account now!