D8VK, una implementación de Direct3D 8 para DXVK

D8VK

D8VK es una implementación de Direct3D 8 que permite ejecutar aplicaciones 3D en Linux usando Wine.

Hace pocos días se dio a conocer el lanzamiento de la primera versión estable del proyecto «D8VK 1.0», que ofrece una implementación de la API de gráficos Direct3D 8 que funciona a través de la traducción de llamadas a la API de Vulkan y permite usar Wine o Proton para ejecutar aplicaciones y juegos 3D desarrollados para Windows en Linux que están vinculados a la API de Direct3D 8.

Como muchos de ustedes sabrán en Linux contamos con VKD3D-Proton para la traducción de Direct3D 12 en Vulkan, ademas de que tambien contamos con Steam Play que usa DXVK para implementar las API de Direct3D 9/10/11 sobre Vulkan, pero para la antigua implementación de Direct3D 8, no había algo en concreto.

Es por ello que nace D8VK, que es la implementación de la antigua API de Microsoft Direct3D 8 sobre Vulkan para mejorar la experiencia de los juegos más antiguos.

D8VK 1.0 está marcado como el primer lanzamiento del proyecto, adecuado para uso y probado en cientos de juegos. En comparación con los proyectos WineD3D y d3d8to9, que utilizan la traducción de Direct3D 8 a OpenGL y Direct3D 9, el proyecto D8VK demuestra un mejor rendimiento, estabilidad y compatibilidad con los juegos.

Por ejemplo, cuando se probó en el paquete 3DMark 2001 SE, el proyecto D8VK obtuvo 144660 puntos, la combinación d3d8to9 y dxvk – 118033 y WineD3D – 97134.

El lanzamiento de D8VK 1.0 presenta d3d8.dll(d3d9 está vinculado estáticamente), asi como tambien un nuevo procesador por lotes personalizado para ciertos juegos con comportamiento indefinido.

Ademas de ello, tambien se destaca que admite la anulación de la declaración del sombreador de vértices para juegos con un comportamiento indefinido y que los búferes de vértices ahora se pueden almacenar en el grupo administrado automáticamente para mejorar el rendimiento y evitar problemas de orden de escritura.

Tambien se destaca que se implementa la compatibilidad con la compilación en MSVC asi como tambien que admite consultas de GetInfo y que los tipos de bloque de estado ahora son compatibles.

De los demás cambios que se destacan:

  • Tamaños de descripción de superficie correctos según el formato
  • Permitir preservar la instalación actual de Proton
  • Innumerables configuraciones específicas del juego y características y ajustes menores
  • Se corrigió un error por el que CreateTexture intentaba envolver una textura nula
  • Se corrigieron los backbuffers que no se almacenan en caché ni se hace referencia al dispositivo propietario
  • Texturas, flujos e índices fijos que no se borran al reiniciar
  • Ubicación fija de Direct3DCreate8 en d3d8.def
  • Se corrigió el conteo de referencias para los objetivos de representación, las plantillas de profundidad y las texturas.
  • Se corrigieron los sombreadores de píxeles nulos que no se recordaban
  • Se corrigieron los objetivos de representación y las plantillas de profundidad que no se almacenan en caché
  • Se corrigió el error si el cliente intenta habilitar SWVP en un dispositivo de hardware
  • Dispositivos fijos que no se liberan
  • Se corrigió la falla de segmento en el dispositivo de liberación con texturas enlazadas

Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.

Debes saber que el código del proyecto está escrito en lenguaje C++ y se distribuye bajo la licencia Zlib. El código base del proyecto DXVK con la implementación de Direct3D 9, 10 y 11 sobre Vulkan se utilizó como base para el desarrollo.

¿Como instalar D8VK en Linux?

Para aquellos que estén interesados en poder instalar D8VK, deben saber que su implementación es bastante sencilla y no requiere de mucho. Basta con abrir una terminal para poder obtener la nueva versión. En ella vamos a teclear el siguiente comando:

git clone https://github.com/AlpyneDreams/d8vk.git

O si prefieres realizar la descarga desde tu navegador (solo debes descomprimir el archivo y posicionarte en una terminal dentro de la carpeta) lo puedes hacer dando clic en este enlace.

Hecho esto, ahora vamos a ingresar al directorio con:

cd d8vk

Y procedemos a realizar la implementación de d8vk según sea el caso. Para implementarlo con Wine, debemos teclear lo siguiente:

./setup_d3d8.sh install --no-proton

O en el caso de querer implementarlo con Proton, el comando que deben teclear es el siguiente:

./setup_d3d8.sh install

Si quieres conocer más al respecto sobre su uso o instalación para casos particulares, puedes consultar el siguiente enlace.

from Linux Adictos https://ift.tt/UgyEhK2
via IFTTT

AlmaLinux 9.2 ya fue liberada y esas son sus novedades

AlmaLinux 9.2

Turquoise Kodkod es el nombre clave de la nueva versión de AlmaLinux 9.2

