Skip to main content

a silhouette of a person's head and shoulders, used as a default avatar

Webinar Zimbra: Manajemen Pengguna, Keamanan Email dan Proteksi Serangan

Ingin meningkatkan keamanan dan efisiensi dalam pengelolaan sistem email perusahaan Anda?
Webinar ini dirancang khusus untuk membantu Anda memahami dan mengimplementasikan berbagai fitur penting dari Zimbra, seperti pengelolaan pengguna yang lebih aman, penguatan keamanan email, hingga perlindungan server dari serangan siber.

Apa yang Akan Anda Pelajari?

Dalam webinar ini, Anda akan mempelajari:

✅Cara mengelola akun dan pengguna Zimbra dengan kebijakan password yang aman & penerapan Two-Factor Authentication (2FA).
✅Strategi mengamankan email menggunakan SPF, DKIM, dan DMARC untuk mencegah phishing dan spoofing.
✅Cara melindungi server dari spam dan serangan brute-force menggunakan Policyd Rate Limit & Fail2Ban.

📅 Detail Acara:

🗓 Tanggal: 07 Mei 2025
🕒 Waktu: 13:30 – 15:30 WIB
🌐 Lokasi: Online via Zoom Meeting

Kenapa Anda Harus Ikut?

  • Webinar ini GRATIS!
  • Dapatkan insight praktis untuk meningkatkan keamanan infrastruktur email di perusahaan Anda.
  • Ada sesi tanya jawab langsung!

Cara Daftar:

Segera daftarkan diri Anda sekarang melalui tautan berikut:
👉 https://bit.ly/exc-zimbra
Atau scan QR Code pada banner di atas.

a silhouette of a person's head and shoulders, used as a default avatar

Zypper el gestor de paquetes de openSUSE mejora su velocidad

Una reciente versión de zypper el gestor de software para la línea de comandos de openSUSE trae mejoras en la velocidad para descargar actualizaciones

Una ilustración de un camaleón contento escuchando música con unos auriculares sobre una tabla de surf
Imagen: Óscar Sánchez Requena

Aunque aún son unas funcionalidades experimentales no habilitadas de manera predeterminada, las más recientes versiones de libzypp y zypper disponibles en openSUSE Tumbleweed y Slowroll mejoran el rendimiento de la gestión de paquetes reduciendo el tiempo requerido para obtener los paquetes y metadatos.

openSUSE utiliza zypper como gestor de paquetes y con esta herramienta desde la terminal podemos instalar nuevo software, eliminarlo, buscar un paquete, o actualizar el sistema, entre otras cosas.

Desde la versión zypper 1.14.87 y libzypp 17.36.4, se ha añadido la gestión de descarga de paquetes en paralelo y la obtención de metadatos de paquetes, lo que hace que descargar los paquetes a instalar sea más rápido.

Estas actualizaciones ofrecen dos características principales: la capacidad de obtener paquetes utilizando conexiones concurrentes y un backend de medios simplificado que mejora la reutilización de la conexión y el manejo de metadatos.

Antes de que la función esté habilitada oficialmente de forma predeterminada, si tienes curiosidad por ver cómo funciona, la descarga de paquetes en paralelo se puede habilitar configurando una variable de entorno antes de ejecutar una operación Zypper. Esto permite que se descarguen múltiples paquetes simultáneamente, mejorando la velocidad general.

Para utilizarlo a la hora de actualizar nuestro Tumbleweed, ya sabes que mediante zypper dup lo ejecutaremos de la siguiente manera:

env ZYPP_PCK_PRELOAD=1 zypper dup

Antes deberemos definir el número de descargas concurrentes que permitimos. Para ello editamos como usuario root el archivo /etc/zypp/zypp.conf

Y en ese archivo descomentamos la siguiente línea:

download.max_concurrent_connections = 5

Aunque si queremos podemos aumentar ese valor y ver si mejora la respuesta en nuestro equipo dependiendo de la conexión que dispongamos.

Para mejorar la obtención de los metadatos a la hora de actualizar los repositorios en busca que actualizaciones, tendremos que ejecutarlo el comando de zypper con la siguiente opción:

env ZYPP_CURL2=1 zypper ref

Con estas mejoras que en un futuro estarán disponibles de manera predeterminada en openSUSE, las descargas paralelas de actualizaciones deben permitir que los sistemas en conexiones lentas o de alta latencia aprovechen un mejor uso de banda disponible. Las actualizaciones de metadatos se vuelven más eficientes con el nuevo backend.

