Tumbleweed – Review of the week 2024/38
Dear Tumbleweed users and hackers,
The main task completed this week was bisecting/testing Mesa 24.1.7 together with Stefan Dirsch. Getting things tested was a bit nasty, but at least we managed to work through it and update Tumbleweed to Mesa 24.1.7 as part of snapshot 0915. Of course, that’s only one update picked out and it’s not the biggest one, just the one that consumed the most attention. In total, we have released six snapshots during this week (0912, 0913, 0915, 0916, 0917, and 0918).
The most relevant changes were:
- cURL 8.10.0
- KDE Gear 24.08.1
- Bluez 5.78
- Boost 1.86.0
- LibreOffice 24.8.1.2
- Qemu 9.1.0
- KDE Frameworks 6.6.0
- Mesa 24.1.7
- strace 6.11, linux-glibc-devel 6.11
- Python Numpy 2.1.1
- Python Sphinx 8.0.2
- GTK 4.16.1
- GNOME Shell & mutter 46.5
Based on the currently staged submit requests, we know that these items are being worked on at the moment:
- Linux kernel 6.10.11 (no 6.11 just yet)
- timezone 2024b: postgresql16 currently fails the test suite
- PostgreSQL 17 as new default
- Audit 4.0
- grub2 change: Introduces a new package, grub2-x86_64-efi-bls; some scenarios do not install the proper branding package
- Python Sphinx 8.0.2
- Change of the default LSM (opted in at installation) to SELinux. AppArmor is still an option, just not the default. This change only impacts new installations
- perl-Bootloader will be renamed to update-bootloader: it’s been a while since there was no Perl code. Some openQA tests need to be adjusted for this (https://progress.opensuse.org/issues/165686)
- Mesa 24.2.x: identified an issue with ‘wrong’ colors (https://gitlab.freedesktop.org/mesa/mesa/-/issues/11840)
Episodio 34 de KDE Express: Blue Angel, Tellico, Plasma 6.2, Donaciones, Slimbook y Agricultura
Me congratula presentaros el episodio 34 de KDE Express, titulado «Episodio 34 de KDE Express: Blue Angel, Tellico, Plasma 6.2, Donaciones, Slimbook y Agricultura» donde David Marzal sigue llevando en solitario estas más que interesantes píldoras. Un hurra por él.
Episodio 34 de KDE Express: Blue Angel, Tellico, Plasma 6.2, Donaciones, Slimbook y Agricultura
Comenté hace ya bastante tiempo que había nacido KDE Express, un audio con noticias y la actualidad de la Comunidad KDE y del Software Libre con un formato breve (menos de 30 minutos) que complementan los que ya generaba la Comunidad de KDE España, aunque ahora estamos tomándonos un tiempo de respiro por diversos motivos, con sus ya veteranos Vídeo-Podcast que todavía podéis encontrar en Archive.org, Youtube, Ivoox, Spotify y Apple Podcast.
De esta forma, a lo largo de estos 34 episodios, promovidos principalmente por David Marzal, nos han contado un poco de todo: noticias, proyectos, eventos, etc., convirtiéndose (al menos para mi) uno de los podcast favoritos que me suelo encontrar en mi reproductor audio.
En palabras de David el nuevo episodio de KDE Express toca los siguientes temas:

Buenas, el anterior venia cargado de novedades, pero este no se queda corto, aunque hoy hablamos menos del presente y más de un futuro muy cercano.
Artículo original con los enlaces en https://kdeexpress.gitlab.io/34/
- Actualizada la certificación Blue Angel con más categorias y opciones más flexibles de medir la eficiencia energetica. Okular fue el primer programa que consiguio la etiqueta y en KDE Eco siguen trabajando para medir y certificar más programas.
- Tellico 4.0 disponible portado a Qt6. Para quien no lo conozca es una aplicación para gestionar colecciones capaz de obtener un monton de metadata sobre muchas categorias a organizar.
- Presentado el Slimbook KDE VI, más, mejor, pero con el mismo compromiso con el proyecto KDE. Y ademas ahora Slimbook OS se puede elegir en versión KDE Plasma.
- Para los que recordeis el efecto de accesibilidad que comente episodios atras, sobre mover el ratón y que crezca el puntero, por lo que he visto solo está disponible en Wayland. Que hay quien lo quiere quitar y quien lo quiere poner y no lo encontraba.
- Algunas de las mejoras a esperar en octubre con Plasma 6.2, ya que tenemos cerrado el plazo para añadir nueva funcionalidad al desarrollo.
- Se permite renombrar los dispositivos de audio y elegir que fuente de datos le da nombre.
- El plasmoide del tiempo ahora mostrará la temperatura «se siente como».
- Rediseño de la pantalla del teclado en la configuración.
- El plasmoide del brillo permitirá configurar individualmente cada monitor.
- Nueva opción para actualizar y apagar el equipo.
- Nuevo icono sobre el perfil de energía para mostrar en un solo icono el perfil y la batería.
- Discover mostrará la diferencias entre licencias propietarias y no-libres.
- Los nuevos plasmoides apareceran arriba del menu de selección.
- Las opciones de accesibilidad para problemas visuales de color, estará ahora en Accesibilidad, en vez de con el resto de efectos de escritorio. Y está pagina de configuración, ha sido mejorada en varios aspecto para hacerla más accesible.
- Nuevo recordatorio de la posibilidad de donar al proyecto, será 1 vez al año, opcional y por supuesto se puede eliminar.
- Y en Gear 24.12
- Okular permitira «hablar» el texto de la página mostrada
- Las aplicaciones podrán bloquear que el equipo se ponga en modo reposo o se bloqué. El número de bugs está en los niveles minimos desde 2015 desde que se ha hecho un esfuerzo en el QA.
- Articulo sobre si KDE abarca demasiado
- Campaña contra el recorte de fondos a proyectos de SL por la UE
- Articulo muy interesante sobre el HW/SL y la agricultura
¿Algún voluntario para ayudar a montar los vídeos de la Akademy-es de Valencia?
Y, como siempre, os dejo aquí el listado de los episodios. ¡Disfrutad!
Por cierto, también podéis encontrarlos en Telegram: https://t.me/KDEexpress
La entrada Episodio 34 de KDE Express: Blue Angel, Tellico, Plasma 6.2, Donaciones, Slimbook y Agricultura se publicó primero en KDE Blog.
Quickstart in Full Disk Encryption with TPM and YaST2
This is a quick start guide for Full Disk Encryption with TPM or FIDO2 and YaST2 on openSUSE Tumbleweed. It focuses on the few steps to install openSUSE Tumbleweed with YaST2 and using Full Disk Encryption secured by a TPM2 chip and measured boot or a FIDO2 key.
Hardware Requirement:
- UEFI Firmware
- TPM2 Chip or FIDO2 key which supports the hmac-secret extension
- 2GB Memory
Installation of openSUSE MicroOS
There is an own Quickstart for openSUSE MicroOS
Installation of openSUSE Tumbleweed
Boot installation media
- Follow the workflow until “Suggested Partitioning”:
- Partitioning: Select “Guided Setup” and “Enable Disk Encryption”, keep the other defaults
- Continue Installation until “Installation Settings”:
- Booting:
- Change Boot Loader Type from “GRUB2 for EFI” to “Systemd Boot”, ignore “Systemd-boot support is work in progress” and continue
- Software:
- Install additional tpm2.0-tools, tpm2-0-tss and libtss2-tcti-device0
- Booting:
- Finish Installation
Finish FDE Setup
Boot new system
- Enter passphrase to unlock disk during boot
- Login
- Enroll system:
- With TPM2 chip:
sdbootutil enroll --method tpm2 - With FIDO2 key:
sdbootutil enroll --method fido2
- With TPM2 chip:
- Optional, but recommended:
- Upgrade your LUKS key derivation function (do that for every encrypted device listed in
/etc/crypttab):# cryptsetup luksConvertKey /dev/vdaX --pbkdf argon2id # cryptsetup luksConvertKey /dev/vdaY --pbkdf argon2id
- Upgrade your LUKS key derivation function (do that for every encrypted device listed in
Adjusting kernel boot parameters
The configuration file for kernel command line options is /etc/kernel/cmdline.
After editing this file, call sdbootutil update-all-entries to update the
bootloader configuration. If that option does not exist yet or does not work,
a workaround is: sdbootutil remove-all-kernels && sdbootutil add-all-kernels.
Re-enrollment
If the prediction system fails, a new policy must be created for the new measurements to replace the policy stored in the TPM2.
If you have a recovery PIN:
# sdbootutil --ask-pin update-predictions
If you don’t have the recovery PIN, you can set one with this steps:
# sdbootutil unenroll --method=tpm2
# PIN=<new recovery PIN> sdbootutil enroll --method=tpm2
Virtual Machines
If your machine is a VM, it is recommended to remove the “0” from the FDE_SEAL_PCR_LIST variable in /etc/sysconfig/fde-tools. An update of the hypervisor can change PCR0. Since such an update is not visible inside the VM, the PCR values cannot be updated. As result, the disk cannot be decrypted automatically at the next boot, the recovery key needs to be entered and a manual re-enrollment is necessary.
Next Steps
The next steps will be:
- Support grub2-BLS (grub2 following the Boot Loader Specification)
- Add support to the installers (YaST2 and Agama)
- Make this the default if a TPM2 chip is present
Any help is welcome!
Further Documentation
(Image made with DALL-E)
IA consome 1,4 litro de água e aumenta a conta dos vizinhos.

Usar o GPT-4 para gerar 100 palavras pode consumir até três garrafas de água de 500 ml — o que tem levantado preocupações sobre o impacto ambiental dos data centers de inteligência artificial (IA). Esses centros, responsáveis por processar grandes volumes de dados, exigem uma quantidade significativa de água para resfriar os servidores, além de aumentar consideravelmente o consumo de energia. Isso resulta em contas mais altas de água e energia para os moradores das áreas próximas a essas instalações.
Pesquisas da Universidade da Califórnia, Riverside, revelaram que a quantidade de água utilizada por IA como o GPT-4 varia dependendo da localização do data center. No Texas, por exemplo, são necessários cerca de 235 ml de água para gerar um e-mail de 100 palavras, enquanto no estado de Washington esse número chega a 1.408 ml, equivalente a três garrafas de 500 ml. Esse consumo, embora pareça pequeno em uma escala individual, se multiplica rapidamente com o uso frequente.
Além do consumo de água, o impacto energético também é alarmante. Estimativas indicam que, se 10% dos trabalhadores dos Estados Unidos usarem o GPT-4 uma vez por semana durante um ano, a demanda de energia seria equivalente à consumida por todas as residências de Washington D.C. por 20 dias. Isso mostra que, mesmo com um uso considerado moderado, a IA pode ter um efeito significativo nas redes elétricas.
Representantes de empresas como OpenAI, Meta, Google e Microsoft afirmaram estar comprometidos com a redução desse impacto ambiental. No entanto, até o momento, as medidas propostas, como o uso de sistemas de resfriamento que eliminem o consumo de água, ainda são vagas e sem um cronograma claro de implementação. A pressão por lucros tem, muitas vezes, superado as promessas de sustentabilidade dessas gigantes tecnológicas.
Mix de novedades de KDE Gear 24.08
Doy por finalizado a la serie de entradas con las novedades del pack de aplicaciones que puso a disposición de todo el mundo la Comunidad KDE el pasado mes de agosto. Y lo hago con la típica entrada final con el mix de novedades de KDE Gear 24.08 que nos trae a Okular, PlasmaTube y Elisa.
Las novedades de Falkon en KDE Gear 24.08
A lo largo de unas siete entradas he hablado de algunas de las nuevas funcionalidades y cambios que se han publicado en la última actualización de KDE Gear.
Finalizo la serie con las siguientes pequeñas novedades de las siguientes aplicaciones:
- Okular, el lector de documentos ecocertificado de KDE, mejora la compatibilidad con los formularios que se pueden rellenar en los documentos PDF, dispone de un nuevo aspecto en Windows y añade una función de ampliación más útil.
- PlasmaTube, un reproductor que permite ver vídeos en línea de sitios populares en el escritorio, añade una opción para bloquear las secciones patrocinadas de los vídeos.
- Elisa, nuestro elegante reproductor de música, dispone de la funcionalidad «Reproducir esto a continuación» y permite cambiar el tamaño de la barra lateral y de la lista de reproducción

Más información: KDE Gear 24.08
Y, recuerda, todo este software es gratuito y sin publicidad en todos los sentidos: no te cuesta ni un euro y no se cobra en en forma de datos personales. No obstante, si quieres ayudar a su desarrollo siempre puedes participar en su campaña de recaudación de fondos.
La entrada Mix de novedades de KDE Gear 24.08 se publicó primero en KDE Blog.
Cómo bloquear un remitente en Thunderbird
Veamos cómo hacer que el cliente de correo Thunderbird bloquee los correos de un remitente y no los veamos en nuestra carpeta de recibidos

El cliente de correo electrónico Thunderbird no tiene como tal una opción para bloquear correos electrónicos de una dirección de correo específica o de un dominio.
Sin embargo podemos utilizar los filtros de correos para que nos elimine de manera automática los correos que no deseamos ver en nuestra bandeja de entrada.
Estos filtros de correos funcionan por cuenta, es decir, cada cuenta tendrá sus propios filtros configurados. Por lo que al configurar el filtro se debe configurar para que actúe en la cuenta correcta, si gestionamos varias cuentas desde nuestro Thunderbird. La forma más sencilla de hacer esto es:
- Seleccionamos un correo del remitente que deseamos bloquear y hacemos clic derecho con el cursor sobre la dirección del remitente y seleccionamos la opción: Crear filtro para el remitente.
- Esto abrirá la ventana Reglas de filtrado con la dirección de correo electrónico ya insertada en el filtro.
- Ahora le ponemos un nombre a ese regla. Por ejemplo «Lista de correos bloqueados»
- Desmarcamos la opción de Ejecutar manualmente y en la parte inferior, elegimos la acción que debe realizar el filto, en nuestro caso seleccionamos la opción «Eliminar mensaje».
- Pulsamos Aceptar y ya estará creado el filtro. El siguiente correo de ese remitente se eliminará sin compasión.
Desde el menú ≡ → Herramientas → Filtros de mensajes tendremos disponible este filtro que hemos creado y otros que tengamos configurados.
No es necesario crear un filtro individual para cada dirección que quieras bloquear. Ahora que tienes el filtro «Lista de correos bloqueados», la próxima vez que desees bloquear a alguien, puedes copiar y editando el filtro añadir la dirección de la persona en la parte superior del filtro haciendo clic en el botón +
Asegúrate de seleccionar la opción «Cualquiera de estas reglas» ya que quieres que elimine cualquiera de las direcciones de correo que están presentes en la el filtro.
Tu cliente de correo Thunderbird, te ayuda a gestionar de una manera más cómoda y eficiente tu correo electrónico. Echa un vistazo a otras opciones de los filtros porque ahora que ya sabes cómo crearlos y qué hacer con ellos, te pueden resultar útiles en otros casos.
Enlaces de interés

Descargar audio de Bandcamp
Cómo descargar audio desde la web de Bandcamp

Lo primero decir, que lo más justo para el artista es que lo apoyes comprando la música que ofrece, ya sea sus discos, publicaciones digitales, y acudiendo a sus conciertos.
Pero quizás en alguna ocasión simplemente queremos tener tal o cual canción de un grupo para empezar a conocer su sonido, para ver si nos convence y más adelante comprar su albúm.
Este es el método que utilizo para descargar audio desde Bandcamp, una vez que escogemos la opción de reproducir disponible en la web. Es el método que funciona a día de hoy, quizás mañana la página cambie algo que haga que ya no funcione.
Para descargar el audio, voy a utilizar el navegador Firefox, una terminal de comando y el comando wget, yo utilizo un sistema GNU/Linux, desconozco si desde otros sistemas operativos u otros navegadores este tutorial funciona.
Para este ejemplo, voy a utilizar la música del grupo español Futuro Terror y el disco Presente. Grupo militante, de pop guitarrero y oscuro (¿post punk?). El grupo se ha separado después de 11 años cantando a la distopía autocumplida que vivimos y la memoria que olvidamos. El disco se puede descargar por 0€, pero nos sirve para ver cómo descargar un tema en concreto después de reproducirlo.
Abrimos la página en cuestión (en nuestro caso esta) en nuestro navegador Firefox y habilitamos las herramientas de desarrolladores con F12 o en ≡ → Más herramientas → Herramientas para desarrolladores.
Se nos abrirá una ventana inferior con multitud de opciones, pestañas e información. En la barra superior de esa ventana en nuestro caso seleccionamos la pestaña Red, en la barra siguiente, en la parte de la derecha seleccionamos la opción de Medios.
Ahora pulsamos sobre el botón de Play de la página de Bandcamp de la canción que queremos. La dejamos sonar unos segundos, con eso será suficiente.
Tendríamos que ver que en la ventana inferior ha aparecido algo que antes no estaba. Una petición GET de nuestro navegador a un servidor y este nos devuelve entre otras cosas un archivo con un nombre muy largo y de tipo mpeg.
Hacemos doble clic sobre el nombre del archivo, la url se abrirá en una nueva pestaña de nuestro navegador, reproduciendo la canción seleccionada. La pausamos y copiamos la dirección URL de la barra de direcciones.
Abrimos una terminal y escribimos el comando wget <url_copiada> -O <nombre_archivo> En mi ejemplo sería algo así:
wget 'https://t4.bcbits.com/stream/c6637b8e2549137b4356e6a40bfb7dcf/mp3-128/3601255257?p=0&ts=1726751574&t=b935e9a39c3270b368db146b052f30a8b5889995&token=1726751574_83256a0fa4b95b7fa7554f2595fa6146a38f7fb6' -O 'Leoncio Badia.mp3'
Por cierto, por si no sabes quién era Leoncio Badía a quien canta el grupo Futuro Terror.
Con el comando anterior se habrá descargado en nuestro equipo la canción deseada y renombrada con el nombre que le hemos puesto. Ahora la podemos escuchar en local cuanto queramos. Repetiremos el paso en las canciones que queramos.
Y no olvides volver a la página de Bandcamp y apoyar al grupo que ha creado esa música, asistir a sus conciertos, comprar sus otros discos, etc.

Las novedades de Falkon en KDE Gear 24.08
Ya queda menos para finalizar la serie de entradas con las novedades del pack de aplicaciones que puso a disposición de todo el mundo la Comunidad KDE el pasado mes de agosto. Hoy os presento las novedades deFalkon en KDE Gear 24.08, el navegador de web KDE que últimamente utilizo con regularidad.
Las novedades de Falkon en KDE Gear 24.08
Para los que no los conozcan, Falkon es el navegador web rico en funciones de KDE, de hecho, desde hace unos meses es mi navegador web de cabecera, utilizándolo en el 90% de las ocasiones, dejando el resto de casos de uso a Firefox, ya que a veces la compatibilidad de Falkon no es completa en ciertas páginas web.
La razón de utilizar Falkon radica en que noto que funciona más rápido, utilizando menos memoria, y más integrado con el sistema de archivos de KDE. Como colofón, también valoro que tenga un bloqueador de anuncios de integrado y, porqué no decirlo, funciona mejor con la publicación de las entradas en el blog ya que no me da problemas al subir una imagen arrastrando y soltando.
La nueva versión contiene numerosas correcciones de fallos y optimizaciones que hacen que la navegación por la web con Falkon sea más fluida, más fácil y más segura.
Una nueva función en 24.08 es que ahora nos permite personalizar parámetros que afectan a la privacidad y a la funcionalidad según el sitio que visite. Supongamos que no te preocupa el uso de JavaScript en un sitio porque sus autores son de confianza y realmente proporciona una funcionalidad útil, aunque prefieres bloquearlo en el resto de sitios por motivos de seguridad. Ahora puede configurar esto en las Preferencias de Falkon.

Más información: KDE Gear 24.08
Y, recuerda, todo este software es gratuito y sin publicidad en todos los sentidos: no te cuesta ni un euro y no se cobra en en forma de datos personales. No obstante, si quieres ayudar a su desarrollo siempre puedes participar en su campaña de recaudación de fondos.
La entrada Las novedades de Falkon en KDE Gear 24.08 se publicó primero en KDE Blog.
pcp: pmcd network daemon review (CVE-2024-45769), (CVE-2024-45770)
Table of Contents
- 1) Introduction
- 2) Overview of the PCP Network Protocol and Design
- 3) Scope of the Review
- 4) Reproducer Files
-
5) Findings
- A)
__pmDecodeValueSet()Miscalculates Available Buffer Space Leading to a Possible Heap Corruption (CVE-2024-45769) - B)
__pmDecodeCreds()AccessesnumcredsEven if There is not Enough Data - C)
__pmDecodeCreds()shakyneedcalculation whennumcred == 0 - D)
ntohEventArray()Blindly Processes Client Providednrecords - E) Profile Message Allows to Add Infinite Profiles
- F) Fetch Message Allows to Allocate Unlimited
nPmids - G)
pmpostFosters a Symlink Attack Allowing to Escalate frompcptoroot(CVE-2024-45770) - H)
GetContextLabels()Uses UntrustedPCP_ATTR_CONTAINERto Construct JSON Document - I) Issues with
__pmProcessPipe()and File Descriptors not MarkedO_CLOEXEC
- A)
- 6) Exploiting the Heap Corruption in Issue 5.A)
- 7) About CVE Assignments
- 8) Timeline
- 9) References
1) Introduction
Earlier this year we already reported a local symlink attack in Performance Co-Pilot (PCP). The rather complex PCP software suite was difficult to judge just from a cursory look, so we decided to take a closer look especially at PCP’s networking logic at a later time. This report contains two CVEs and some non-CVE related findings we also gathered during the follow-up review.
2) Overview of the PCP Network Protocol and Design
Since PCP is a complex system, this section gives a short overview of the components and network logic found in PCP, that are relevant for this report.
Network Access
The central component of PCP is the pmcd daemon. It implements a custom
network protocol that is accessible either only locally, or on all available
network interfaces, depending on the configuration. On openSUSE it only
listens on the loopback device by default. On other distributions, like
Debian, it listens on all interfaces by default. Even then, PCP specific
configuration is in place that denies certain operations for remote
connections, like so-called store operations, based on access rules. On Debian
these accesses are setup so that only connections considered to be “local” are
allowed to perform data store operations.
Whether a connection is local or not is determined either from the type of connection (e.g. UNIX domain socket connections are considered local) or by the sender’s IP address (loopback IP addresses are considered local). Using sender IP addresses for security decisions is generally not considered safe, since IP addresses can be spoofed. As this is a special case of checking for loopback IP addresses, it can be considered safe, since the Linux kernel should not allow packets received on remote interfaces to carry loopback IP addresses as sender.
The access configuration is found in the “pmcd.conf” configuration file.
Daemon and Agent Credentials
The PCP system can collect more or less arbitrary data in a generic manner.
In the protocol, metric IDs are specified that are used to identify an agent
responsible for managing the actual data of interest. A PCP agent can be a
shared object (plugin) which is loaded directly into the pmcd daemon, or a
separate program or script that communicates with pmcd via a pipe file
descriptor.
pmcd itself drops privileges to an unprivileged pcp user and group, but a
privileged special component pmdaroot is always kept around to perform
privileged operations, if necessary. Also separate agents can (and usually do)
run with full root privileges.
Typical agents that are configured by default are:
- /var/lib/pcp/pmdas/proc/pmdaproc: gathers data about every process listed in /proc.
- /var/lib/pcp/pmdas/linux/pmdalinux: gathers a plethora of Linux specific data e.g. from the /proc and /sys file systems.
- /var/lib/pcp/pmdas/kvm/pmdakvm: tracks performance data related to KVM virtual machine emulation.
The actual agent configuration on a system is also found in the “pmcd.conf” configuration file.
3) Scope of the Review
For the review we looked into PCP release 6.2.1. For this final report we verified and updated everything to match the more recent 6.3.0 tag.
Our focus during the review was on the networking protocol implemented in the
pmcd daemon. Furthermore we peeked into the most common agents and helper
processes like pmdaroot, pmdaproc, pmdalinux and pmdakvm. We only
looked into the situation of PCP running on Linux.
4) Reproducer Files
Together with this report, we provide a couple of reproducers for
vulnerabilities that can be triggered over the network. They will be mentioned
in the respective sections. Every reproducer contains a complete binary
client-side protocol exchange that can trigger the issue. A simple way to run
such a reproducer is by using the netcat utility in this manner:
nc -U /run/pcp/pmcd.socket <reproducer-file
5) Findings
Bugfixes for these issues are found in the recent 6.3.1 upstream release. Individual bugfixes are pointed out in the following sections, as far as possible.
A) __pmDecodeValueSet() Miscalculates Available Buffer Space Leading to a Possible Heap Corruption (CVE-2024-45769)
There is a miscalculation in __pmDecodeValueSet(). The vindex jumps to 32-bit
offsets, while the check in p_result.c:415 (vindex > pdulen) uses byte
offsets. This makes it possible to address data beyond the actual packet
payload. Since __ntohpmValueBock() in line 432 also swaps bytes in these
places, this represents a full remote DoS leading to SIGABRT, SIGSEGV and/or
corruption of the heap. By very skillfully corrupting the heap, this might
even allow more advanced attacks like privilege escalation or integrity
violation. For an in-depth look at exploiting this issue, see section 6)
below.
The reproducer file decode-value-set-out-of-bound-write
can trigger this issue. When running pmcd in Valgrind, the following output
can be seen:
Invalid read of size 4
at 0x48B57DC: __pmDecodeValueSet (p_result.c:432)
by 0x4D007BF: ???
by 0x48B633B: __pmDecodeResult_ctx (p_result.c:806)
by 0x11BC8F: DoStore (dostore.c:149)
by 0x111F25: HandleClientInput (pmcd.c:445)
by 0x110984: ClientLoop (pmcd.c:880)
by 0x110984: main (pmcd.c:1192)
Address 0x4d012c0 is 2,320 bytes inside an unallocated block of size 3,372,592 in arena "client"
Invalid write of size 4
at 0x48E06C4: __ntohpmValueBlock (endian.c:283)
by 0x48B57E0: __pmDecodeValueSet (p_result.c:432)
by 0x48B633B: __pmDecodeResult_ctx (p_result.c:806)
by 0x11BC8F: DoStore (dostore.c:149)
by 0x111F25: HandleClientInput (pmcd.c:445)
by 0x110984: ClientLoop (pmcd.c:880)
by 0x110984: main (pmcd.c:1192)
Address 0x4d012c0 is 2,320 bytes inside an unallocated block of size 3,372,592 in arena "client"
Invalid read of size 4
at 0x48B57E1: __pmDecodeValueSet (p_result.c:433)
by 0x48B633B: __pmDecodeResult_ctx (p_result.c:806)
by 0x11BC8F: DoStore (dostore.c:149)
by 0x111F25: HandleClientInput (pmcd.c:445)
by 0x110984: ClientLoop (pmcd.c:880)
by 0x110984: main (pmcd.c:1192)
Address 0x4d012c0 is 2,320 bytes inside an unallocated block of size 3,372,592 in arena "client"
Since remote connections are by default not allowed to enter this code path (this is a store operation), the issue is less severe than it looks at first.
This issue is fixed in upstream commit 3fc59861174a.
B) __pmDecodeCreds() Accesses numcreds Even if There is not Enough Data
__pmDecodeCreds() checks the amount of available data too late, so that the
numcreds field of creds_t is accessed and byte swapped even if it wasn’t
supplied by the client. This happens in p_creds.c:78.
The reproducer file
numcreds-undefined-data can trigger
the issue. When running pmcd in Valgrind then the following output can be
seen:
Conditional jump or move depends on uninitialised value(s)
at 0x48B83A5: __pmDecodeCreds (p_creds.c:74)
by 0x11BFFD: DoCreds (dopdus.c:1427)
by 0x111F1C: HandleClientInput (pmcd.c:469)
by 0x110A74: ClientLoop (pmcd.c:880)
by 0x110A74: main (pmcd.c:1192)
Since the heap allocated buffer returned from pmGetPDU() is bigger than the
actual payload (at least 1024 bytes), this only results in an undefined data
error. No practical exploit should result from this.
This issue is fixed in upstream commit 3561a367072b.
C) __pmDecodeCreds() shaky need calculation when numcred == 0
__pmDecodeCreds() behaves shakily when numcred == 0. The need
calculation ends up using a negative value of -1 in p_creds.c:86. An
attacker can get past the need != len check, providing insufficient data.
Luckily the negative need is not used for anything else. The result of the
call will be a zero length credlist, that will not be processed further by
the calling DoCreds() function.
This issue is addressed by the same bugfix commit as for issue 5.B).
D) ntohEventArray() Blindly Processes Client Provided nrecords
The function ntohEventArray() does not check whether there is enough input
data (and cannot check, since it is missing a length input parameter). It
processes the nrecords provided by the client and starts byte swapping away,
leading to out of bound heap read and write operations.
The Valgrind output for an attack of this function looks like this:
Invalid read of size 4
at 0x48E168A: __bswap_32 (byteswap.h:52)
by 0x48E168A: ntohEventArray (endian.c:250)
by 0x48B67DA: __pmDecodeValueSet (p_result.c:432)
by 0x48B737B: __pmDecodeResult_ctx (p_result.c:806)
by 0x11BC8F: DoStore (dostore.c:149)
by 0x111F25: HandleClientInput (pmcd.c:445)
by 0x110984: ClientLoop (pmcd.c:880)
by 0x110984: main (pmcd.c:1192)
Address 0x4fc109c is 2,891,036 bytes inside an unallocated block of size 3,382,368 in arena "client"
Invalid write of size 4
at 0x48E168E: ntohEventArray (endian.c:250)
by 0x48B67DA: __pmDecodeValueSet (p_result.c:432)
by 0x48B737B: __pmDecodeResult_ctx (p_result.c:806)
by 0x11BC8F: DoStore (dostore.c:149)
by 0x111F25: HandleClientInput (pmcd.c:445)
by 0x110984: ClientLoop (pmcd.c:880)
by 0x110984: main (pmcd.c:1192)
Address 0x4fc109c is 2,891,036 bytes inside an unallocated block of size 3,382,368 in arena "client"
The reproducer ntohevent-array-out-of-bound-write is able to provoke this situation. We found this problem by using AFL fuzzing. The problematic function is nested rather deeply in the parsing logic and it escaped manual review efforts.
Regarding the severity of this issue, there is not much degree of freedom for
an attacker, because the function simply linearly swaps data past the end of
the valid pdubuf. It would only have impact beyond DoS, if the immediately
following heap-block contains relevant application data. Chances are that the
data is corrupted so much, that the program will crash anyway, though.
This issue is fixed in upstream commit 3561a367072b.
E) Profile Message Allows to Add Infinite Profiles
The “profile” message allows unauthenticated users to DoS the pmcd daemon.
Memory is allocated for the lifetime of the TCP session for every new ctx
index, which is 32-bit wide and thus allows to store up to 2^32 profiles,
likely leading to an out of memory situation. See DoProfile().
It might make sense to limit the number of profiles at least for unauthenticated users, if this is possible.
The issue is fixed in upstream commit 1e54aa7de51b0e6c6cceab2a52e3f6893070f70f.
F) Fetch Message Allows to Allocate Unlimited nPmids
In HandleFetch() the client controlled nPmids is assigned to maxnpmids
and is in turn used to allocate memory via pmAllocResult(). This could also
lead to memory hogging or a network DoS.
A fix for this issue is found in upstream commit c9b1a2ecb4.
G) pmpost Fosters a Symlink Attack Allowing to Escalate from pcp to root (CVE-2024-45770)
This issue is somewhat related to CVE-2023-6917 we reported earlier this year.
pmpost is used to append messages to the “PCP notice board”. It is called
from different contexts, one of them is as root from within the pmcd
startup script (called rc_pmcd in the repository). The program writes the
message provided on the command line to the file in /var/log/pcp/NOTICES. The
relevant code for opening the file is found in pmpost’s main() function
(found in pmpost.c):
if ((fd = open(notices, O_WRONLY|O_APPEND, 0)) < 0) {
if ((fd = open(notices, O_WRONLY|O_CREAT|O_APPEND, 0664)) < 0) {
fprintf(stderr, "pmpost: cannot open or create file \"%s\": %s\n",
notices, osstrerror());
goto oops;
}
#ifndef IS_MINGW
/* if root, try to fix ownership */
if (getuid() == 0) {
if ((fchown(fd, uid, gid)) < 0) {
fprintf(stderr, "pmpost: cannot set file gid \"%s\": %s\n",
notices, osstrerror());
}
}
#endif
lastday = LAST_NEWFILE;
}
The directory /var/log/pcp belongs to pcp:pcp. The file is opened without
passing the O_NOFOLLOW flag, thus it will open symlinks placed there by the
pcp user. This allows to trick pmpost into creating new files in arbitrary
locations, or to corrupt arbitrary existing files in the system. It thus poses
a local denial of service vector.
Furthermore, if the NOTICES file is newly created and pmpost runs as root,
then a fchown() to pcp:pcp is executed on the file. Thus it allows to pass
the ownership of arbitrary newly created files in the system to pcp:pcp.
This is likely a full local root exploit from pcp to root. Possible attack
vectors are placing files into one of the various .d drop in configuration
file directories in /etc.
Since the directory /var/log/pcp does not have a sticky bit set, the
protected_symlinks setting of the Linux kernel does not protect from harm
in this context.
This issue is addressed in upstream commit 22505f9a43
H) GetContextLabels() Uses Untrusted PCP_ATTR_CONTAINER to Construct JSON Document
When a client connects to pmcd, then attributes can be passed (found in
ClientInfo.attrs). One of these attributes, PCP_ATTR_CONTAINER, is stored
without further verification in ConnectionAttributes(). This value is used in
the function GetContextLabels() to construct a JSON document. Here it is not
checked whether the data contains any JSON syntax elements, which allows
to inject arbitrary additional data into the JSON document by crafting a
suitable CONTAINER attribute value.
The reproducer
label-req-container-json-injection
demonstrates this problem, by injecting an "evilkey": "evilvalue" element
into the JSON document, by choosing a crafted container attribute value.
It seems that by doing this a client can only fool itself; this doesn’t
have any practical value for an attacker.
We followed the use of the CONTAINER attribute also into the pmdaroot helper
program, where the attribute can also arrive, to query data regarding a
specific container in root_container_search(). For a while it looked like
this might even allow command line parameter injection e.g. in lxc.c, where
the container name is passed to lxc-info. It turned out, however, that the
caller provided value is only used for comparing it against the container
names found locally, so crafted data should not cause any harm in this
spot.
The fix for this issue is found in upstream commit d68bd777ae
I) Issues with __pmProcessPipe() and File Descriptors not Marked O_CLOEXEC
Most, if not all, file descriptors opened by PCP code are not marked
O_CLOEXEC. This may cause problems when executing child processes that
operate in a different security context than the parent, or are not prepared
to safely handle any unexpectedly inherited open files, and might leak them on
their end to further child processes.
This is not a problem when starting agents from within pmcd, because
CreateAgentPOSIX() explicitly closes any file descriptors larger than 2.
Similarly in the pmdaroot process in function root_create_agent() any
non-std file descriptors are closed in the child context, before running
execvp(). It is a problem in the context of the __pmProcessPipe()
function, though, which executes arbitrary command lines in child processes in
a popen() style.
The latter function does not close excess file descriptors. Depending on the
context in which the function is invoked, sensitive file descriptors may leak
into unexpected contexts. One such context we identified is in the pmdaroot
process when it executes lxc-info to obtain information about LXC containers.
To verify this, we replaced the lxc-info binary by a custom script and
triggered the execution of lxc-info via pmcd. The custom script received
the following open file descriptors:
lr-x------ 1 root root 64 Aug 2 12:23 0 -> pipe:[104916]
l-wx------ 1 root root 64 Aug 2 12:23 1 -> pipe:[107248]
l-wx------ 1 root root 64 Aug 2 12:23 2 -> /var/log/pcp/pmcd/root.log
lrwx------ 1 root root 64 Aug 2 12:23 3 -> socket:[105912]
lrwx------ 1 root root 64 Aug 2 12:23 4 -> socket:[105913]
lrwx------ 1 root root 64 Aug 2 12:23 5 -> socket:[105914]
lrwx------ 1 root root 64 Aug 2 12:23 6 -> socket:[105917]
lrwx------ 1 root root 64 Aug 2 12:23 7 -> socket:[105922]
As can be seen from this, the process inherited all open socket connections
from the pmdaroot process. This could prove a vital local root exploit, if
the sockets end up in the wrong hands, since clients of pmdaroot can
start arbitrary commands as root via the PDUROOT_STARTPMDA_REQ message.
Another use of __pmProcessPipe() that could be problematic in this
respect, is in the Perl module glue code, where the __pmProcessPipe()
function is made available as $pmda->add_pipe(...) (see function
local_pipe() in perl/PMDA/local.c. The in-tree Perl modules that make use
of this function don’t seem to open any additional files that could leak,
though.
This issue is addressed in upstream commit 1d5a8d1c6fe8b3d5b35a9cc0ed6644696c67ec91
6) Exploiting the Heap Corruption in Issue 5.A)
This section investigates to what ends the heap corruption issue outlined in section 5.A) can be exploited by a skillful attacker.
The location where the out-of-bound write occurs in issue 5.A) is under quite
some attacker control. As we know from the issue, there is a boundary
check in p_result.c: 415, but the check is in bytes, while we can address
32-bit offsets from the start of pdubuf. The PDU (protocol data unit) is
received in LIMIT_SIZE mode, thus at max 64 KiB of data can be transferred
for the attack. This means the attacker can specify a vindex of up to 65536.
The valid pdulen will be 65536, but the vindex will address up to 4 *
65536 = 256 KiB. Thus an attacker can cause heap corruption in the heap memory
area made up of the 192 KiB following the pdubuf.
An interesting data structure that caught our interest is also found on the
heap: the client array, holding the ClientInfo data structures for all
connected clients. When sending small PDUs, the client buffer will
already be located some 10 KiB after the pdubuf in memory. Sending a
small PDU won’t do, though, because then the vindex cannot address far
enough into the heap to reach it. When sending a larger PDU of a few
kilobytes, pdubuf will be located after the client buffer on the
heap, making it again unreachable for the attack.
Things can be turned around by creating a lot of connections to pmcd,
though. The client buffer is realloc()‘d in the NewClient() function,
when new clients are coming in that no longer fit into the client array. By
temporarily creating e.g. 200 connections to pmcd, it is possible to force
realloc() to move the client buffer to a larger heap address. This in turn
makes it possible to send an attack payload that is large enough to cause heap
corruption 10 to 20 KiB beyond the end of pdubuf, while pdubuf will still
be located at a smaller address than the client buffer.
The heap addresses used are relatively deterministic. ASLR protection does not
help much here, because the attack is not about absolute addresses, but about
relative offsets between data structures on the heap. When freshly starting
pmcd and sending an initial attack payload, the offset between client
and pdubuf is always the same. When doing more complex operations that are
needed to perform a full attack, the offsets are somewhat less
deterministic, but still patterns can be observed. Thus a successful guess is
well within reach, as we believe, especially since the local attacker also has
the possibility to force the daemon to crash and be restarted, allowing for
multiple attempts.
A full attack scenario that we came up with is the following:
- The attacker creates a connection from remote, which ends up with
ClientInfo->denyOps == 0x2which meansPMCD_OP_STOREis denied for the remote connection. This connection only sends the initial message and then stays idle, but connected. - The attacker sends a valid
PDU_RESULTof a somewhat larger size (3 KiB) using a local connection. - The attacker creates 200 parallel idling connections towards
pmcd, to force theclientbuffer to be moved to a larger heap address. Then the connections are terminated again. - The attacker sends an attack
PDU_RESULTpayload of 3-4 KiB size using a local connection. The attack payload contains just one badvindexthat is tuned just so that__ntohpmValueBlock()will operate exactly on the address ofclient[0].denyOpsfor the connection still open from step 1). - The attack will corrupt the
ClientInfofrom step 1) in such a way thatdenyOpsno longer containsPMCD_OP_STORE. The connection will thus be “upgraded” to be treated like a local connection, although it is remote.
We verified this scenario in a practical example on openSUSE Tumbleweed against
pmcd version 6.2.1. Arriving at step 4) the distance to cross to reach the
client[0] structure was a bit over 5 KiB:
(gdb) p (char*)client - (char*)pdubuf
$2 = 5520
Before the processing of the attack payload, the client[] structure is
intact:
(gdb) p client[0]
$8 = {fd = 17, status = {connected = 1, changes = 0, attributes = 0}, profile = {nodes = 0, hsize = 0,
hash = 0x0, next = 0x0, index = 0}, denyOps = 2, pduInfo = {features = 3652, licensed = 1, version = 0,
zero = 0}, seq = 1, start = 1723726720, addr = 0x5625f56b9160, attrs = {nodes = 0, hsize = 0, hash = 0x0,
next = 0x0, index = 0}}
After the attack has been carried out, it is corrupted like this:
(gdb) p client[0]
$30 = {fd = 17, status = {connected = 1, changes = 0, attributes = 0}, profile = {nodes = 0, hsize = 0,
hash = 0x0, next = 0x0, index = 0}, denyOps = 33554432, pduInfo = {features = 0, licensed = 0, version = 1,
zero = 0}, seq = 1141768448, start = 1723726720, addr = 0x5625f56b9160, attrs = {nodes = 0, hsize = 0,
hash = 0x0, next = 0x0, index = 0}}
As can be seen this also corrupts features, licensed, version and seq.
This did not stop the connection from step 1) from sending a
PDU_RESULT message without being denied. So the upgrade of the remote
connection was carried out successfully. The effects of the attack could be
tuned further by changing the vindex offset to a smaller or larger value, to
maybe cause less fallout in the ClientInfo structure, depending on the needs
of the attacker.
As this shows, the heap corruption issue offers more possibilities than it
might look at first. It allows to violate the integrity of the pmcd daemon
in unexpected ways.
7) About CVE Assignments
The PCP maintainers don’t consider denial-of-service attacks CVE worthy, since the service will be restarted automatically via systemd. For this reason no CVEs have been assigned for this class of issues.
A similar consideration has been made by the PCP maintainers regarding the memory corruption issues: as long as the service only crashes, it’s not CVE worthy. For this reason a CVE has been assigned only for issue 5A), which proved to be exploitable as shown in section 6).
8) Timeline
| 2024-08-06 | We shared a comprehensive report with findings and recommendations with the PCP maintainers at pcp-maintainers@groups.io. We offered coordinated disclosure according to our disclosure policy |
| 2024-08-14 | The date of 2024-09-17 has been agreed upon for publication of the findings |
| 2024-08-15 | There was some uncertainty about the severity of the heap corruption issue 5a), so we investigated it more deeply and shared our findings with the PCP maintainers |
| 2024-09-09 | We recommended to the PCP maintainers to obtain CVEs from the RedHat security team, and they received the two CVEs by this date |
| 2024-09-17 | A bugfix release has been published as planned by the PCP upstream maintainers |
9) References
El cliente de correo Thunderbird y los correos spam
Lidiar con el spam en nuestro correo electrónico puede resultar frustrante, pero Thunderbird tiene algunas herramientas para hacer que los mensajes no deseados sean menos dolor de cabeza

