Cualquier app que controle los ventiladores necesita permisos de administrador, y eso es algo que deberías cuestionar siempre. Esta página explica exactamente qué se instala, qué puede hacer y cómo quitarlo.

Por qué hace falta permiso de administrador

La velocidad de los ventiladores la gestiona el SMC (System Management Controller), un microcontrolador del Mac al que macOS no permite escribir desde una aplicación normal. Leer temperaturas y RPM es inofensivo, pero escribir una velocidad requiere privilegios de sistema.

Por eso FanFan Control se divide en dos piezas: la aplicación que ves, que corre con tus permisos de usuario normales, y un pequeño ayudante privilegiado que hace únicamente las operaciones que exigen permisos elevados.

Qué se instala exactamente

La primera vez que activas un control manual, macOS te pide tu contraseña una sola vez e instala dos archivos:

ArchivoQué es
/Library/PrivilegedHelperTools/com.fanfancontrol.helper El ayudante. Unos 450 KB.
/Library/LaunchDaemons/com.fanfancontrol.helper.plist El registro que le dice a macOS cuándo arrancarlo.

Un detalle importante: la app no los copia por su cuenta. Lo hace macOS a través de SMJobBless, el mecanismo oficial de Apple para esto. El sistema verifica las firmas de ambas partes antes de instalar nada, y si algo no cuadra, se niega. La app nunca manipula directamente archivos del sistema ni pide tu contraseña por su cuenta: el diálogo que ves es el de macOS.

Qué puede hacer el ayudante (y qué no)

Aquí está la parte que de verdad importa. El ayudante no ejecuta órdenes arbitrarias: expone una interfaz cerrada de seis operaciones, y no existe ninguna forma de pedirle nada más.

OperaciónQué hace
listFansAndTempsDevolver ventiladores y temperaturas
setFanRPMFijar la velocidad de un ventilador
setFanAutoDevolver un ventilador al control del sistema
setAllAutoDevolver todos al control del sistema
discoverKeysEnumerar las claves de sensor del SMC
helperVersionInformar de su versión

No hay acceso a archivos, ni a la red, ni ejecución de comandos. Aunque alguien lograse comunicarse con él, el daño posible se limita a mover ventiladores.

Validación en las dos direcciones

El riesgo clásico de este diseño es que un programa malicioso encuentre el ayudante ya instalado y lo use como puerta trasera. Se evita con una comprobación criptográfica mutua:

identifier "com.fanfancontrol.app" and anchor apple generic and certificate leaf[subject.OU] = "5P2FSRLTVZ"

Traducido: solo acepta órdenes de un programa que se identifique como FanFan Control, firmado con un certificado emitido por Apple, y cuyo identificador de equipo de desarrollo sea exactamente 5P2FSRLTVZ — el nuestro. Cualquier otro proceso que intente conectarse es rechazado, incluso ejecutándose como administrador. Y como esa comprobación la resuelve el propio sistema operativo contra la firma del binario, no basta con que un impostor se ponga el mismo nombre.

Firma, notarización y Hardened Runtime

La app y el ayudante se compilan con Hardened Runtime, que impide inyectar código en el proceso en ejecución, y se firman con un certificado Developer ID emitido por Apple a nombre de Jaime Lillo Benito.

Después, cada versión se envía a notarizar a Apple, que la analiza en busca de código malicioso y devuelve un certificado que va incrustado en la propia descarga. Puedes comprobarlo tú mismo antes de abrir nada, con el DMG ya descargado:

spctl -a -t open --context context:primary-signature -v FanFanControl.dmg

Debe responder accepted y source=Notarized Developer ID.

Por eso, al instalar el ayudante, macOS muestra un aviso de «Background Items Added» con el nombre Jaime Lillo Benito: es el nombre real de la cuenta de Apple Developer con la que se firma, y es justo la prueba de que Apple verificó quién hay detrás. No es un error ni un dato del ayudante que se pueda cambiar — un instalador sin ningún nombre identificable detrás sería la señal menos fiable, no al revés.

La seguridad térmica no se puede desactivar

Bajar los ventiladores de más puede recalentar el equipo. Por eso la app incorpora un límite que no depende de tu configuración: si la temperatura de la CPU supera los 95 °C, todos los ventiladores vuelven al control automático del sistema de inmediato, se hayan puesto como se hayan puesto. No hay ajuste ni preferencia que lo anule.

Tu licencia no viaja a ninguna parte

La licencia se valida en local. La app lleva incrustada una clave pública Ed25519 con la que comprueba la firma de tu clave; la clave privada que las firma vive únicamente en el servidor de compra y nunca se distribuye. Como la verificación es matemática y no una consulta, activar la licencia no requiere conexión a internet y no se envía ningún identificador de tu equipo a ningún sitio.

Consecuencia práctica: la app seguirá funcionando aunque esta web desaparezca. No hay servidor del que dependa tu copia.

El único matiz, y conviene decirlo: si una compra se reembolsa, su clave pasa a una lista de licencias anuladas que viaja dentro de las versiones nuevas de la app. Sigue sin haber consultas por internet —la lista va compilada en el binario firmado—, pero una licencia reembolsada deja de desbloquear Pro en cuanto se actualiza. Ver la política de reembolsos.

Actualizaciones: opcionales y firmadas

La app puede avisarte cuando hay una versión nueva. Es lo único que llega a pedir a la red, y te pregunta la primera vez antes de activarlo: si dices que no, no se conecta nunca y conservas la aplicación entera, sin recortes.

Con la comprobación activa, lo único que ocurre es que la app descarga de este sitio un fichero pequeño con la lista de versiones publicadas. Esa petición revela lo mismo que visitar cualquier página —tu IP y la versión que tienes instalada— y no lleva tu licencia, tu email ni ningún dato de tu Mac.

Cada actualización va firmada con una clave Ed25519 distinta de la que firma las licencias, y su parte pública está incrustada en la app. Una descarga cuya firma no cuadre se descarta sin llegar a instalarse, así que ni un servidor comprometido ni alguien interceptando la conexión pueden colar una versión manipulada. Y, como cualquier otra, llega firmada y notarizada por Apple.

Cómo desinstalarlo todo

Arrastrar la app a la papelera no borra el ayudante, porque vive fuera de ella. Para eliminarlo por completo, en Terminal:

sudo launchctl bootout system/com.fanfancontrol.helper
sudo rm /Library/PrivilegedHelperTools/com.fanfancontrol.helper
sudo rm /Library/LaunchDaemons/com.fanfancontrol.helper.plist

Al quitarlo, los ventiladores vuelven al control de macOS. También puedes borrar la licencia guardada buscando com.fanfancontrol.app.license en la app Acceso a Llaveros.

¿Alguna duda que no esté aquí?

Escribe a soporte@fanfancontrol.com y te la respondo.