Yo en mi caso, esta última actualización de mi Tumbleweed ya la he ejecutado utilizando esta nueva funcionalidad y todo parece haber ido más rápido y fluido. Si pruebas en tu caso, me gustará saber tu opinión, así que utiliza los comentarios del blog para compartirla.

Aquí tenéis un vídeo en funcionamiento:

Enlaces de interés

El camaleón mascota de openSUSE sobre un fondo verde y una pequeña barra de progreso inferior.
a silhouette of a person's head and shoulders, used as a default avatar

Episodio 5 de Accesibilidad con Tecnologías libres: Imagen a Texto, mundos virtuales, Joomla y PrestaShop, XFCE y voto electrónico

Sigo retrasado para ya me acerco. Espero ponerme pronto al día con este podcast. Os presento el episodio 5 de Accesibilidad con Tecnologías libres: Imagen a Texto, mundos virtuales, Joomla y PrestaShop, XFCE y voto electrónico. Una oportunidad más para conocer las opciones que existen para acercar la teconología a todo el mundo.

Episodio 5 de Accesibilidad con Tecnologías libres: Imagen a Texto, mundos virtuales, Joomla y PrestaShop, XFCE y voto electrónico

Hace más de un año que presenté este podcast y he dejado pasar demasiado tiempo para seguir promocionándolo. Areglé este error hace poco y no quiero perder la inercia y seguir promocionándolo como se merece, así que me complace presentar el tercer episodio, el segundo con contenido, de Accesibilidad con Tecnologías libres que tiene el siguiente resumen:


Episodio 5 de Accesibilidad con Tecnologías libres: Imagen a Texto, mundos virtuales, Joomla y PrestaShop, XFCE y voto electrónico

Transcripción disponibles en steno.fm por si vuestra Podcatcher no los implementa, como estas.

Créditos de la música:

Este podcast tiene licencia Reconocimiento-CompartirIgual 4.0 Internacional (CC BY-SA 4.0).

Más información: Quinto episodio de Accesibilidad con Tecnologías Libres

Podcast Accesibilidad con Tecnologías libres

Episodio 5 de Accesibilidad con Tecnologías libres: Imagen a Texto, mundos virtuales, Joomla y PrestaShop, XFCE y voto electrónico

Jorge Lama, Víctor , David Marzal, Thais Pusada, Pablo Arias, Jonathan Chacon y Markolino son el equipo reunido para crear el podcast Accesibilidad con Tecnologías libres, un podcast para hablar sobre temas de accesibilidad y tecnologías libres.

En palabras de sus creadores:

En informática, la accesibilidad incluye diferentes ayudas como pueden ser las tipografías de alto contraste o gran tamaño, magnificadores de pantalla, lectores y revisores de pantalla, programas de reconocimiento de voz, teclados adaptados y otros dispositivos apuntadores o de entrada de información.

Además, las inteligencias artificiales están empezando a ser un gran aliado para mejorar la accesibilidad en muchos aspectos. Existen podcasts y canales de vídeo que hablan de la accesibilidad centrándose en entornos Windows o de Apple porque son los más conocidos por el público generalista. Pero en este podcast queremos dar a conocer otros aspectos de la accesibilidad y su relación con otras tecnologías menos conocidas.

Tecnologías que consideramos libres y que nos parecen mejores para la sociedad, en muchos casos…

Por supuesto, os invito a visitar la página de Archive.org donde están recogidos el resto de programas y donde nos indican también aquellos que estań subtitulados, aunque creo que al final lo estarán todos:

Créditos de la música:

La música usada ha sido «Evening» de Kevin MacLeod (incompetech.com)
Licensed under Creative Commons: By Attribution 4.0 License
http://creativecommons.org/licenses/by/4.0/

Personalmente, me parece un podcast muy interesante que aborda un tema recurrente en el mundo del Software Libre pero que todavía está lejos de solucionarse. Los diferentes proyectos de escritorio de GNU/Linux implementan cosas pero en muchas ocasiones no están coordinadas realmente con las personas que las necesitan. Esperemos que en los próximos años este aspecto se vaya mejorando y, si ocurre, creo que este podcast tendrá parte de culpa, en el buen sentido de la palabra.

Más información: Accesibilidad con Tecnologías Libres

La entrada Episodio 5 de Accesibilidad con Tecnologías libres: Imagen a Texto, mundos virtuales, Joomla y PrestaShop, XFCE y voto electrónico se publicó primero en KDE Blog.