El spam en internet es un mal que consume recursos y tiempo. Multitud de mensajes en todo internet consumen un montón de energía en algo tan vacío como enviar solicitudes de venta de tal o cual producto o página web.
Lo bueno es que existen alternativas que automatizan la gestión de ese spam, para no tener que hacer a mano una tarea tediosa y cuasi infinita que abrriría al mas paciente.
Desde la web del cliente Thunderbird comparten un artículo sobre cómo hacer que el cliente de correo se ocupe de mandar a la basura el correo no deseado y no hacernos perder el tiempo en algo que consume tanto tiempo.
Tienes el artículo original en inglés en este enlace y a continuación hago una traducción/adaptación del artículo:
Se necesita tiempo, entrenamiento y paciencia, pero eventualmente podrás salir victorioso de ese correo basura. En este artículo explicaremos cómo funciona el filtro de spam de Thunderbird y cómo ajustarlo para obtener resultados más efectivos.
¿Qué hace efectivo el filtro de spam de Thunderbird?
El filtro adaptativo de Thunderbird utiliza uno de los métodos más antiguos que existen, un algoritmo de Bayes, para ayudar a decidir qué mensajes deben marcarse como basura. Pero para que funcione de manera eficiente y confiable, también necesita un poco de ayuda de tu parte.
La documentación de Thunderbird y la comunidad de soporte siempre han mencionado que el filtro de spam necesita alguna intervención humana, pero nunca entendí por qué hasta que investigué cómo funciona un algoritmo Bayes.
Por qué el algoritmo de Bayes necesita tu ayuda
Es útil pensar en el filtro de spam de Thunderbird como una especie de detective de la bandeja de entrada, pero el usuario desempeña un papel decisivo a la hora de entrenarlo y hacerlo más inteligente. Esto se debe a que un algoritmo de Bayes calcula las probabilidades de que un correo electrónico sea spam basándose en las palabras que contiene y utiliza la experiencia pasada para hacer una suposición fundamentada.
A continuación se muestra un ejemplo: recibe un correo electrónico que contiene las palabras «¡Urgente, actúe ahora para reclamar su premio gratis!» El algoritmo verifica con qué frecuencia aparecen esas palabras en mensajes de spam conocidos en comparación con mensajes buenos conocidos. Si detecta que esas palabras (especialmente aquellas como “gratis” y “premio”) se encuentran frecuentemente en mensajes que marcaste como spam, pero no están presentes en mensajes buenos, las marcará como basura.
Por eso es igualmente importante marcar los mensajes como «No basura». Luego, aprende a reconocer las «buenas» palabras que son comunes en los correos electrónicos que no son spam. Y por cada mensaje que marques, la probabilidad de que el filtro de spam de Thunderbird identifique con precisión el spam solo aumenta.
Por supuesto, no es perfecto. Es posible que un mensaje que marques como basura no siempre se marque como basura. Una forma confiable y a prueba de fallos de garantizar que ciertos mensajes se marquen como basura es crear filtros manualmente.
¿Quieres asegurarte de que los mensajes importantes nunca se marquen como basura? Prueba a incluirlo en la lista blanca.
Dado que los patrones de correo basura cambian constantemente, es una buena idea entrenar Thunderbird periódicamente. Sin un entrenamiento frecuente, es posible que no proporcione grandes resultados.
Configuración del filtro basura
Ahora que entendemos qué hace eficiente el filtro spam de Thunderbird, veamos cómo administrar la configuración y cómo entrenar Thunderbird para obtener resultados más consistentes.
Configuración global de basura
El filtrado de spam está habilitado de forma predeterminada, pero puedes ajustar lo que debería suceder con los mensajes marcados como basura usando la configuración global. Estas configuraciones se aplican a todas las cuentas de correo electrónico, aunque algunas se pueden anular en la Configuración por cuenta.
- Haz clic en el botón de menú (≡) > Ajustes > Privacidad y seguridad.
- Baja hasta la sección de Correo basura y selecciona los ajustes según tus preferencias.
- En mi caso personal tengo marcadas todas las opciones. Los correos basura se van a la carpeta (no los borro por si acaso me equivoco), se marcan como leídos y activa el registro del filtro adaptativo.
Esos mismos ajustes los tenemos de forma global o podemos configurarlos de manera específica si tenemos varias cuentas gestionadas con Thunderbird.
Cómo desactivar el filtrado adaptativo de Thunderbird
Para ello en la sección anterior hay que desmarcar la opción: Activar el registro del filtro adaptativo de correo basura.
Lista blanca
Se pueden seleccionar libretas de direcciones para usarlas como lista blanca. Los remitentes cuyas direcciones de correo electrónico estén en una libreta de direcciones incluida en la lista blanca no se marcarán automáticamente como basura. Sin embargo, aún puedes marcar manualmente un mensaje de un remitente incluido en la lista blanca como basura.
Se recomienda habilitar la lista blanca para ayudar a garantizar que los mensajes de las personas que le importan no se marquen como basura.
Sobre tu cuenta, botón derecho > Configuración > Correo no deseado
Entrenando el filtro basura
Esta parte es importante: para que el filtro basura de Thunderbird sea efectivo, debes entrenarlo para que reconozca tanto mensajes basura como no basura. Si sólo haces una u otra cosa, el filtro no será muy efectivo.
Es importante marcar los mensajes como basura antes de eliminarlos. Si solo eliminas un mensaje no entrenas el filtro.
En cada correo podemos seleccionar el icono (algo similar a una llama) de marcarlo como basura y dependiendo de nuestras configuraciones que hemos visto anteriormente Thunderbird hará una cosa u otra.
Si has configurado en la Configuración global de correo no deseado o Configuración por cuenta el mover el correo electrónico no deseado a una carpeta diferente, el correo electrónico desaparecerá del Panel de lista de mensajes. No te preocupes, el correo electrónico se ha movido a la carpeta que configuraste para correo no deseado.
El filtro basura de Thunderbird está diseñado para aprender de los datos de entrenamiento que proporcionas. Marcar más mensajes como basura o no basura mejorará la precisión de su filtro de basura al agregar más datos de entrenamiento.
Dile a Thunderbird lo que NO es basura
A veces, el filtro de basura de Thunderbird puede marcar los mensajes buenos como basura. Es importante indicarle al filtro qué mensajes no son basura, especialmente en una nueva instalación de Thunderbird.
Nota: Comprueba con frecuencia (diariamente o semanalmente) tu carpeta de correo no deseado para ver si hay buenos mensajes marcados erróneamente como basura y marcalos como No basura. Esto recuperará los mensajes buenos y mejorará la precisión del filtro.
Otras formas de bloquear mensajes no deseados
Crear filtros de manera manual
El filtro de basura adaptable de Thunderbird no es una barrera absoluta contra mensajes de direcciones o tipos de mensajes específicos. Puedes utilizar mecanismos más potentes para bloquear mensajes no deseados:
- Bloquear algunas direcciones
- Crear filtros para bloquear mensajes basándose en el asunto u otros criterios.
Utilizar un servicio externo de filtrado
También puedes utilizar un servicio de filtro externo para ayudar a clasificar el correo electrónico y bloquear la basura:
- Haz clic en el botón de menú (≡) > Configuración de la cuenta > Su cuenta > Correo no deseado
- Habilita la opción Confiar en las cabeceras de correo no deseado enviadas por:
- Elige un servicio de filtro externo en el menú desplegable.
Personalmente en mi servicio de correo tengo configuradas unas listas negras de direcciones en las que voy añadiendo direcciones de las que no quiero que lleguen a mi correo sus mensajes de spam, librando a Thunderbird de esa carga.
Y hasta aquí el artículo de Thunderbird que puedes leer en el original en este enlace:
