"value":"En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: bpf: Error en la verificaci\u00f3n de la extensi\u00f3n de signo del paquete data/data_end/data_meta syzbot inform\u00f3 de un fallo del kernel debido a el commit 1f1e864b6555 (\"bpf: Manejar los accesos a miembros ctx de la extensi\u00f3n de signo\"). La raz\u00f3n se debe a la extensi\u00f3n de signo de la carga de 32 bits para el campo uapi del paquete data/data_end/data_meta. El c\u00f3digo original se ve as\u00ed: r2 = *(s32 *)(r1 + 76) /* load __sk_buff->data */ r3 = *(u32 *)(r1 + 80) /* load __sk_buff->data_end */ r0 = r2 r0 += 8 if r3 > r0 goto +1 ... Tenga en cuenta que la carga de __sk_buff->data tiene una extensi\u00f3n de signo de 32 bits. Despu\u00e9s de la verificaci\u00f3n y convert_ctx_accesses(), el c\u00f3digo asm final se ve as\u00ed: r2 = *(u64 *)(r1 +208) r2 = (s32)r2 r3 = *(u64 *)(r1 +80) r0 = r2 r0 += 8 if r3 > r0 goto pc+1 ... Tenga en cuenta que 'r2 = (s32)r2' puede hacer que la direcci\u00f3n __sk_buff->data del n\u00facleo sea inv\u00e1lida, lo que puede causar un error en tiempo de ejecuci\u00f3n. Actualmente, en el c\u00f3digo C, normalmente tenemos void *data = (void *)(long)skb->data; void *data_end = (void *)(long)skb->data_end; ... y generar\u00e1 r2 = *(u64 *)(r1 +208) r3 = *(u64 *)(r1 +80) r0 = r2 r0 += 8 if r3 > r0 goto pc+1 Si permitimos la extensi\u00f3n de signo, void *data = (void *)(long)(int)skb->data; void *data_end = (void *)(long)skb->data_end; ... el c\u00f3digo generado se ve as\u00ed r2 = *(u64 *)(r1 +208) r2 <<= 32 r2 s>>= 32 r3 = *(u64 *)(r1 +80) r0 = r2 r0 += 8 if r3 > r0 goto pc+1 y esto causar\u00e1 un error de verificaci\u00f3n ya que \"r2 <<= 32\" no est\u00e1 permitido ya que \"r2\" es un puntero de paquete. Para solucionar este problema en el caso r2 = *(s32 *)(r1 + 76) /* load __sk_buff->data */, este parche agreg\u00f3 una verificaci\u00f3n adicional en la funci\u00f3n de devoluci\u00f3n de llamada is_valid_access() para el acceso a los paquetes data/data_end/data_meta. Si esos accesos son con la extensi\u00f3n sign-extenstion, la verificaci\u00f3n fallar\u00e1. [1] https://lore.kernel.org/bpf/000000000000c90eee061d236d37@google.com/"