the avatar of openSUSE News

Zypper Adds Experimental Parallel Downloads

A new zypper experimental media backend and support for parallel package downloads have been introduced with the release of libzypp version 17.36.4 and zypper version 1.14.87.

These enhancements, according to an email on the factory mailing list, improve the performance of package management by reducing the time required to fetch packages and metadata.

The update provides two main features: an ability to fetch packages using concurrent connections, and a simplified media backend that improves connection reuse and metadata handling. Both features are currently in an experimental phase and must be manually enabled.

Before the feature is officially enabled by default, parallel package downloading can be enabled by setting an environment variable before executing a zypper operation. This allows multiple packages to be downloaded simultaneously, improving overall speed.

To Enable parallel downloads

env ZYPP_PCK_PRELOAD=1 zypper dup

The number of concurrent downloads can be configured in the zypp.conf file using the following directive:

download.max_concurrent_connections = 5

The default is 5. However, higher values may yield better performance depending on system resources and network conditions.

The new media backend can be enabled with a separate environment variable. The backend eliminates overhead by avoiding metalink fetching and multi-server file splitting. It is optimized for better connection reuse during metadata fetches.

To enable the new media backend

env ZYPP_CURL2=1 zypper ref

While these two features are separate, they are most effective when used together. Using metalink= URLs in .repo files can further improve mirror performance. However, baseurl= remains the preferred setting for production systems due to its trusted key behavior.

The following versions are required to use the new features:

  • libzypp version 17.36.4 or newer
  • zypper version 1.14.87 or newer

These are available in Tumbleweed and Slowroll. Users can test out these new enhancements on Leap or immutable desktop variants Aeon and Kalpa using Distrobox.

Users of openSUSE-repos on Tumblweed gained mediahandler=curl2 as part of the repository urls as well as preset ZYPP_PCK_PRELOAD=1 via /etc/profile.d/opensuse_repos.sh with the latest openSUSE-repos update.

Leap 15 and 16 users can currently get the zypper update with these enhancements from the development repository.

To install the updated packages, users can switch to a root shell with sudo su - and run zypper in <package-name>. Unfortunatelly calling sudo zypper does not processs /etc/profile.d/ files and the variable ZYPP_PCK_PRELOAD=1 is unset. Users who are used to call sudo zypper can create an alias or use pass the variable manually (see the env ZYPP_PCK_PRELOAD=1 example) . This cumbersome part will be gone once the parallel download feature is mature and gets enabled by default in zypper.

https://download.opensuse.org/repositories/zypp:/Head/

The parallel downloads should allow systems on slow or high-latency connections to make better use of available bandwidth. Metadata refreshes become more efficient with the new backend. These improvements also reduce setup time in CI/CD pipelines and automated environments.

The following are some benchmark results listed in the email on the factory mailing list:

Scenario                                           Time
--------------------------------------------  --------
Download 100MB / ~250 packages
Default (MultiCurl)                               68.7 sec
New Backend (ZYPP_CURL2=1)                        29.6 sec
Parallel Downloads (ZYPP_PCK_PRELOAD=1)           13.1 sec

Download 1.02GB / 407 packages into empty rootfs
Default (MultiCurl)                               281.1 sec
New Backend (ZYPP_CURL2=1)                        208.5 sec
Parallel Downloads (ZYPP_PCK_PRELOAD=1)           119.6 sec

These results show significant improvements in real-world scenarios with total execution time reduced by more than 50 percent in some cases.

Although still experimental, these options are available now for users who wish to enable and test them.

Users who’d like to provide feedback can respond to the mailing list thread or submit a bug report against libzypp bugzilla component.

The more feedback the sooner the feature can be made official.

Tutorial

Watch our tutorial on the openSUSE YouTube channel showing its use and setup.

the avatar of openSUSE News

Freedom Does Not Come From One Vendor

As political winds shift across the globe, the digital world is not immune to the turbulence. Governments and organizations across the globe are reassessing their dependencies, especially those tied to large, centralized tech firms.

While headlines paint a world splintering along geopolitical lines, the open-source community is quietly doing what it has always done best; building global tools for global freedom.

A recent example of this is an EU OS initiative—a European blueprint for a locked-down, KDE Plasma-based Linux distribution aimed at public-sector use.

Though technically not a new operating system, EU OS serves as a proof-of-concept for deploying a Linux system.

The project put together info on government deployments like LiMux in Germany and GendBuntu in France, and endorses the public money, public code philosophy.

