Fuente de imagen https://www.openbsd.org/images/puffy74.gif.
Este es el tercer posts donde se informa sobre el anuncio la nueva liberación del sistema operativo super seguro llamado OpenBSD, espero que lo disfruten.
Mejoras en el Instalador, actualización y cargador de arranque:
- En el disco de ram (ramdisk) en arm64, se simplifica el copiado del firmaware apple para hacer más sencillo el agregar nuevo firmware.
- En armv7 y arm64, se silencian mensaje informativos desde dd(1) Cuando se llena de ceros el primer Megabyte de un disco del primer 1MB. Use dispositivos de caracter no dispositivos de bloques con dd(1) como en otras arquitecturas.
- Se refactorizó el código de md_installboot() en armv7 y arm64 para estar más alineado con otras arquitecturas.
- Mejoró el dialogo del instalador sin afectar archivos autoinstall(8).
- Se activó ufshci(4) en el medio de instalación de arm64.
- En las tarjetas arm64 pine64, se dejó de escribir el firmaware pine64 al disco duro.
- Cuando el medio no es GPT ni MBR en installboot(8), Se asume que OpenBSD ocupa el disco completo iniciando desde el sector 0.
- Se intenta no desbordar el ramdisk cuando se extrae el firmware en sistemas Apple arm64.
- Se agregó soporte para cargar archivos EFI desde la Partición de Sistema.
- Se corrigió un bug en el manejo de discos SCSI en el cargador de arranque en la arquitectura luna88k.
- En luna88k, se implementó el mecanismo de señalización chmod() para
/bsd.upgrade
para prevenir re-actualizar, como en otras arquitecturas. - Se mejoró el soporte de discos softraid(4) en el instalador:
- Se crea root al arrancar instalaciones softraid(4) directamente de la caja en Raspberry Pis (arm64).
- Se soporta instalaciones con root en softraid(4) en arm64, probado en Pinebook Pro, Raspberry Pi 4b, y SolidRun CEX7.
- En arquitectura riscv64, se activa softraid(4) en el kernel de ramdisk y soporta instalaciones con root en softraid(4)
- Cuando se instala en un softraid(4) encriptado, determine el disco para colocar el dispositivo root automáticamente y lo hace el dispositivo por defecto ya que es la única opción legítima.
- Se agregó arm64 a la lista de arquitecturas con soporte para encripción guiada de disco.
- Retiene particiones de sistema EFI existentes en sistemas con particiones APFSISC (arm64 Apple M1/M2) durante la instalación con root en softraid(4).
- Se activa softraid(4) en ramdisk en la arquitectura powerpc64.
Mejoras en la seguridad:
- Se activa el rastero indirecto de ramas(IBT) en amd64 y en Identificación de Rama Objetivo (Branch Target Identification (BTI)) en arm64 tanto en el kernel como en el entorno de usuario. En hardware que soporte esta característica, esto ayuda a que se cumpla la integridad del flujo de control por medio de hacer que código malicioso no pueda saltar en medio de una función.
- En la arquitectura arm64, activa la autenticación de puntero (pointer authentication (PAC)) en el entorno de usuario en aquellas máquinas donde funciona correctamente. Este ayuda a que se cumpla la integridad del control de flujo por medio de asegurarse que código malicioso no pueda manipular la dirección de retorno de una función.
- Junto con retguard estas dos características protegen contra ataques ROP. El compilador por defecto de base es clang, porta clang y porta gcc (así como también algunos compiladores de la familia de lenguaje no C en los ports) y han sido cambiados para activar estas características por defecto. Como un resultado de ello, la vasta mayoría de programa en OpenBSD (y todos los programas en el sistema base) corren con estas características de seguridad activadas.
- Se cambiaron los tamaños en malloc(3) para que sean más granulares: los tamaños están más cerca al tamaño de espacio de asignación solicitado.
- En malloc(3), se verifican todos los pedazos en la lista de liberación retrasada para escribir después de liberar (write-after-free).
- El programa shutdown(8) ahora puede puede ser ejecutado por miembros en el nuevo grupo
_shutdown
. La idea es que administradores de sistema puedan retirar usuarios del grupo excesivamente poderoso deoperator
, el cual proporciona permisos de lectura en nodos de dispositivo de disco. - Usar unveil(2), restringe a patch(1) el acceso al sistema de archivos del directorio actual incluyendo los subdirectorios, TMPDIR, y nombres de archivo dados en la línea de comando.
- En ksh(1), escapa consistentemente caracteres de control cuando se despliegan terminaciones de nombres de archivo, inclusive cuando hay multiples coincidencias.
Cambios en la pila de red:
- Se sincroniza el uso de getuptime(9) en el código de Descubrimiento de Vecinos (Neighbour Discovery (ND)) con ARP.
- En el código de reenvío IPv6, llama a getuptime(9) una vez por consistencia con IPv4.
- ARP tiene una cola de paquetes que deberían ser enviados despues de la resolución del nombre. El descubrimiento de Vecinos (ND6) solo retiene un solo paquete. Se unificó el código, se agregó una cola a ND6 y se hizo que el código sea seguro en MP.
- Se implementó un nuevo sysctl(2)
net.inet6.icmp6.nd6_queued
para mostrar el número de paquetes en espera de una respuesta ND6, análogo a ARP. - Cuando se configuran nuevas direcciones IPv6 en una interfase, un router ascendente no sabe a dónde enviar el tráfico. Envía un anuncio de vecino no solicitado, cómo se describe en RFC9131, a todos los ruteadores en la dirección multicast de tal forma que todos los ruteadores en el mismo enlance aprenderan la ruta de regreso a la dirección.
- Se implementó la porción entrante de RFC9131. Deja que los ruteadores creen nuevas entradas de vecinos en caché cuando reciba anuncios de vecinos válidos.
- Se implementó soporte inicial para descarga de segmentación TCP (TSO) y descarga de recepció larga TCP (LRO):
- Si el controlador de una interface de red soporta TSO, no divide el paquete en la pila de red, si no que lo pasa abajo a la capa de interfase para TSO.
- Proporciona una implementación de software TSO que será usada como medida de contigencia si el hardware de red no soporta TSO.
- Proporciona un nuevo nodo sysctl(2) nodo net.inet.tcp.tso de tal forma que TSO puede ser desactivado globalmente. Por defecto, está activada en todas las interfaces que la soporten.
- En ifconfig(8), se despliega por separado hwfeatures para TSOv4, TSOv6, y LRO y proporciona un parámetro -tcplro para desactiva LRO en base a interfase individual.
- Activar el TSO y el reenvío de paquetes LRO vía TSO en ix(4).
- En ix(4), asigna menos memoria para buffers tx.
- Se aceleró la transferencia TCP en interfaces lo(4) por medio de usar TSO y LRO.
- Se activó LRO por defecto en controladores de red. LRO permite recibir paquetes de agregado más grandes que el MTU. Recibir flujos TCP se vuelve mucho más rápido. Actualmente solo dispositivos ix(4) y lo(4) soportan LRO, E ix(4) está limitado a IPv4 y hardware más nuevo que el antiguo modelo 82598.
- Los siguientes cambios fueron hechos al firewall pf(4):
- Se aceleró la solicitud ioctl(2) DIOCGETRULE de tal forma que pfctl(8) puede recuperar todas las reglas pf(4) desde el kernel en tiempo lineal en lugar de tiempo cuadrático. Para proteger el kernel de agotamiento de memoria, los procesos en el entorno de usuario ahora tiene que liberar tickets obtenidos con DIOCGETRULES por medio de emitir la nueva solicitud ioctl(2) DIOCXEND. En particular,snmpd(8) y systat(1) ahora hacen eso.
- Se relajó la implementación de la regla
pass all
de tal forma que los anuncios de vecinos están permitidos en cualquier dirección. - Cuando se redirigen paquetes IP generados localmente al entorno de usuario con reglas divert-packet, los paquetes pueden no tener suma de verificación debido a desbordamiento inferior de hardware. Calcula las sumas de verificación en ese caso.
- Se corrigió un bug dónde nat-to podría fallar al insertar un estado, debido a un conflicto en el número de puerto de orígen seleccionado.
- Ya no ignora acciones
keep state
ynat-to
para respuestas de error no solicitadas ICMP. Se ajusta la lógica de regla de coincidencia de tal forma que las respuestas de error ICMP ya no coinciden con la reglakeep state
. En escenarios típicos, los errores ICMP (si se solicitan) deberían coincidir con el estado existente. El cambio afectara a firewalls que lidian con routers asimétricos. En esos casos la acciónkeep state
debería relajarse a la acciónno state
o debería ser relajada a una nueva reglas de estado poco riguroso o nuevono state
para coincidir explicitamente errores ICMP deberían ser agregados.
- No calcula sumas de verificación de IP, TCP, y UDP en interfases lo(4).
- Se convirtió el contador de tiempo tcp_now() hasta los 64 bits para evitar los de 32 bits que se enredan despues de cambiar por índice y este es un tcp_now() que ahora maneja intervalos de milisegundos.
- Se agregó soporte inicial para VPNs IPsec basados en ruteo.
En vez de usar flujos IPsec (también conocidos como, entradas en la base de datos de políticas de seguridad IPsec) para decidir cual tráfico debería se encapsulada en IPsec y enviada a un par (peer), esto cambia las asociaciones de seguridad (SAs) de tal forma que ellos pueden ofrecer también a una interfase tunel. Cuando el tráfico es enrutado a traves de esa interfase tunel, un SA IPsec esta bloqueada y usada para encapsular tráfico antes de ser enviado al par (peer) en el SA. Cuando el tráfico es recibido desde un par (peer) usando una interfase SA, la interfase específicada es bloqueada y el paquete es entregado a él de tal forma que los paquetes parecen venir del tunel. - Se agregó sec(4) para soportar ruteo basado en VPNs IPsec.
- Introduce un conteo de referencia para entradas de cache TCP syn.
- Se hace que wg(4) copie la prioridad desde el paquete interno hacia el paquete encriptado externo, de tal forma que los paquetes de prioridad más alta son escogidos desde colas hfsc para transmisión temprana.
Daemons de ruteo y otras mejoras de red en el entorno de usuario:
- El soporte IPsec fue mejorado:
- En iked(8), se soporta ruteo basado en tuneles sec(4).
- En iked(8), se agrega soporte para verificar la cadena X.509 de cargas útiles CERT.
- En iked(8), no deja fugar memoria cuando recibe una carga útil CERT para la auténticación de la llave pública pubkey auth o para una codificación CERT inválida.
- En iked(8), no permite la fuga de un descriptor de archivo si open_memstream(3) falla mientras intenta activar un hijo (child) SA.
- Mientras se intenta identificar una firma ECDSA en iked(8), detecta correctamente error de codificación DER con i2d_ECDSA_SIG(3).
- En ipsecctl(8), se soporta ruteo basado en negociación VPN IPsec con sec(4).
- En isakmpd(8), se tiene soporte para configurar interfase SAs para ruteo basado en VPNs IPsec.
- En isakmpd(8) modo rápido, no se cae con un acceso de apuntador
NULL
cuando una descripción de grupo es especificado pero es inválido, no es soportado, o la asignación de memoria o generación de llave falla. - En isakmpd(8), evita una liberación doble en el improbable caso de que EC_KEY_check_key(3) falle justo después de generar un nuevo par de llaves.
- Permite la compilación de isakmpd(8) con una biblioteca libcrypto que tiene binary field support ("GF2m") eliminado.
- En bgpd(8),
- Se agregó la primera versión de soporte flowspec. Ahora solamente es posible el anuncio de reglas flowspec.
- Actualización ASPA soporta el seguimiento draft-ietf-sidrops-aspa-verification-16 y draft-ietf-sidrops-aspa-profile-16 por medio de hacer que ASPA haga busquedas en tablas agnósticas AFI.
- Se volvió a trabajar en la generación de mensaje UPDATE para que use la nueva AP ibuf en lugar de la solución anterior enrollada a mano.
- Se corrigó la coincidencia
ext-community * *
la cual le afecta la coincidencia lo cual afecta también a los filtros eliminando todas las comunidades externas (ext-communities). - Se mejoró y extendió el parseador bgpctl para manejar comandos como
bgpctl show rib 192.0.2.0/24 detail
. También agregó varios comandos flowspec específicos. - Se introdujo un semaforo para proteger datos de sesión RTR intermitentes de ser publicadas en el RDE.
- Se limitó el tamaño del buffer de conector a 64K para todas las sesiones. Se Limitó el tamaño del buffer a un tamaño razonable que asegure que no muchas actualizaciones terminen en la cola de la pila TCP.
- Se ajustó el ejemplo de regla de filtrado
GRACEFUL_SHUTDOWN
en el ejemplo de configuración para que coincida solamente en sesiones ebgp.
- rpki-client(8) vió algunos cambios:
- Se logró una mejora en el rendimiento del 30% al 50% a traves de la característica de validación de certificado de cadenas parciales de libcrypto. Certificados CA no heredados ya validados ahora son marcados como raices de confianza. De esta manera, éstas pueden asegurar que recursos delegados a una hoja sean cubiertos apropiadamente, y al mismo tiempo la mayoría de las rutas de validación sean acortadas significativamente.
- Se agregó soporte para gzip y descomprimir codificación de contenido HTTP compactado. Esto permite a los servidores web enviar RRDP XML en forma comprimida, ahorrando cerca del 50% de ancho de banda.
- Soporte ASPA fué actualizado para draft-ietf-sidrops-aspa-profile-16. Como parte del soporte ASPAs agnósticos AFI, la sintaxis JSON para validar la carga útil ASPA cambió tanto en modos de archivo como en salida normal.
- En modo de archivo (opción -f) los manifiestos aplicables ahora son mostrados como parte de la ruta de la firma.
- Una nueva opción -P fue agregada para especificar manualmente un momento en el tiempo para usar para usar cuando se parsean la ventana de validación de certificados. útil para pruebas de regresión. Por defecto es invocación de tiempo del cliente rpki
- La opción -A ahora excluirá también datos ASPA de la salida JSON.
- El protocólo de sincronización usado para sincronizar el repositorio ahora está incluido en la salida OpenMetrics.
- Registro mejorado por medio de rastrear objetos tanto por repo como por tal.
- Se verifica si los productos listados en un manifiesto fueron emitidos por la misma autoridad que el manifiesto mismo.
- Las marcas de tiempo de modificación de archivo de objetos recuperados vía RRDP ahora son ajustados deterministicamente para preparar el cache en disco para soluciones de contingencia para RRDP a RSYNC.
- Detección mejorada de desincronización de sesión RRDP: Una verificación fue agregada para comparar cuando los hashes delta asociados a un serial visto anteriormentea sean diferentes en archivos de notificación recuperados recientemente.
- Manejo mejorado de deltas RRDP en los cuales dichos objetos son publicados, retirados, y publicados nuevamente.
- Se desactivó en certs los identificadores únicos del emisor y el asunto X.509 v2. Los CAs RPKI nunca emitira certificados con identificadores únicos V2.
- Se agregó una verificación para desactivar extensiones de certificado X.509 duplicadas.
- Se agregó una verificación para desactivar extensiones de conjuntos vacíos de direcciones IP como números AS en el RFC 3779.
- Un mensaje de advertencia se imprime cuando el atributo de firma de tiempo CMS en un objeto firmado resulta ausente.
- Advertencias sobre mensajes no recuperables y discrepancias en el resumen de mensajes y el número de manifiesto para ayudar a la depuración de la causa raíz.
- Se agregó una verificación para desactivar el que múltiples elementos RRDP publiquen elementos para el mismo archivo en las instantaneas RRDP. Si esta condición de error es encontrada, la transferencia RRDP es fallida y el RP se revierte a rsync.
- Una verificación de cumplimiento para la versión de Certificado apropiada X.509 y la versión CRL fue agregada.
- Se agregó una verificación de cumplimiento para asegurar que Objetos CMS Firmados contengan SignedData, en conformidad con el RFC 6488 sección 3 lista de verificación item 1a.
- Verificaciones de cumplimiento fueron agregados por la versión, KeyUsage, y ExtendedKeyUsage de certificados EE en Manifiesto, Objetos firmados TAK, y GBR.
- Un valor de firma de tiempo CMS siendo posterior a la marca de tiempo notAfter de X.509 fue bajada de nivel de ser un error a ser una advertencia.
- Se corrigió un bug en el manejo de certificados CA que heredaban recursos IP.
- Una verificación de cumplimiento se agregó para asegurar que el Asunto X.509 solo contenga commonName (nombre común) y opcionalmente serialNumber (número serial).
- Una verificación de cumplimiento se agregó para asegurar que las versiones del SignedData del CMS y del SignerInfo sea 3.
- El algoritmo Fisher-Yates barajea el orden en el cual las entradas de Manifiesto son procesadas. Previamente, los items de trabajo eran puestos en fila en el orden que el CA indicaba que debían aparecer en un Manifiesto. De cualquier forma, no hay un beneficio obvio para que terceras partes decidan el orden en el cual las cosas son procesadas.
- En smtpd(8),
- Se intercambió los argumentos de filtrado de la autenticación de enlace filter para evitar ambiguedades con nombres de usuario que contengan un caracter "|".
- Se ajustó el protocólo de versión de smtpd-filters(7).
- Se corrigió truncamiento potencial de líneas de datos filtrados.
- Se permiten argumentos en NOOP.
- Muchos otros cambios en varios programas de red y bibliotecas de programación:
- Se deja a pcap_fopen_offline(3) para que interprete correctamente algunos valores
LINKTYPE_*
en encabezados pcap escritos en sistemas operativos foraneos. - Se hace que dig(1) use la biblioteca menos obsoleta del API LibreSSL.
- Se removieron diferencias de estilo entre arp(8) y ndp(8) de la función delete(). Esto hace más fácil señalar los cambios reales en el comportamiento.
- Se hace que Make ndp(8) no elimine rutas de clonación cuando no se encuentre una entrada de un vecino con
ndp -d
. - Se mejoró el manejo de errores en el resolvedor asr.
- En unwind(8), el manejo SERVFAIL resula en una mejor resolución de nombre.
- En unwind(8), se corrigió un bug de usar después de liberar (use-after-free) desencadenando un conjunto de errores fatales de escritura mientras se envían respuestas TCP.
- En el daemon de anunciamiento del router rad(8), se actualizó los temporizadores por defecto por prefijo preferido y tiempos de vida válidos para usar los valores de RFC 9096.
- En slaacd(8), se eliminó el limite artificial de 2 horas en el tiempo de vida del PIO.
- En ypldap(8), se reduce el uso de memoria cuando se actualizan directorios grandes.
- Se hizó a ypldap(8) más resiliente cuando algunos servidores se comportan erraticamente: se sigue intentando servidores LDAP hasta que los resultados completos lleguen en lugar de solo hasta que uno acepte la conexión TCP.
- Nuevo parámetro wgdescription para ifconfig(8) para asignar una cadena de texto que describa el par (peer) wg(4).
- Permite a ifconfig(8) darle un prefijo al nombre de la interfase a muchos mensajes de error y de advertencia.
- Se hace que las opciones
tlsv1.0
ytlsv1.1
en relayd(8) no hagan nada, ya que uno debería utilizar la opción por defectotlsv1.2
en lugar de las primeras dos. - Se corrigió rutas IPv6 que estaban siendo cambiadas por relayd(8) con configuración de Ruteadores.
- En dhcrelay6(8), no se ignora las entradas AF_LINK de interfases carp(4).
- Se mejoró el parseador de configuración de radiusd(8) para manejar mejor los comentarios, mejoró los mensajes de error y se taponeó una fuga de memoria.
- En radiusd(8), se agregó característica decorativa a solicitud o respuesta que es usada a traves del módulo de interfase radiusd . Esto hace que módulos adicionales puedan modificar mensajes de solicitudes o respuestas RADIUS. También se agregó un nuevo módulo "radius_standard" el cual usa esta característica, proporciona algunas características genéricas como "strip-atmark-realm" la cual elimina la parte del dominio del atributo "User Name".
- Le permite a UDP para servicios interconstruidos inetd(8) en 127.0.0.1. Esta restricción fue agregada en el año 2000 debido a compatibilidad IPv6 y a direcciones mapeadas. En la actualidad nuestro kernel no soporta estas características IPv6 y bloquea direcciones localhost en interfaces que no sean de bucle hacia atras (loopback). Se hace que IPv4 127.0.0.1/8 e IPv6 ::1 se comporten identicamente y proporcionen servicios locales si están configurados.
- En spamd(8), se registra una doble comilla " ficticia.
- Se deja a pcap_fopen_offline(3) para que interprete correctamente algunos valores
- El soporte IPsec fue mejorado:
En el siguiente post continuarémos con el aspecto de las mejoras del sistema y correciones de bugs diversas.
Este post es una traducción del anuncio original que se encuentra en la siguente liga:
https://www.openbsd.org/74.html
Si lo deseas puedes votar por mi como witness para poder aumentar las capacidades de un servidor.
https://blurtwallet.com/~witnesses?highlight=cosmicboy123
Integrate al grupo de Telegram de @team-mexico 😀 donde yo y otros usuarios de México y de otros países de habla hispana compartimos experiencias y opiniones así como nuestros propios posts. Una gran iniciativa de @cristo
| 👉Entra a https://t.me/TeamMexico1 👈 |