Tras el lanzamiento oficial de Red Hat Enterprise Linux 9.2, se dio a conocer el lanzamiento de la nueva versión de la distribución de linux, «AlmaLinux 9.2«, con nombre clave «Turquoise Kodkod», llega sincronizada con la nueva versión de RHEL y que contiene todos los cambios propuestos para esta versión.

Para aquellos que desconocen de la distribucion, deben saber que AlmaLinux fue fundada por CloudLinux en respuesta al final prematuro del soporte para CentOS 8 por parte de Red Hat (las actualizaciones para CentOS 8 se suspendieron a fines de 2021, y no en 2029, como esperaban los usuarios).

El proyecto es supervisado por una organización independiente sin fines de lucro, la Fundación OS de AlmaLinux, que se creó para desarrollarse en un entorno neutral impulsado por la comunidad utilizando un modelo de gobierno similar al del Proyecto Fedora.

Principales novedades de AlmaLinux 9.2

Tal y como se menciono anteriormente, AlmaLinux totalmente compatible binariamente con Red Hat Enterprise Linux y se puede usar como reemplazo de RHEL 9.2 y CentOS 9 Stream. Los cambios se reducen al cambio de marca, la eliminación de paquetes específicos de RHEL.

De los cambios que se destacan de este nuevo lanzamiento de AlmaLinux 9.2 se destaca la inclusión del Kernel de Linux 5.14 con el cual se proporciona rendimiento, estabilidad y soporte mejorados para hardware moderno, ademas de que se introduce mejoras y funciones a la base de la nube híbrida y ayuda a entregar cargas de trabajo, aplicaciones y servicios para múltiples entornos de forma más rápida y con menos esfuerzo.

Ademas de ello, se destaca que AlmaLinux 9.2 incluye actualizaciones de seguridad, como la función del sistema realmd, un perfil SCAP y contenido de Ansible para verificaciones mejoradas del sistema para simplificar la gestión de la seguridad y el cumplimiento.

Tambien se destaca que los desarrolladores continúan trabajando en mejorar el rendimiento, la seguridad y la facilidad de uso, ya que en este lanzamiento se añadió el soporte para tamaños de página de 64k para la arquitectura ARM, que permite la implementación del sistema operativo en más hardware y maximiza el rendimiento de grandes cargas de trabajo de conjuntos de datos, capacidades ampliadas de roles del sistema para permitirle automatizar aún más tareas de administración.

Por otra parte, se destacan las mejoras en los flujos de aplicaciones proporcionan compiladores, lenguajes de tiempo de ejecución, bases de datos y actualizaciones del servidor web.

En la consola web tambien se han realizado mejoras, ya que se implementan los nuevos roles del sistema facilitan la automatización y estandarización de los sistemas. En cuanto a los contenedores, las nuevas capacidades permiten el desarrollo y la gestión de implementaciones en contenedores con mayor facilidad.

De las demás actualizaciones y cambios que se destacan de este nuevo lanzamiento:

  • Python 3.11
  • nginx 1.22
  • PostgreSQL 15
    Componentes actualizados:
  • Git 2.39.1
  • Git LFS 3.2.0
  • GCC 11.3.1
  • glibc 2.34
  • binutils 2.35.2
    Actualizaciones de herramientas de rendimiento y depuradores:
  • GDB 10.2
  • Valgrind 3.19
  • SystemTap 4.8
  • Dyninst 12.1.0
  • elfutils 0.188
    Herramientas de monitoreo de rendimiento actualizadas:
  • PCP 6.0.1
  • Grafana 9.0.9
    Actualizaciones del compilador:
  • GCC Toolset 12
  • LLVM Toolset 15.0.7
  • Rust Toolset 1.66
  • Go Toolset 1.19.6
    Actualizaciones de seguridad:
  • La biblioteca de comunicaciones seguras de OpenSSL se actualizó a la versión 3.0.7.
  • Los paquetes de espacio de usuario de SELinux se actualizaron a la versión 3.5.
  • Keylime fue actualizado a la versión 6.5.2
  • OpenSCAP se modificó a la versión 1.3.7.
  • La Guía de seguridad de SCAP se modificó a la versión 0.1.66.
  • Se agregó una nueva regla para la terminación de sesiones inactivas a SCAP.
  • Clevis ahora acepta tokens externos.
  • El registro cifrado con TLS de Rsyslog ahora admite varios archivos de CA.
  • Los privilegios de Rsyslog están limitados para minimizar la exposición a la seguridad.
  • El marco fapolicyd ahora proporciona filtrado de la base de datos RPM.
  • El sistema ahora usa el certificado AlmaLinux EV Code Sign Secure Boot actualizado.

Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.

Descargar y obtener AlmaLinux 9

Las imágenes de instalación están preparadas para las arquitecturas x86_64, ARM64, ppc64le y s390x en forma de arranque (804 MB), mínimo (1,7 GB) e imagen completa (8,8 GB). Más adelante se formarán compilaciones en vivo con GNOME, KDE, MATE y Xfce, así como imágenes para placas Raspberry Pi, contenedores y plataformas en la nube.

