El martes 24 de marzo de 2026, Linear desplegó un cambio de código que expuso datos de equipos privados a otros miembros dentro del mismo espacio de trabajo. Durante aproximadamente una hora, de 12:07 a 1:10 UTC, los miembros del espacio de trabajo, incluidos usuarios invitados, pudieron acceder a datos fuera de sus permisos normales de equipo.

La capa de autorización de Linear utiliza resolutores de «grupo de sincronización» para añadir filtros de permisos por consulta. Se diseñó una optimización de rendimiento para omitir los resolutores que nunca podrían coincidir con un usuario, y se limitó su ejecución a un único espacio de trabajo interno. Pero la ruta de código que desactivaba la optimización en otros entornos tenía un error de sombreado de variables: en lugar de recurrir a los filtros originales, eliminaba todos los resolutores específicos de usuario, de modo que la comprobación de permisos posterior se omitía por completo y las consultas devolvían resultados sin filtrar de forma silenciosa.

El cambio había sido revisado por pares y probado, pero solo se cubrió la ruta con la optimización activa; nadie probó la ruta desactivada para otros espacios de trabajo. El equipo de Linear señaló específicamente que el error no fue escrito por IA: fue una regresión humana de sombreado de variables que puso de manifiesto una laguna en la cobertura de pruebas.

La exposición se produjo a través de resúmenes de notificaciones (un miembro podía recibir un resumen de todo el espacio de trabajo), inicializaciones de sincronización de clientes, sesiones móviles y consultas amplias de OAuth/API. No se filtraron credenciales ni claves de API, y no hubo evidencia de abuso malicioso. Linear revirtió el cambio en menos de una hora, forzó la recarga de los clientes web y de escritorio, cerró las sesiones móviles activas y notificó a los contactos de los espacios de trabajo afectados en un plazo de 48 horas.

Durante ~1 hora el 24 de marzo de 2026, los datos de equipos privados fueron accesibles para otros miembros e invitados del mismo espacio de trabajo; ~7.000 sincronizaciones y llamadas a la API podrían haberlos extraído.

La ruta desactivada de la optimización tenía un error de sombreado de variables que omitía todos los resolutores específicos de usuario.

La cobertura de pruebas validaba la optimización cuando estaba activa, pero no la ruta en la que se desactivaba.

Las comprobaciones de permisos fallaron abiertas: la consulta devolvía resultados en lugar de generar un error.

Las capas de notificaciones, sincronización, móvil y API confiaban todas en la capa de permisos defectuosa.

Una «optimización» del control de acceso que omite un filtro solo es segura si se prueba su ruta desactivada, o si una revisión del camino feliz da luz verde a una ampliación silenciosa de permisos.

Linear amplió las pruebas de integración en entornos de despliegue, tipos de equipo, roles, acceso de invitados y métodos de autenticación, limitó los elementos de notificación por resumen y se comprometió a realizar revisiones de seguridad más estrictas antes del despliegue y a monitorizar anomalías de autorización. Notificó a los propietarios de los espacios de trabajo afectados y, a quienes lo solicitaron, les proporcionó resúmenes de exposición por espacio de trabajo. Los usuarios lo describieron como un incidente de seguridad poco frecuente, gestionado con transparencia por una empresa que acababa de superar los 100 millones de dólares en ARR.

CONSULTA LAS PRUEBAS

Las fuentes

  1. Post mortem on Linear security incident on March 24th, 2026 Linear · linear.app ·
  2. User-specific data accessible to the wrong users within the same workspace Linear Status · linearstatus.com ·
  3. Linear discloses a data exposure incident Devbytes · devbytes.co.in ·