However, there is a case for broader OS inclusion without piggybacking a popular EU sovereignty narrative.

While this naming is trying to address a narrative, a multiple Linux distributions should be integrated into any government’s strategy.

The current Fedora+KDE direction is mature, but relying on one distro and one desktop environment introduces avoidable risks. Instead, it would be wise for all governmnets to embrace alternatives like Aeon with GNOME, alongside another immutable Plasma-based choice of Kalpa.

Why? Security. Different distributions and desktops reduce the risk of a single point of failure. If vulnerabilities emerge, they won’t simultaneously impact every system.

Another reason is tailored user experience. GNOME offers a simple interface for general office users, while KDE’s power-user features may be more appropriate for technical users.

As immutable OSes with transactional updates, Aeon and Kalpa share the same robust core stemming from Tumbleweed updates, which offer rollback, system integrity and layered deployments with seamless updates. Both Aeon and Kalpa were designed from the ground up for modern, containerized and cloud-hybrid environments.

The broader idea needing discussion for governments goes beyond what a distro standard is. In an age of ransomware, cloud lock-in, and surveillance capitalism, it’s time to move beyond traditional desktop OS thinking.

The open-source world already has the tools to move forward with a new way of thinking:

  • Immutability with transactional updates (MicroOS, Aeon, Kalpa, Kinoite)
  • Declarative system configuration (Agama, Ansible)
  • Desktop options for varying user needs (GNOME, KDE Plasma, Xfce)
  • Open identity and authentication standards (LDAP, OpenID)
  • Transparent package formats (Flatpak, RPM)

Let’s not get lost in the flags, logos or headlines. While politics shift and trade alliances fray, the open-source movement remains one of the most stable, borderless, and collaborative human endeavors on the planet.

If you’re looking for freedom, look no further than this space — it’s been enduring longer than the EU’s own monetary standard.

The future of tech doesn’t need to be American. It doesn’t need to be Chinese. It needs to be open.

This is part of a series on Upgrade to Freedom where we offer reasons to transition from Windows to Linux.

a silhouette of a person's head and shoulders, used as a default avatar

Abelujo, el único software libre disponible para la gestión de librerías

Abelujo es la única aplicación de software libre existente para la gestión de una librería, tanto negocios como librerías asociativas

una imagen en blano y negro de un gato medio dormido encima de un libro.
Imagen: Heather McKeen

Si tienes una librería, ya sea una tienda como negocio o una librería asociativa tienes disponible Abelujo para la gestión de toda la colección de libros y la gestión de el negocio. Abelujo es el único software publicado bajo una licencia libre AGPLv3 existente para estas tareas y está disponible en varios idiomas. Además es gratuito y lo puedes utilizar y gestionar por ti mismo.

Pero no únicamente puedes gestionar libros, también folletos, diarios, medios de vídeo y/o música (CDs o DVDs) y otros artículos. Y no solo está orientado a librerías como tiendas también a cafés/librerías, teatros o librerías de asociaciones o colectivos.

Abelujo es un proyecto que nació de una necesidad personal de su desarrollador para ayudar a una centro social que gestionaba una librería y utilizaba para esa gestión una simple hoja de cálculo.

Pero claro, esa simpleza no podía abarcar todas las necesidades que requiere una gestión más completa y más fácil y universal de gestionarlo. Así que su creador desarrollo Abelujo y poco a poco ha ido ganando en funcionalidades y opciones, hasta convertirse en lo que es hoy.

Abelujo es una aplicación web en la que los propietarios o las personas que gestionen la librería pueden organizar y gestionar la tienda: recibiendo pedidos, añadiendo nuevos libros al sistema, vendiendo libros, editar facturas, aplicar descuentos, preparar pedidos, y un registro de estadísticas por mencionar algunas de las tareas que realiza.

También crea un sitio web en el que los compradores pueden navegar para ver el catálogo y después hacer pedidos.

Abelujo es la única aplicación de software libre de este tipo que puede funcionar en sistemas libres, sin depender de sistemas privativos. Su interfaz moderna y gestionada via navegador web hace sencillas las tareas de gestión.

El creador de Abelujo, ofrece el software de manera libre y gratuita, pero se les puede contratar para poner en marcha el software en un servidor, si no se tienen los conocimientos a la hora de contratar un servidor, dominio,poner en marcha el software, adaptar el programa a las necesidades de la librería, etc.

Tiene un desarrollo activo y se sigue actualizando y realizando nuevos lanzamientos que traerán muchas más mejoras.

Enlaces de interés

a silhouette of a person's head and shoulders, used as a default avatar

Lanzado GIMP 3.0, más fácil y más rápido

Este blog no es un blog de rabiosa actualidad. La razón es que me centro en las noticias del KDE (las cuales intento que sí sean frescas) pero para mantener mi cadencia diaria debo dosificarme. Esta es la razón que comento hoy, 10 días después del lanzamiento que ha sido lanzado GIMP 3.0, una excelentente noticia porque este completo editor de imágenes sigue su desarrollo ofreciendo sus servicios a los creadores digitales. ¡Felicidades al equipo!

Lanzado GIMP 3.0, más fácil y más rápido

Una de las preguntas que suelen hacer las personas que intentan hacer su migración a los sistemas operativos libres es «¿podré hacer lo mismo que en XXXXX?» y, afortunadamente, la respuesta es que sí gracias al trabajo de los desarrolladores, muchos de ellos voluntarios, que dedican su tiempo a mantener aplicaciones que no tienen nada que envidiar a las privativas.

Es el caso del veterano GIMP, el acrónimo de GNU Image Manipulation Program, un programa de edición de imágenes digitales profesional de código abierto y gratuito creado por Spencer Kimball y Peter Mattis en 1995 como parte del Proyecto GNU. Aunque su interfaz inicial dio mucha guerra por la forma que tenía de mostrar las ventanas, cuando dio su brazo a torcer y permitió unificarlas empezó a ganar adeptos.

Evidentemente, su curva de aprendizaje es alto pero es que lo es también si se utilizan otras alternativas pero, una vez cogido el truco, su potencia en asombrosa.

Todas esta introducción es para comentar, un poco tarde, que sus desarrolladores han anunciado que:

¡Por fin está aquí la primera versión de GIMP 3.0! Este es el resultado final de siete años de duro trabajo de desarrolladores voluntarios, diseñadores, artistas y miembros de la comunidad (como referencia, GIMP 2.10 se publicó por primera vez en 2018 y la versión de desarrollo inicial de GIMP 3.0 se publicó en 2020). Con GIMP 3.0 puedes hacer más que nunca, más fácilmente, ¡más rápidamente!

Lanzado GIMP 3.0, más fácil y más rápido

Yo ya lo tengo instalado en mi equipo y debo decir que el trabajo de los desarrolladores es notable, sobre todo porque su funcionamiento es idéntico al antiguo, lo cual significa que estará bastante pulido. Además, su aspecto visual es más cuidado, su rendimiento parece mñás alto (yo solo hago cosas básicas) y no he tenido ningún crasheo. ¡Felicidades a los desarrolladores!

Por cierto, el trabajo de los desarrolladores no terminó el 16 de marzo, ya que hace tres días ya fue lanzado la versión 3.0.2, la primera revisión de esta nueva rama.

Las novedades de GIMP 3.0

Las novedades más destacadas de GIMP 3.0 son las siguientes:

  • ¿Necesitas retocar un filtro que aplicaste hace horas? La novedad en GIMP 3.0 es la edición no destructiva de los filtros más usados. Observa los cambios en tiempo real con la vista previa en el lienzo.
  • Intercambia archivos con más aplicaciones, incluyendo archivos BC7 DDS así como una mejor exportación PSD y muchos nuevos formatos.
  • ¿No sabes cómo de grande quieres hacer tu dibujo? Basta con configurar la herramienta de pintura para que amplíe las capas automáticamente según sea necesario.
  • También es más fácil crear texto de calidad profesional. Estiliza tu texto, aplica contornos, sombras, biseles y mucho más, y aún puedes editarlo, cambiar la fuente y el tamaño, e incluso ajustar la configuración de estilo.
  • Organizar tus capas es ahora mucho más fácil gracias a la posibilidad de seleccionar varios elementos a la vez, moverlos o transformarlos todos juntos.
  • La gestión del color se ha mejorado de nuevo, como nuestro proyecto a largo plazo para hacer de GIMP un editor de imágenes avanzado para todos los usos.
  • Kit de herramientas gráficas actualizado (GTK3) para un uso de escritorio moderno.
  • Nuevo logo de Wilber!

Más información: GIMP

La entrada Lanzado GIMP 3.0, más fácil y más rápido se publicó primero en KDE Blog.

a silhouette of a person's head and shoulders, used as a default avatar

Obituary of my favorite CD shop: Stereo

