Categoría: Seguridad

  • Recomendaciones básicas de seguridad en desarrollo

    Hace unos días, leyendo un tweet en X, leí a una persona que denunciaba que le habían robado todas las cryptomonedas que tenía en su wallet. Esta persona es alguien técnica (se dedica a la informática profesionalmente), es decir, con conocimientos informáticos suficientes como para no haber sufrido nunca a nivel de seguridad a este nivel. En este tweet (que podéis ver abajo), explica paso a paso qué le ha ocurrido y cómo evitar que nos pase a los demás:

    La lectura está orientada principalmente al tema crypto (criptomonedas y trading de monedas digitales) no obstante, como siempre me gusta ver los problemas desde varios ángulos, me dí cuenta de un problema que posiblemente a alguien más le puede ocurrir, y si con esta llamada de atención se pueden hacer algunos cambios que mejoren la seguridad de todos, mucho mejor… 😉

    Resumiendo el enorme hilo (que recomiendo leer completamente), una extensión (del interfaz de desarrollo Cursor) logró acceder al archivo .env, enviar su clave privada al atacante y éste vació su wallet en cuestión de horas. La pérdida fue poca (apenas unos cientos de dólares), pero éste incidente evidencia cómo incluso los más cuidadosos pueden caer en ataques de cadena de suministro.

    Hay que decir que se recomiendan que las contraseñas se almacenen en variables de entorno, por lo que un .env es un sitio habitual donde se almacenan estos valores, no obstante hoy día, para aplicaciones con contraseñas importantes y muy sensibles, se recomienda utilizar aplicaciones como:

    • HashiCorp Vault (software libre)
    • AWS Secrets Manager
    • Google Secret Manager

    Estos sistemas permiten almacenar de forma segura usuarios y contraseñas a la vez que generan tokens temporales para poder acceder a ellos de forma segura y cifrada. De esta manera, un atacante no tendría acceso más que a un token de un servicio y no a nuestros datos de acceso críticos.

    Uno de los puntos en los que cualquier sistema de desarrollo seguro hace referencia es en la necesidad de «separar entornos«: Esto es: disponer de un entorno de desarrollo, completamente separado del entorno de pruebas y completamente diferente al entorno de producción (además, de otros posibles entornos gemelos y separados 100% para calidad, testeo, etc.). Esto implica que cada entorno debe tener autorizaciones diferentes para que, tanto el desarrollador, como el resto de personas que participan en el desarrollo no tengan nunca acceso a los datos de configuración de producción.

    Por lo tanto y resumiendo un poco… hay que tener en cuenta las recomendaciones:

    • No almacenar claves en .env,
    • Verificar la autenticidad del autor del software y de las extensiones que utilicemos,
    • Usar exclusivamente carteras frías para fondos importantes,
    • Auditar extensiones,
    • Separar entorno de trabajo para hacerlos mucho más seguro,
    • Vigilar periódicamente todo…

    Siempre he dicho que «la seguridad es contraria a la comodidad«. Normalmente trabajamos para solucionar y hacer la vida más sencilla a los usuarios, pero al añadir «seguridad«, esa «sencillez» a veces se transforma en «incomodidad«, no hay más que ver un ejemplo de que, para acceder a cualquier sitio de forma segura, tenemos que acceder utilizando la verificación en dos pasos, y para ello es necesaria una aplicación OTP (One Time Password) lo que implica abrir una aplicación externa (además de introducir usuario/contraseña) algo que no es precisamente cómodo.

    Aún así, los que trabajamos en la trinchera, desarrollando soluciones, a veces tenemos que tomar más medidas de seguridad y trabajar con más incomodidades de las habituales en pos de la seguridad tanto del proyecto como del resto de proyectos de la empresa.

    Siempre que alguien trabaja y protege su sistema únicamente con usuario contraseña me acuerdo de que:

    • La gran mayoría de personas reutilizan sus contraseñas en algunos o en todos los servicios…
    • Alguno de los servicios han sido atacados obteniendo datos como usuarios, contraseñas, etc… https://haveibeenpwned.com/
    • Una contraseña cifrada puede ser descifrada en cuestión de…

    Así que… si alguna vez piensas: ¿debería hacer esto para aumentar la seguridad? la respuesta es siempre SI. Mejor pecar de paranoico a que te roben lo que sea… y es que, el objetivo final es que no nos ocurra algo similar a lo que le ha ocurrido a este hombre. ¿o no?

  • La ironía de exigir seguridad y también una puerta trasera

    La ironía de exigir seguridad y también una puerta trasera

    Hoy traigo a debate una opinión que llevo algún tiempo en la cabeza, no es algo fácil ni claro, pero…

    Si eres el responsable de la información de una empresa, da igual que sea grande o pequeña, si guardas las contraseñas sin cifrar y alguien se entera, te puede caer una multa grande. Las contraseñas deben estar cifradas o almacenar, en su lugar, un código Hash de dicha contraseña. Si quieres almacenar datos privados de tus clientes, éstos deben estar a buen recaudo: disco duro cifrado, protegido con contraseña, cifrar todo lo que se pueda, etc. Máxima protección en el almacenaje.

    Si quieres solicitar datos a clientes o quieres enviar o recibir datos privados de clientes, éstos deben hacerse mediante protocolos seguros, cifrados a prueba de «escuchas» o sistemas «MITM» que puedan capturar la información.

    Si quieres sacarte algún certificado tipo ISO27001, ENS, NIS2 o similar, la seguridad es prioritaria: todo debe ir cifrado, todo bien guardado y pobre de ti si te entran y extraen los datos, porque te caerá una multa alucinante.

    El Esquema Nacional de Seguridad (ENS) establece como requisito fundamental la protección de la confidencialidad de las comunicaciones y datos mediante el uso de cifrado robusto. Se recomienda el uso de protocolos como HTTPS y SSL/TLS para asegurar que los datos intercambiados estén protegidos contra interceptaciones no autorizadas. [https://www.aesseguridad.es/news/91/04_ENS_Cifrado.pdf]

    Irónicamente, si hiciéramos caso a todo lo que se exige desde el punto de vista de la seguridad de la información considerando que una llamada telefónica es «información altamente sensible» y cifrásemos todo lo que enviamos o recibimos y todo lo que almacenamos para evitar que alguien no autorizado pueda acceder, estaríamos legalmente cubiertos ¿verdad?

    La ironía de la seguridad en Europa

    Si creara un sistema de mensajería con un sistema cifrado seguro que nadie excepto el remitente y el destinatario pudieran saber qué se ha dicho (lo que se supone que hace los sistemas de mensajería actuales que utilizan el cifrado E2EE end-to-end encryption-) , que no guardara los datos con el objeto de garantizar la seguridad, o si creara y gestionara un sistema VoIP desde un teléfono IP a otro teléfono IP, totalmente cifrado, con un algoritmo de cifrado similar y muy fuerte que evitase completamente que alguien pudiera escuchar las conversaciones ajenas (ni siquiera los servidores por los que pasan las conversaciones), entonces tendríamos un gran problema: no podríamos colaborar con la policía si un juez decidiera que hay que intervenir el teléfono o escuchar una llamada, o leer una conversación de este sistema de mensajería.

    Entonces ¿en qué quedamos? ¿se puede crear un sistema realmente seguro? ¿o es ilegal porque no puedes garantizar la colaboración con la policía y demás cuerpos de seguridad? ¿o no es posible crearlo en Europa? Como europeo, no me puedes exigir seguridad y por otro lado decirme que tiene que ser intervenible

    Todo operador de telefonía está obligado a colaborar con las fuerzas y cuerpos de seguridad del estado, así como si un juez solicita intervenir un teléfono, debe poder hacerlo con la infraestructura que tenga este operador. Actualmente en la red de telefonía, «gestionada» por los grandes como Movistar, Orange-MasMovil y Vodafone, su infraestructura ya permite de facto esta «intervención legal», por lo que si la llamada viaja por la red de telefonía, va sin cifrar, te guste o no.

    Un ejemplo real

    Hace unos años vino un cliente que se dedicaba a realizar llamadas con información muy confidencial (números de tarjetas de crédito, saldos, cobros, etc.) y necesitaba realizar llamadas telefónicas a sus clientes por lo que exigía una conexión desde su centralita mediante VPN, SIP con TLS y SRTP para evitar que alguien interceptara sus conversaciones y una garantía legal de que toda la comunicación era completamente cifrada.

    Hasta cierto punto puedes darle lo que te pide, pero en cuanto la llamada sale de tus sistemas a la red telefónica (la PSTN) a través de un operador como Movistar, Orange o Vodafone, la llamada será tan transparente y vulnerable como cualquier otra. Quizá puedas cifrar la conexión con algún operador y aún así, la infraestructura de los operadores no está pensada para ir cifrada, por lo que al final todo viajará «en plano».

    Es triste, pero es así.

    Ejemplo de códec hardware (web)

    En los entornos militares, utilizan sistemas propios y físicos para cifrar cualquier conversación entre dos teléfonos, una especie de «códec hardware» que deben tenerlo ambos extremos, uno codifica y el otro decodifica, pero este «códec hardware» es inútil en caso de querer hacer una llamada a un teléfono normal y corriente que no tenga en su extremo ese otro «códec hardware» (tiene un nombre, pero por seguridad, prefiero llamarlo así).

    En otros entornos privados, (entre los teléfonos y la centralita) también se cifran con algoritmos básicos como SRTP y poco más, de manera que si algún experto necesita escuchar una conversación, tampoco se le puede poner muchos impedimentos. Quizá con eso sería suficiente… quién sabe, pero me huelo (visto lo fácil que es conseguir filtrar una grabación de un juzgado) que lo querrán sencillo, en mp3 y en un pendrive con FAT32.

    ¿Y si mi sistema es totalmente cifrado E2EE para dar seguridad TOP a mis clientes y recibo una petición de la policía?

    Básicamente es el dicho «el que hace la ley, hace la trampa«: Todo debe ser ultra seguro y pobre de ti si un hacker te entra y vende al mejor postor tus grabaciones, listados de clientes, llamadas, etc… la multa va a ser monumental… y por otro lado, si haces eso, estás obligado a tener una «puerta trasera?» para permitir la intervención judicial y colaborar con los cuerpos de seguridad.

    ¿Hasta qué punto es legal montar un sistema de VoIP con SRTP y TLS (cifrado) si luego puede llegarme un requerimiento para escuchar una conversación entre dos usuarios de mi red?

    Al final, son las empresas de fuera: Whatsapp, Telegram, etc… las que cifran y dan seguridad y, si llega un requerimiento judicial, con decir que son empresas americanas, se libran de todo estos follones, pero ¿y los que somos europeos? A decir verdad, en los EEUU además de U.K, Australia, Canada, New Zealand, India y Japan también están obligados a cifrar toda comunicación y a instalar «backdoors» en sus software para que puedan entrar la CIA, el MI6, los पुलिस अधिकारी y la 何でも代理.

    La seguridad es importante para evitar ataques de extraños, pero si obligan a que extraños puedan entrar y acceder a tu infraestructura y hacer lo que quieran, entonces no hay seguridad que proteja tus datos.

  • Cómo poner rápidamente una marca de agua a tu DNI o documento de identificación

    Cómo poner rápidamente una marca de agua a tu DNI o documento de identificación

    Es evidente que es una mala idea enviar una foto de nuestro DNI a cualquier persona por internet: corremos el riesgo de que se lo roben, lo copien o acaben en malas manos o manos de extraños y que nos suplanten, autoricen trámites y hagan actividades ilegales en nuestro nombre.

    Por desgracia, hay trámites que nos obligan a mandar datos de nuestro DNI, por lo que es mejor usar una foto en blanco y negro, con parte de la información pixelada y con una marca de agua que indique para qué uso se está autorizando.

    Puede parecer algo fácil de hacer con cualquier aplicación de retoque fotográfico, pero en alguna ocasión me ha ocurrido que he necesitado enviar un DNI en el momento y sin darme tiempo a rellenar la marca de agua.

    Por esta razón, he creado una herramienta para ponerle una marca de agua a nuestras fotografías de nuestro DNI, Pasaporte o cualquier otro documento de identificación con varias características interesantes:

    1. La primera y más importante: No se comparte ninguna imagen, toda la edición se hace mediante Javascript en tu propio navegador, así que es completamente seguro.
    2. Permite editar, censurar, pixelar o recortar un trozo de la imagen que necesites, así puedes ocultar parte de tu identificador.
    3. Puedes personalizar completamente la marca de agua: Poner el texto que quieras, seleccionar la letra, el tamaño, el grosor, el número de veces que queremos que aparezca, el color de la marca de agua, la opacidad, etc.

    Esto generará tu propia imagen modificada y lista para compartir con las modificaciones que le hayas hecho.

    La herramienta la tenéis disponible en: https://sinologic.net/proyectos/watermark/

    Tengo que decir que esta herramienta la he hecho principalmente para mí, pero si alguien más le viene bien, puede usarla cuando quiera. Puedes guardarla en los favoritos y usarla cuando te haga falta. 😉

    La página funciona tanto en un navegador móvil como un escritorio. Utiliza HTML5, javascript y canvas para modificar la imagen en el propio navegador, así que en ningún momento se sube la imagen a ningún sitio. Esto es imprescindible, ya que pueden haber aplicaciones de terceros que hagan algo similar pero que sí guarden la imagen en el servidor para aplicar las ediciones o los cambios. En este caso, todo se ejecuta en tu propio navegador móvil, así que la seguridad es cosa de tu propio móvil.

  • Qué es la mensajería Matrix y por qué no debemos confundirla con el protocolo Matrix

    Qué es la mensajería Matrix y por qué no debemos confundirla con el protocolo Matrix

    Hace unos días nos despertamos con la noticia de que la Policía Nacional había participado en una operación en Marbella junto con la EuroPol y otros cuerpos de seguridad en la que habían registrado varias viviendas y se han incautado cientos de miles de euros en monedas y criptomonedas, pero lo más curioso es que han desarticulado un taller de reparación de móviles que se encargaban de arreglar y modificarlos para que pudieran comunicarse de forma completamente cifrada y segura, característica muy demandada por los delincuentes para comunicarse sin ser detectados. La herramienta en cuestión que instalaban en estos móviles se llama «Matrix», una aplicación que permitía, además de hacer llamadas cifradas, conectarse a Internet escondiendo el rastro mediante una red de hasta 40 servidores.

    Lo primero que pensé al leer el titular en el periódico fue pensar en aquel protocolo que conocí en la ElastixWorld 2014 (Colombia) de la mano de Matthew Hodgson en persona en la que me explicó las ventajas de la seguridad del protocolo que habían desarrollado y las posibilidades que tenía. Sin llegar a leer la noticia completa, pensé que unos listos habían utilizado el protocolo Matrix y lo habían utilizado para comunicarse de forma que los cuerpos de policía de Europa no pudiera interceptarles. Nada más lejos de la realidad… al poco, en la red BlueSky, el gran Fred Posner y otras personas me sacaron del error, y es que, aunque tienen el mismo nombre, son cosas muy distintas.

    Qué es el servicio de mensajería Matrix

    Por un lado, el servicio de mensajería Matrix es el que utilizaban los delincuentes para comunicarse anónimamente y es lo que han desarticulado. Este servicio tiene otros nombres: Mactrix, Totalsec, X-quantum, y Q-safe con más de 8.000 cuentas repartidas por todo el mundo y cada una de ellas pagaban entre 1.300 y 1600€ en criptomonedas para poder hacerse con un teléfono Google Pixel modificado que incluya este servicio.

    Qué es el protocolo Matrix

    El servicio de mensajería conocido como Matrix es un protocolo de comunicación descentralizado y seguro que permite el intercambio de mensajes, archivos y llamadas de voz y video cifradas de extremo a extremo entre sus usuarios. A diferencia de plataformas centralizadas, Matrix se basa en una arquitectura federada, donde múltiples servidores independientes (instancias) se comunican entre sí, ofreciendo a los usuarios mayor control sobre sus datos y la posibilidad de elegir en qué servidor hospedar su cuenta.

    Lo que viene siendo un Mastodon de las comunicaciones, en la que podemos tener nuestro propio servidor y conectarnos a la red Matrix para que otras personas puedan hablarnos, llamarnos o incluso enviarnos archivos y mucho más.

    Aunque es un sistema seguro, éste no es el sistema que han cerrado. Es importante recalcarlo. Sigue perfectamente vivo, su uso es legal, y cada día más y más personas lo utilizan a diario.

    Si quieres saber más sobre Matrix (el bueno), te aconsejo que te des una escapada al Fosdem 2025 y conozcas la comunidad RTC y un poco más de este y muchos otros protocolos interesantes que son libres, abiertos, seguros y fantásticos para el día a día.

  • La CNMC sufre un ataque y se filtran 2 mil millones de datos de propietarios de líneas móviles

    La CNMC sufre un ataque y se filtran 2 mil millones de datos de propietarios de líneas móviles

    Según una nota de la Audiencia Nacional, la CNMC acaba de sufrir un ataque a sus servidores y se han filtrado los datos de más de 2 mil millones de registros de titulares de telefonía móvil de España (actualmente hay unas 60 millones de líneas móviles activas) por lo que el resto de datos se corresponden con abonados y números de teléfonos antiguos pero que seguían en poder de la CNMC.

    Más de 240Gb de datos han sido sustraídos y al ser el objetivo la CNMC, se considera que se ha vulnerado la seguridad nacional, por lo que el asunto pasa a ser competencia de la Audiencia Nacional y tipificado como un delito de ataque informático.

    Para la juez María Tardón, resulta prematuro inferir cual pudiera ser la finalidad perseguida por el o los autores de esta actuación, “pero lo que sí resulta claramente objetivado, desde este momento inicial de las investigaciones, es que nos encontramos ante un ciberataque masivo contra una entidad que, por su incardinación en la estructura del Estado y su esencial función en los términos indicados, supone una grave e indudable afectación institucional, en un ámbito tan particularmente sensible y relevante para su normal funcionamiento como el del control del correcto funcionamiento, la transparencia y la existencia de una competencia efectiva en todos los mercados y sectores productivos, en beneficio de los consumidores y usuarios”.

    Yo personalmente desconocía que la CNMC tuviera datos personales de los propietarios de las líneas móviles (pensé que esta información únicamente la tenían las operadoras móviles) pero de ser así, puede ser una de las mayores filtraciones del año y, aunque se desconoce cual puede ser la motivación de este ataque.

    Nota oficial: https://www.poderjudicial.es/cgpj/es/Poder-Judicial/Noticias-Judiciales/La-Audiencia-Nacional-investiga-un-ciberataque-masivo-contra-la-CNMC-que-supuso-la-exfiltracion-de-datos-de-titulares-de-telefonia-movil

  • Si utilizas GDMS, actualiza tus credenciales

    Si utilizas GDMS, actualiza tus credenciales

    Ayer recibimos un mensaje por parte de Grandstream en el que avisaban que han detectado una «actividad sospechosa» en los servidores GDMS, por lo que están avisando a todos los usuarios de esta plataforma que actualicen y cambien la contraseña lo antes posible.

    En concreto, el aviso que han enviado es este:

    Oficialmente no hay confirmación de ningún ataque ni leak por parte de Grandstream, básicamente el aviso parece más para prevenir que para curar, pero por nuestra parte es importante hacer una actualización de contraseñas de todos los sistemas SIP que tengamos registrados en el GDMS. Tal y como dictan ciertas costumbres de ciberseguridad básicas, las contraseñas hay que cambiarlas cada varios meses, así que es un buen momento para ponerlo en práctica cuanto antes, cambiarlas y resetear el contador.

  • Filtradas más de 2 millones de cuentas de Zoom

    Filtradas más de 2 millones de cuentas de Zoom

    Aún falta la noticia oficial por parte del desarrollador, pero por las capturas publicadas, parece ser que los datos de las más de 2 millones de cuentas de usuarios de la plataforma Zoom han sido comprometidas y puestas a la venta en un foro.

    UserSec, un grupo de piratas informáticos prorruso, afirma haber vulnerado la seguridad de Zoom, comprometiendo 2 millones de cuentas de usuarios. Entre las muestras proporcionadas, también hay una lista de 95 credenciales de inicio de sesión de usuarios con contraseñas en texto sin cifrar.

    Esto tiene un doble impacto: el primero, que la contraseña, no estaba cifrada o no lo suficientemente como para obtenerlas, en segundo lugar la posibilidad de obtener las grabaciones de reuniones críticas importantes realizadas con esta plataforma y es que en EEUU, la empresa Zoom es una de las más potentes a nivel de videoconferencia, por encima de Teams, Webex y muchas otras.

  • Empresa segura: Parte 1

    Empresa segura: Parte 1

    Antes de nada, debo pedir disculpas a todos los lectores, llevo varios meses muy centrado en otros temas y lo cierto es que no he encontrado momento ni temas suficientes como para escribir con la frecuencia y el tiempo que me gustaría. Suelo aprovechar alguna noticia importante del mundo de la VoIP y/o del software libre para hacer algún comentario y hablar sobre algún tema que considero de interés, no obstante llevo varios meses con bastante lío encima de la cabeza y salvo los productos interesantes que me hacen llegar la gente de Snom y la gente de InstantByte (menos mal), apenas encuentro un momento tranquilo para sentarme a pensar sobre qué me gustaría escribir.

    Entre otros temas que me trae de cabeza, es algo sobre lo que llevamos (mis compañeros y yo) algunos meses tramando… y es sobre cómo conseguir ser una «empresa segura«. Algo que daría para muchos, muchos artículos y sobre lo que está todo escrito y no se escriben otras muchas cosas para no dar pistas a los «malvados», pero sí que es cierto que llevamos muchos meses preparando el terreno para asegurar técnicamente, todo lo posible, la información con la que trabajamos todos los días.

    No es que tengamos los códigos nucleares, ni los códigos de acceso a los búnkeres de seguridad nacional, pero sí que al tratar y manejar datos privados de clientes y visto lo visto en cuanto a ataques, vulnerabilidades y demás… hemos considerado interesante buscar la forma de ponérselo un poco más difícil a los malvados juankers y hacer todo lo posible para que los datos de los clientes estén a buen recaudo.

    Está claro que si los hackers han entrado en Telefónica, en Iberdrola, en Endesa, en la DGT, en varios ministerios y en un sinfín de empresas muy preparadas, nada me asegura que haga lo que haga no vayan a conseguir lo mismo. Es extremadamente difícil asegurar una empresa y los datos que maneja, pero sobre todo, quizá lo más difícil es llegar a cruzar la línea de la paranoia sin que realmente uno se vuelva paranoico.

    Para conseguir dar el paso para ser una «empresa segura», hemos optado por realizar varias fases:

    • Fase 1: Sentido común
      Esto es… si yo conociera los puntos flacos de la empresa ¿Cómo lo haría para atacarla? ¿Qué necesitaría? En esta fase eliminamos los puntos de seguridad por ocultación y nos centramos en asegurar de verdad.
    • Fase 2: Seguridad exterior
      Preparamos todo lo necesario para evitar ataques provenientes del exterior: bots, personas externas, vulnerabilidades en servicios expuestos, etc…. aquí nuestro amigo el firewall, junto con nuestros amigos «direcciones IP estáticas» van a ser nuestros mejores aliados.
    • Fase 3: Seguridad interior
      Ahora le toca la parte de ¿y si el enemigo está en casa? Paranoia máxima… un cable no controlado, una red wireless vulnerable, un acceso remoto no configurado y el enemigo ya está dentro… ¿qué hacer entonces?

    Una vez planificado estos puntos, toca la parte más difícil… plantearse un reto, un reto de verdad, uno que cueste dinero y así asegurarnos que no se quede en agua de borrajas:

    • Obtener un certificado de Calidad y Seguridad a nivel internacional, debería ser una forma como otra cualquiera que nos garantice que los cambios que hacemos son suficientes como para prevenir y curar con garantías cualquier problema de seguridad que pueda plantearse en un hipotético caso. Por suerte (y veremos que también por desgracia), la empresa nunca ha tenido un problema de seguridad más allá de algún ssh expuesto accidentalmente y varios intentos de ataque, y eso es, sin duda, gracias a mis compañeros presentes y pasados, que de una forma u otra «blindaron» la infraestructura para evitar sustos que pudieran considerarse serios.

    Claro que desde entonces hasta ahora ha llovido bastante y la tecnología y la seguridad ha evolucionado tanto que hoy día, un chaval de 17 años puede hacer estragos con unas pocas ganas de tocar las narices, así que buscamos un certificado internacional de seguridad y nos hemos tirado a por él. Contratada una consultora que nos guíe en los distintos pasos que hay que seguir y ponernos en sus manos en cuanto al asesoramiento sobre qué debemos mirar.

    Somos conscientes que el 70% de los certificados son documentación y protocolos más que temas técnicos que nos puedan ayudar a proteger la información que almacenamos. No obstante, los requisitos para que, asegurar la información de una empresa no se quede simplemente en buenas intenciones, implica ponerse en serio y sacar las certificaciones, a ser posible en un tiempo record.

    Hay muchas certificaciones:

    • ISO27001 (el certificado de seguridad por excelencia, entre 97 y 114 puntos de control que hay que asegurar) Documentación por un tubo y cada uno de ellos con sus «necesito una evidencia de lo que dices» que te volverá loco. Hay que renovar cada 3 años.
    • ENS (el certificado de seguridad nacional) un certificado que nació para que lo cumplieran los ayuntamientos, universidades y administraciones públicas y al final han terminado obligando a cumplirlo a todos aquellos que quieren trabajar con las AAPP. Reune más requisitos técnicos que la ISO27001 (porque sólo permiten cierto hardware y software homologado para AAPP, pero que ya sea de paso, también para todo aquella empresa que quiera sacarse el certificado). Hay tres tipos de ENS: simple, medio y alto. (lo bueno es que toda la información es pública: https://www.ccn-cert.cni.es/es/guias.html). Hay que renovar cada 2 años.
    • NIS2 (el certificado de seguridad europea) un certificado de ciberseguridad a nivel europeo similar a los puntos de la ISO27001, pero con una organización algo más laxa.

    ¿Qué hay que proteger?

    Para empezar a ser una empresa segura, lo primero es preguntarse, ¿qué tenemos que haya que proteger? ¿qué tienes?, ¿de dónde sale?, ¿quién es el responsable?, ¿cómo se genera?, ¿quién lo utiliza?, ¿quién lo borra?, y un largo etcétera.

    En nuestras empresas hay mucha información relevante e importante: grabaciones, listados de llamadas, números de clientes, agendas, usuarios/contraseñas, etc. Si tienes CRM o ERP, la cosa se vuelve más peliaguda, ya que tienes información más confidencial de la empresa del cliente y si almacenas datos de identificaciones como CIF, nombres y direcciones, se considera que tienes datos confidenciales de nivel 2 y toca proteger la información sí o sí, bien cifrándola, bien poniéndole todas las barreras posibles para evitar que nos lo roben, la vendan, etc.

    Sabiendo la información, material o cosas que hay que proteger, el siguiente paso no es más que algo evidente: ¿qué podría pasar si no se protege?

    ¿Qué podría pasar si no se protege?

    Imagina que borran estos datos, o que un día entras en la oficina y desaparecen los servidores, o que hay una manifestación y nadie puede entrar en la oficina o que han desaparecido todos los servidores principales por un fallo en el datacenter, o que… 1000 situaciones catastróficas que se te puedan ocurrir, desde las más elementales (que entre alguien a un sistema) como las más insospechadas (que alguien con información confidencial se vaya de mal rollo de la empresa).

    No es agradable ponerse en esta situación, pero es otro paso necesario. Controlar qué cosas pueden ocurrir, la probabilidad de que ocurra, y qué habría que hacer en este caso.

    Backup y protocolos anti-desastres

    No hay duda que tener una copia de seguridad siguiendo la regla del 3-2-1 (La norma establece que debes tener al menos tres copias de tus datos; dos de las copias de seguridad deben estar almacenadas en diferentes tipos de medios, y al menos una copia de seguridad debe estar almacenada fuera del sitio o en la nube) es algo fundamental. No siempre es posible, pero hay que buscarlo siempre que se pueda. Siempre puede, por muchas garantías que te digan, fallar algún sistema crítico y haya que recuperar cuanto antes.

    O ponerse en lo peor y pensar que todo se puede ir al traste en una mañana… en ese caso, toca preparar un protocolo anti-desastres que ayude a mantener la calma y recomponerse tan rápido como sea posible. Las posibilidades son casi infinitas, pero las probabilidades no son tan bajas como nos gustarían y estar preparado ante lo insospechado es un plus.

    Con esto, explicado de una forma rápida y sutil como una conversación de cafetería, tendríamos la parte vital de recomponernos si algo va mal. Ahora empezamos con la parte «divertida».

    Evitar el ataque

    En este caso, hay que activar algo que siempre he odiado: el modo paranoico. De hecho en Sinologic no escribía sobre seguridad porque no quería despertar al «paranoico» que llevamos en nuestro interior. Se vive mejor y mucho más feliz siendo «hormiguitas» en la que nadie se fija ni siquiera para atacarnos, pero es verdad que hoy día los bots ya no miran sólo a empresas grandes, miran a cualquier empresa o cualquier ordenador que haya conectado y sea vulnerable y la mejor forma de evitar quedarte sin empresa o sin servicio, es evitando el ataque.

    Para evitar el ataque, lo primero es ver qué infraestructura tenemos, cómo está expuesta y por qué está expuesta. Evitar la «seguridad por ocultación» es algo vital…

    Ejemplo: Proteger el acceso remoto:

    El hecho de mover un puerto SSH estándar a uno aleatorio fue útil hace unos años, pero desde que un bot puede escanear la red entera buscando servidores SSH en todo internet buscando puerto a puerto y en cuestión de minutos, hace que tener un puerto SSH expuesto a Internet sea ya un riesgo. No es necesario ni tener una cuenta, basta con que la versión del servidor SSH no sea la última que soluciona una vulnerabilidad, para que haya un exploit que de acceso remoto al bot y avise al «nodo supremo» que tiene una nueva máquina a la que inyectar el software de minado, para que te encuentres minando bitcoin en menos de 10 minutos.

    Puedes usar un fail2ban, pero nuevamente, el script detecta la versión al primer intento, por lo que el exploit funcionará en el segundo intento. Fail2ban puede servir, pero no es la panacea (esto último lo he visto con mis ojos). Así que ante la falta de soluciones sólo nos queda una posible solución:

    1. Tener la distribución completamente actualizada SIEMPRE.
    2. Cortar todo acceso SSH utilizando el firewall bloqueándolo a la IP desde la que vayamos a conectarnos.
    3. Usar fail2ban
    4. Evitar acceso mediante contraseña (siempre utilizar Autentificación mediante Clave Pública)
    5. Cambiar el puerto estándar (nunca usar el puerto estándar para accesos remotos)
    6. Jamás permitir acceso directo con el usuario ‘root’. Siempre acceso a usuario local con permisos limitados.
    7. Monitorizar periódicamente los accesos por ssh.

    Sé lo que puedes estar pensando: Desde el momento en que bloqueemos el puerto SSH a una IP ¿por qué hay que hacer todo lo demás? Nadie va a poder acceder al puerto excepto nosotros…

    Ahí es donde te equivocas… recuerdo un caso hace algunos años en el que el firewall siempre estaba activo,… hasta que un día alguien tuvo que bajarlo y se olvidó subirlo… en ese caso un fallo manual provocó que el puerto SSH estuviera expuesto. El resto de acciones protegen ante el fallo del anterior.

    Acuérdate del IPv6

    Y es que muchos sistemas tienen IPv6 aunque se nos olvide, y configuramos el firewall para IPv4, pero para IPv6 el firewall sigue estando accesible. Es más difícil de acceder, porque los escaneos de la red son más limitados, pero aún así, sigue estando accesible si no hemos bloqueado el puerto en ambos sistemas.

    El ataque no siempre viene desde fuera

    Ahora viene la parte más complicada, y es que una gran parte de los ataques no vienen desde el exterior, si no del interior. Acuérdate de cuando en Mr.Robot, el protagonista metió un USB en la empresa con un virus y un empleado de la empresa lo metió en su ordenador para ver qué contenía e infectándose. Ya no es únicamente una serie de televisión, hay cientos de miles de pendrive con virus sueltos por las calles a la espera de que alguien se lo lleve y vea qué contiene.

    Linux no siempre es invulnerable

    Donde trabajo, prácticamente todos usamos Linux (el 95%) tanto en servidores como en puestos de trabajo, por lo que la parte de virus, troyanos, malware y demás… digamos que estábamos bastante tranquilos. Hasta que un compañero estuvo investigando acerca de OSSEC, una herramienta software libre que analiza el software instalado en cada sistema, revisa versiones y compara con una base de datos de vulnerabilidades. En ese momento empezamos a recibir una cantidad curiosa de alertas sobre versiones de paquetes vulnerables por no estar convenientemente actualizados. Es curioso como puedes pasar de la tranquilidad de saber que todos trabajamos con Linux, a ver un montón de números rojos sobre versiones vulnerables y que toca revisar, actualizar y teñir de verde como sea. (Recordad que estamos haciendo esto para obtener una certificación, y la única manera de hacerlo es que todo sea seguro).

    Volviendo a «el ataque no siempre viene desde fuera» viene otra parte cruda, sospechar de cualquier compañero. Esta parte es muy fea, desagradable pero obligatoria, y es que cuando eres una empresa pequeña, hasta la chica que viene a limpiar tiene acceso root a cualquier servidor (vale, si… es una exageración,… xD) pero para obtener el certificado, lo primero que te dicen es: Sólo pueden tener acceso el mínimo número de personas. Eso implica que desarrolladores, personal de soporte, administración y demás que tenían acceso a un servidor «por si las moscas pasaba algo», ahora ya no tenían acceso. Los permisos del CRM y del ERP son revisados y ahora ya no todo el mundo tiene vista de lo que antes sí tenían visibilidad, y eso fastidia, es algo normal… quitar accesos que antes tenías suena a que no se fían de tí, pero lo cierto es que en seguridad, por cada persona que tenga acceso a un sistema, se convierte en un posible agujero de seguridad. Algo que exigen eliminarlo a toda costa salvo que haya un motivo de peso para tenerlo.

    Por si fuera poco, dos cosas más que hay que añadir a «obligaciones para tener una red corporativa segura«: vigilancia de la red interna y un control de DLP, aunque sea mínimo.

    Vigilancia de la red interna pueden ser muchas cosas, lo importante es que si hay un software haciendo de las suyas en la red interna un martes a las 04:00 a.m. deberías recibir algún tipo de alerta y hacerte las preguntas básicas. ¿porqué el ordenador XXX tiene 2Mb/sec de ancho de banda ocupado a las 4 a.m.? ¿Cómo se detecta este comportamiento extraño? Herramientas hay muchas, libres no tantas.,

    DLP (Data Loss Prevention o en español: prevención de pérdida de datos) es el control para evitar una fuga de información por canales estándar, lo que implica disponer de un software de «detección de fuga de información», un aspecto que el Incibe ya nos habla y nos pone en sobreaviso. Ya sea por parte de un compañero, jefe o cargo-intermedio, nadie escapa a una posible «fuga de información» que hay que evitar. Ya no únicamente saber que tendrá consecuencias si ocurre, es que directamente hay que evitar que ocurran, ya que en muchos casos ésta puede ser algo sin querer. Ahí prácticamente no hay ningún sistema libre que permita controlar el DLP tal y como lo piden las empresas certificadoras, así que toca buscar alternativas comerciales. 🙁

    Finalizando de forma segura…

    Tener una empresa «segura» no es algo fácil, ni barato, ni siquiera cómodo. Siempre he dicho que la seguridad es incómoda, pero necesaria. Puede provocar malentendidos y alguna que otra discusión, pero es mejor discutir que perder los datos de la empresa de la que dependen muchas familias.

    Si algo he aprendido estos meses que hemos estado trabajando para aumentar la seguridad de la empresa, es que la sociedad de la información nos ha obligado a los administradores de sistema a volvernos paranoicos. Es un estado necesario para la supervivencia hoy día en la que los datos, las redes de alta velocidad y accesibilidad desde cualquier lugar, se han convertido en la materia prima más importante de esta sociedad. La privacidad vs. la seguridad. ¿Cómo vigilar que es seguro algo que no podemos ver por la defensa de la privacidad? Esto es un debate muy interesante y me encantaría conocer vuestra opinión al respecto.

    En fin, espero que este tema llegue a su fin (spoiler: no mucho, porque la seguridad es un estado que requiere revisiones periódicas para comprobar que todo sigue en su sitio) y pueda tener un poco más tiempo para poder escribir más sobre VoIP y Software Libre.

    Lo que sí os puedo garantizar es que voy a empezar a escribir sobre esta temática que he evitado tantos años, y es que, otra de las cosas que tengo que hacer es estar al día sobre riesgos, alertas y vulnerabilidades de sistemas que usamos a diario, lo que implica estar vigilante sobre cualquier fallo de seguridad que afecte a nuestras herramientas Asterisk, Kamailio, FreeSwitch, OpenSIPs, etc. o bien a hardware VoIP (teléfonos, gateways, etc.)

  • Hacker traza un meticuloso plan durante 2 años para colar un backdoor en casi todos los Linux del mundo

    Hacker traza un meticuloso plan durante 2 años para colar un backdoor en casi todos los Linux del mundo

    Un hacker traza un meticuloso plan durante largos 2 años para intentar colar un acceso a casi todos los sistemas Linux del mundo. Esto lo hizo modificando poco a poco líneas de código a la librería «libzlma» que sirve (entre otras cosas) para comprimir los datos que se envían en protocolos binarios como el del SSH lo que le permitiría crear un exploit y acceder a prácticamente cualquier servidor SSH de cualquier sistema que utilice dicha librería.

    La modificación fue detectada por un desarrollador experto en seguridad que detectó que el acceso a una de sus sistemas tardaba 0,5 segundos más de lo habitual, empezó a enfadarse y a investigar el motivo y, (ventajas del software libre) pudo ver el código fuente y se dio cuenta que había un error en una librería llamada libzlma que tenía un backdoor que nadie había detectado antes.

    Y es que, viendo quién subió ese código, parece ser que un hacker ha estado enviando modificaciones del código cada cierto tiempo a la librería (junto con modificaciones de otros archivos, manuales, etc.) hasta llegar a un momento en que la suma de todo su código era el propio backdoor.

    ¿Por qué no se detectó antes?

    Este software cuenta con sistemas que detectan código erróneo (maligno, malificiente, malvado, …) pero el desarrollador puso un «punto» en un momento del código que provocaba un error en el sistema de testing del código y eso hacía que dejara de comprobar el resto del código donde se encontraba el código con la puerta trasera.

    La detección de este bug ha provocado que hayan muchas versiones de SSH vulnerables, por lo que este fin de semana ha sido un momento ideal para comprobar las versiones de la librería y ver si utilizaban la versión vulnerable.

    Cómo detectar si estamos comprometidos

    Para comprobar si estamos usando la versión «peligrosa», podemos ejecutar en Linux el siguiente código:

    strings `which xz` | grep "(XZ Utils)" 

    Si la versión que te devuelve es inferior a 5.6.0, entonces tienes una versión segura.
    En caso contrario, habría que hacer un downgrade o, mejor aun, bloquear el SSH para evitar el acceso externo y permitir conectar por SSH únicamente mediante VPN (que sería lo mejor)

    Las versiones comprometidas son la 5.6.0 y 5.6.1

    Si utilizas una distribución basada en .deb o .rpm con glibc y xz-5.6.0 o xz-5.6.1:

    • Si utilizas systemd con un ssh públicamente accesible: ACTUALIZA AHORA MISMO!!!
    • Si no usas systemd con un ssh públicamente accesible: ACTUALIZA AHORA MISMO
    • Si utilizas otro tipo de distribución:
      • Con glibc y xz-5.6.0 o xz-5.6.1: ACTUALIZA AHORA MISMO

    Enlace al reporte de seguridad: https://nvd.nist.gov/vuln/detail/CVE-2024-3094
    Más información: https://gist.github.com/thesamesam/223949d5a074ebc3dce9ee78baad9e27

  • Los EXEC y los SYSTEM los carga el diablo

    Los EXEC y los SYSTEM los carga el diablo

    Hace unos meses, jugando con Kamailio, descubrí que un operador enviaba llamadas con un Call-ID (un campo interno de SIP que sirve para identificar a qué diálogo pertenece ese mensaje) erróneo que incluía comillas («), barras invertidas (\), comillas simples (‘), y arrobas (@) entre otros caracteres, de forma que, en principio todo funciona correctamente hasta que me dio por guardar ese parámetro dentro de una base de datos y descubrí que no se guardaban por ejecutar una cadena SQL incorrecta.

    Me costó bastante descubrir el motivo de por qué esas llamadas no se guardaban, pero cuando por fín me di cuenta, aprendí la importancia de «sanitizar» cualquier información con la que vayamos a trabajar ya que, en cualquier momento podemos recibir una cadena malformada adrede para causar quién sabe qué.

    Tras pasar todos los parámetros por una función que eliminaba caracteres extraños y verificaba que todo era correcto, empecé a pensar ¿y si un call-id, un dnid, un CallerID o un destino erróneo y malformado como el que yo recibí, apareciera como parámetro de un comando de ejecución? Las consecuencias podrían ser terribles.

    Entonces apareció un mensaje en la lista de usuarios de Kamailio que coincidía justamente con lo que estaba evitando y es que un parámetro externo incluido dentro de una función de ejecución puede ser un grave problema de seguridad.

    En Asterisk no son pocas las configuraciones que incluyen comandos de este tipo: Ejecuciones al finalizar una conversación para comprimir, mover o copiar la grabación de dicha conversación utilizando el caller id como parámetro, …. ¿y si el callerid fuese una cadena de inyección de código del tipo: «\nrm -rf /\n»? Es cierto que esa cadena nunca sería válida en el RFC y seguro que IEEE aparecería en sueños, pero la jugarreta se la haría bien.

    Ya hablamos hace 13 años de cómo programar el dialplan de Asterisk para evitar este tipo de ataques malintencionados utilizando las funciones y aplicaciones de Asterisk en el artículo: Una nueva versión de Asterisk corrige el dialplan injection. En este caso el ataque permitía llamar a cualquier destino aunque el dialplan nos hubiera limitado el número al que llamar.