from Linux Adictos https://ift.tt/mHtVGvc
via IFTTT

Fueron detectadas dos vulnerabilidades en el Kernel de Linux que permitían aún usuario elevar sus privilegios 

vulnerabilidad

Si se explotan, estas fallas pueden permitir a los atacantes obtener acceso no autorizado a información confidencial o, en general, causar problemas

Hace pocos días se dio a conocer la noticia de que fueron detectadas dos vulnerabilidades en los subsistemas del kernel de Linux, Netfilter e io_uring, las cuales permiten a un usuario local elevar sus privilegios en el sistema.

La primera de ellas es la vulnerabilidad (CVE-2023-32233) que fue detectada en el subsistema Netfilter y provocada por acceso a memoria use-after-free en el módulo nf_tables, que asegura el funcionamiento del filtro de paquetes nftables.

Este fallo se debe a que netfilter nf_tables permite actualizar su configuración por solicitudes lotes que agrupan múltiples operaciones básicas en transacciones atómicas.

El problema se ha reproducido en varias versiones del kernel de Linux, incluyendo Linux 6.3.1 (estable actual) y la vulnerabilidad se puede aprovechar enviando solicitudes especialmente diseñadas para actualizar la configuración de nftables. Se menciona que el ataque requiere acceso a nftables, que se pueden obtener en un espacio de nombres de red separado si tiene los derechos CLONE_NEWUSER, CLONE_NEWNS o CLONE_NEWNET (por ejemplo, si puede ejecutar un contenedor aislado).

Sobre este fallo, el investigador que identificó el problema prometió posponer por una semana la publicación de información detallada y un ejemplo de un exploit funcional que proporciona un shell root.

En un escenario específico, una solicitud de lote no válida puede contener una operación que elimina implícitamente un conjunto anónimo nft existente seguido de otra operación que intenta actuar sobre el mismo conjunto nft anónimo después de que se elimine. En el escenario anterior, un ejemplo de la operación anterior es eliminar una regla nft existente que utiliza un conjunto anónimo nft. Y un ejemplo de esta última operación es un intento para eliminar un elemento de ese conjunto anónimo de nft después de que el conjunto sea eliminado alternativamente, la última operación podría incluso intentar eliminar explícitamente ese conjunto anónimo de nft nuevamente. 

Como ya se menciono al inicio, esto fue hace ya varios días y el exploit y la información ya fue divulgada. El exploit asi como los detalles de este lo pueden consultar en el siguiente enlace.

El segundo fallo detectado, fue la vulnerabilidad (CVE-2023-2598) en la implementación de la interfaz de E/S asíncrona io_uring incluida en el kernel de Linux desde la versión 5.1.

El problema se debe a un error en la función io_sqe_buffer_register, que permite el acceso a la memoria física fuera de los límites de un búfer asignado estáticamente. El problema aparece solo en la rama 6.3 y se solucionará en la próxima actualización 6.3.2.

Se menciona que la idea detrás de la confirmación original es que, en lugar de dividir grandes páginas que están registradas como un búfer en entradas bvec individuales, se puede tener una sola entrada bvec para todas las partes de la página que están en el búfer. En concreto, si todas páginas en el mapa de búfer utilizan la primera estructura de página y la longitud del búfer en una sola entrada bvec en lugar de mapeando cada página individualmente.

Entonces, bvec se extenderá mucho más allá de la página única que en realidad es permitido tocar. Más tarde, IORING_OP_READ_FIXED y IORING_OP_WRITE_FIXED nos permite leer y escribir en el búfer (es decir, la memoria apuntada a por el bvec) a voluntad. Esto permite el acceso de lectura/escritura a la física memoria detrás de la única página que realmente tenemos.

En la publicación de la vulnerabilidad se menciona los pasos de reproducción de error:

1. Crear un memfd
2. Colocar en error una sola página en ese descriptor de archivo
3. Usar MAP_FIXED para mapear esta página repetidamente, en ubicaciones consecutivas
4. Registrar toda la región que acaba de llenar con esa página como
un búfer fijo con IORING_REGISTER_BUFFERS
5. Usar IORING_OP_WRITE_FIXED para escribir el búfer en algún otro archivo
(lectura OOB) o IORING_OP_READ_FIXED para leer datos en el búfer (
escritura OOB).

Finalmente cabe mencionar que ya se encuentra disponible  un prototipo de exploit funcional (CVE-2023-2598) para realizar pruebas, lo que le permite ejecutar código con privilegios de kernel.

La vulnerabilidad (CVE-2023-32233) se solucionó en la actualización 6.4-rc y se puede seguir la corrección de la vulnerabilidad en las distribuciones en las páginas: DebianUbuntuGentooRHELFedoraSUSE/openSUSEArch.

from Linux Adictos https://ift.tt/vEDTbOA
via IFTTT