Last December, the CD shop where I bought most of my collection closed its doors for good. I had seen it coming — the owner had been gradually winding down the business in preparation for retirement — but after nearly 30 years of shopping there, it was still a tough moment.

Stereo logo

This logo belongs to Periferic Records - Stereo Kft.. Back in the nineties, during my university years, I used to look for this logo at concerts, always hoping to spot a bearded man selling an incredible selection of CDs. Imagine my surprise when, in 2002, I attended a concert and discovered that the organizer was none other than that same bearded man — who also happened to be one of my second cousins!

From that moment on, I became a regular at the shop. The owner was a publisher of some of my favorite music, including Hungarian progrock and piano albums. Some standout names: After Crying, Vedres Csaba, and Solaris. While the shop specialized in progrock — with a selection unlike anywhere else — it also offered a wide variety of other genres.

When I received my first big paycheck, I went straight to the store and bought dozens of CDs. Today, streaming services like TIDAL and Spotify have recommendation engines, but back then, nothing could beat the personalized recommendations from the shop’s staff. More than once, I walked out with a free CD as a bonus, one of which became an all-time favorite: Townscream – Nagyvárosi Ikonok.

Unlike many music shops that play background music on low-quality systems, Stereo had StandArt speakers from Heed Audio. These speakers, almost as old as the shop itself, created an immersive listening experience. Though I often rushed in just to pick up an order, on the rare occasion that I had time, I would linger to listen — sometimes discovering new music to take home.

The website still exists, and you can get an ever shorter list of available CD titles by e-mail. In December, I spent most of my free time going through their list of albums, listening to samples on TIDAL and YouTube — nearly 1,500 albums in total. Through this process, I found some rare gems, including one CD I bought purely for its intriguing title: God-Sex-Money. Well, actually the description, “Recommended for Wakeman/Emerson fans,” sealed the deal :-)

Even now, whenever I’m near the old shop, I instinctively start walking toward it — only to remember that an important part of my life is gone forever. But it lives on in my CD collection and my memories.

a silhouette of a person's head and shoulders, used as a default avatar

wait3() System Call as a Side Channel in Setuid Programs: nvidia-modprobe case study (CVE-2024-0149)

Table of Contents

1) Introduction

nvidia-modprobe is a setuid-root helper utility for the proprietary Nvidia GPU display driver that loads kernel modules and creates character devices required for userspace GPU access. Normally, drivers do this via udev. However, kernel licensing restrictions prohibit Nvidia’s proprietary kernel module from generating uevents, which are required for udev to work. Therefore this special helper is needed.

We reviewed nvidia-modprobe as part of our whitelisting process, which requires an audit for all newly introduced setuid binaries in openSUSE. The version we reviewed was 550.127.05 and this report is based on that version. Upstream released a bugfix in version 550.144.03 and a security advisory.

2) wait3() as a Side Channel in Setuid Programs

The wait3() system call allows the calling process to obtain status information for child processes, similar to waitpid(). Unlike waitpid(), wait3() also returns resource usage information. The measurements returned by this call include CPU time, memory consumption and lower-level information such as the number of minor and major page faults that occurred during the child’s runtime. See also man 2 getrusage.

Perhaps surprisingly, wait3() also works for setuid sub-processes, leaking quite a bit of information about the behavior of the target program, which is running with elevated privileges.

A convenient way to try this out is GNU Time, a small utility that spawns a target process and prints the output of wait3(), for example:

/usr/bin/time -v nvidia-modprobe

3) File Existence Test (CVE-2024-0149)

In the case of nvidia-modprobe, we can leverage wait3() for a file existence test.

When executed with the option -f NVIDIA-CAPABILITY-DEVICE-FILE (an arbitrary path), nvidia-modprobe performs the following steps:

  • attempt to open the supplied path as root
    • if the path does exist:
      • read one or more lines
      • parse each line (implemented safely)
      • exit silently, return code 0
    • if the path does not exist:
      • exit silently, return code 0

It turns out that reading the first line of the supplied path sometimes causes a minor page fault. The number of page faults is not perfectly constant across multiple executions, depending on whether the page mapped by the kernel is dirty or not. However, if the file does not exist, it cannot be read, and therefore no page faults will be triggered. We can execute nvidia-modprobe repeatedly, calculate the median number of page faults, and infer whether the supplied path exists or not, even if the caller does not have the necessary file system permissions.

Simplified example:

$ /usr/bin/time -q --format=%R nvidia-modprobe -f /root/.bash_history
80

$ /usr/bin/time -q --format=%R nvidia-modprobe -f /root/does/not/exist
79

The output fluctuates, but it only takes a few repetitions to get a reliable signal from the median.

4) Bugfix

Upstream published a bugfix. This commit limits the queried path to files below /proc/driver/nvidia before attempting to read from it, eliminating the information leak.

5) CVE Assignment

Upstream assigned CVE-2024-0149 for this issue.

6) Other Packages

Considering the relatively obscure nature of this side channel attack, we decided to briefly look into a couple of other packages exhibiting similar usage patterns:

  • shadow
    • chsh: negative
  • util-linux
    • mount -T: negative
    • umount: negative
  • v4l-linux: positive, but does not require wait3(), and the issue was already known (CVE-2020-1369).

Even though we did not find additional instances of this problem, and the severity of this vulnerability is rather low, it’s still one of many pitfalls to keep in mind when writing or auditing setuid programs.

7) Timeline

2024-10-02 We noticed the issue and started tracking it privately in bsc#1231257.
2024-10-09 We shared the information with NVIDIA PSIRT via email, offering coordinated disclosure.
2024-10-12 We received an initial confirmation from Nvidia.
2024-10-22 After a fruitful discussion, mostly regarding tangential questions, we agreed on 2025-01-16 as the Coordinated Release Date.
2025-01-16 CVE-2024-0149 was assigned by Nvidia.
2025-01-16 Nvidia released the fix as part of version 550.144.03

8) References

a silhouette of a person's head and shoulders, used as a default avatar

SUSE Security Team Spotlight Winter 2024/2025

Table of Contents

1) Introduction

Winter time is coming to an end (at least in the northern hemisphere, where most of the SUSE security team members are located), and with this we want to take a look back at what happened during the last three months in our team. We have already posted about a number of bigger topics that kept us busy over the winter:

As usual in the spotlight series, in this post we want to give an insight into some of our work beyond these reports: reviews that did not lead to significant security findings, but still kept us busy and in some cases also led to upstream improvements. The topics again mostly involve Polkit authentication and D-Bus APIs, but we also looked proactively into a piece of networking software that raised our interest.

2) Synce4l Synchronous Ethernet Daemon

Our team is monitoring changes and additions to openSUSE Tumbleweed, most notably systemd services that newly appear in packages. The synce4l package raised our interest, because it contains a daemon which is running with full root privileges and is also networked. The package implements synchronous Ethernet, a low level protocol that basically maintains a shared clock between multiple hosts in an Ethernet subnet.

The project is implemented in the C programming language and consists of about 7.000 lines of code. The sensitivity of C programs to memory handling issues, the fact that the synce4l daemon runs as root and the niche topic of synchronous Ethernet is a mixture that makes it an interesting code review target.

We reviewed the source code in early January and fortunately couldn’t find any issues in it. The attack surface on the network is rather small. Even though by default there is no trust established between participants of the protocol, there is only an integer value exchanged between nodes. Corruption of this value cannot negatively influence a system running synce4l (beyond the protocol itself, naturally). The daemon also creates a UNIX domain socket in /tmp, but access to it is limited to root. The project employs a good coding style and we did not have any concerns left when we were finished with the review.

3) Fwupd 2.0 D-Bus and Polkit Changes

In January the openSUSE maintainer for fwupd packaged the major version 2.0 update, which required a follow-up audit by our team. fwupd is part of most Linux distributions and provides mechanisms to automatically upgrade firmware on the system. The fwupd daemon runs as root and implements a D-Bus interface with Polkit authentication. We have already reviewed it many times when changes to these interfaces have occurred.

Even though this time fwupd has received a major version update, there have only been moderate changes to the D-Bus and Polkit aspects of the software. Generally, the implementation of the D-Bus interface in fwupd is more on the complex side. Polkit authentication is implemented properly, but it is only applied to a subset of the D-Bus methods offered by the daemon. This means that one has to carefully differentiate between the methods that require Polkit authentication, and the ones that don’t require any authentication at all. This is what we did during the review; fortunately we couldn’t find any problems with the unauthenticated methods.

One notable feature that has been added in this fwupd release allows it to run its own dedicated D-Bus instance, likely for lean and mean environments or for use in early boot scenarios, when no system D-Bus is available. When this feature is in use then no Polkit authentication will be performed, likely because no Polkit daemon is present either in this situation. This mode will only be active when the environment variable FWUPD_DBUS_SOCKET is passed to the daemon, however, and should not be reachable in regular installations of fwupd.

There was one new Polkit action org.freedesktop.fwupd.emulation-load, which was allowed for users in a local session without authentication. The corresponding D-Bus method accepts JSON data, either directly or placed in a compressed archive which is passed to the daemon. This is used to load “hardware emulation data” into fwupd. This sounded like a strong privilege for a regular user to have, and thus we inquired upstream if this lax authentication setting was actually necessary. The outcome was that we could raise the authentication requirement to auth_admin, thereby improving security in fwupd.

4) Tuned Revisited

tuned has seen quite a number of changes recently, which also led to a local root exploit finding in November. We received yet another review request in January due to further changes in the area of D-Bus configuration and Polkit actions.

Security-wise there was not much interesting to find in these changes. A number of Polkit actions have been renamed, and tuned optionally provides a drop-in replacement for the UPower D-Bus interface now. We accepted the changes without further ado.

5) iio-sensor-proxy Revisited

iio-sensor-proxy is another package that we already reviewed in the past but that popped up again in January due to changes in its D-Bus configuration. The package provides a D-Bus interface for different hardware sensors like ambient light sensor, accelerometer or proximity sensor. During the review we found that a newly added net.hadess.SensorProxy.Compass.ClaimCompass D-Bus method was unauthenticated, while other similar methods required Polkit authentication.

We reported the issue privately to upstream. The lack of authentication was confirmed and upstream fixed the issue. We did not request a CVE or publish a dedicated report about this, because the impact of the issue is assumed to be low. Such smaller findings still show the usefulness of code reviews that can lead to improvements in upstream code and configuration before software is shipped to openSUSE users.

6) systemd-sysupdated D-Bus Service

In February we received a request to review an experimental systemd component called sysupdated. When reading the program description one could be inclined to think that systemd is now on a quest to replace package managers. The main purpose of this daemon is only to keep container assets and other images up-to-date, however.

sysupdated comes with a larger D-Bus interface protected - in parts - by Polkit. Some read-only properties and method calls are available without Polkit authentication. Systemd components rely on shared code to implement D-Bus services and Polkit authentication. Compared to the last time we had a look into these shared routines, it felt as if the complexity increased quite a lot in this area. You can have a look at this Bugzilla comment to get an impression of the complexities that are involved there these days. One reason for the increased complexity could be the addition of the Varlink IPC mechanism, which can also use Polkit for authentication.

Despite the perceived complexity in the D-Bus and Polkit handling, we couldn’t find any problematic aspects in the implementation. There was one decision to be made about the Polkit action org.freedesktop.sysupdate1.update. The authentication requirements for it are by default set to auth_admin:auth_admin:yes, meaning that users in a local session can update assets managed by sysupdated without authentication. This is also documented in the upstream Polkit policy. This only allows to update assets to the most recent version, not to any specific version nor to downgrade the version. It also doesn’t allow to install any new assets. For this reason we allow updates without authentication in our Polkit easy profile while the other profiles have been hardened to require admin authentication.

7) AppArmor aa-notify Polkit Policy

In February a request arrived to whitelist Polkit actions used by the aa-notify helper which has been added to the AppArmor package. This utility is a graphical program similar to setroubleshoot for SELinux, and allows to identify AppArmor violations and modify the AppArmor profile to allow actions that have been denied.

The two Polkit actions that needed reviewing allow to execute a Python script found in
/usr/lib/python3.11/site-packages/apparmor/update_profile.py via pkexec using a specific command line parameter. This script performs the task of actually modifying the AppArmor profile according to the provided input files. Due to the nature of the script there is no way to execute it safely without admin authentication. This is reflected in the Polkit action settings, which always require auth_admin authorization.

The implementation of the script is a bit peculiar in some ways, and some parts also seem incomplete. The one aspect that was important to check here was that the script must not act in dangerous ways on the file system, e.g. by using unsafe temporary files or by writing to locations that are under control of unprivileged users. We could not find issues of this kind at the time we reviewed it.

As the script can only be invoked with admin credentials and since there is no legit use case to lower this authentication requirement, we did not dig a lot deeper here and accepted the new Polkit policy. We want to keep an eye on this script, however, since it has some potential to be changed in ways that could harm the local system security.

8) Conclusion

Once more, we hope that with this post we have been able to give you some additional insights into our daily review work for openSUSE and SUSE products. Feel free to reach out to us if you have any questions about the content discussed in this article. We expect the spring issue of the spotlight series to be available in about three months from now.

9) References