Recuperación de bases de datos tras caída irrecuperable del servicio de mysql-server – Caso de Estudio

Días atrás, me contacta un alumno con el siguiente problema:

El servidor de bases de datos de un cliente no puede reiniciarse, aparentemente, tras una caída de la corriente eléctrica

El error que el servicio de MySQL arrojaba al intentar volver a levantarlo era el siguiente:

Error 2002 (HY000): can't connect to local mysql server through socket '/var/run/mysqld/mysqld.sock'

Contexto: MySQL 5.5 sobre un Debian 7.11 de 64 bits

 

Error 2002 (HY000): can’t connect to local mysql server through socket

Este error, es uno de los que con mayor frecuencia se reporta en el servicio de MySQL.

Según la documentación oficial de MySQL (ver párrafo 6), este error se genera cuando el servicio de MySQL no está corriendo. El tema es que no corre porque al intentar iniciarlo, salta este error. Esto es una referencia circular (error de procedimieto lógico) en la documentación de MySQL. Lo importante entonces, es determinar, no porqué no inicia sino porqué no conecta (partiendo de la base de que no inicia porque no puede conectar, en vez de partir de la base de que no conecta porque no puede iniciar). Es entonces que se llega al apartado específico, B.5.2.2 Can’t connect to [local] MySQL server. Al llegar aquí, nuevamente se encuentra seis posibles causas:

Continue reading →

Anuncios

Meltdown: fundamentos técnicos del ataque (resumen explicado)

Meltdown[1] (Lipp, Schwarz, et al.) y Spectre[2] (Kocher, Genkin, et al.) son dos tipos de ataques informáticos, dados a conocer el pasado 3 de enero de 2018, por dos grupos de investigadores[1][2].

En lo sucesivo, y a fin de lograr una mejor comprensión de este texto, es importante comprender que Meltdown y Spectre, no representan el nombre de dos vulnerabilidades, sino, de dos nuevos tipos de ataques informáticos, los cuáles, cada uno de ellos, explota vulnerabilidades no exactamente idénticas.

Meltdown: rompe el aislamiento de memoria entre los espacios del kernel y de usuario. No lo hace explotando una vulnerabilidad del Sistema Operativo (al contrario), sino, explotando información alojada en un canal lateral del propio procesador (se explica técnicamente más adelante, tanto la vulnerabilidad, como el ataque y la base de conocimientos previa).

Spectre: también utilizando canales laterales para acceder a la información, engaña a las aplicaciones para acceder a ubicaciones arbitrarias de la memoria que utilizan y así, hacerse de esa información.

AVISO LEGAL Y RENUNCIA DE RESPONSABILIDADES: toda base de conocimiento contenida en este documento se expone a mero a título informativo, comprendido en el marco de la divulgación científica y omitiendo cualquier detalle técnico innecesario para la comprensión de lo que se pretende explicar en cada apartado. Este documento explica los fundamentos técnicos del ataque Meltdown. Leer este documento NO aporta información de utilidad al público en general. Al público en general, se recomienda mantener actualizado su sistema operativo y aplicaciones (por el momento, a diario y aceptando todo parche de instalación por parte de los fabricantes del sistema) y cuidar celosamente, el acceso físico a sus ordenadores. Este documento está dirigido exclusivamente a profesionales de las Ciencias Informáticas (en especial, Ingenieros en Sistemas, Hackers y programadores).

Meltdown

Aislamiento de espacios de memoria (aquello que ataca Meltdown)

El aislamiento de espacios de memoria, es una de las bases de la seguridad informática de los sistemas operativos. Éstos, reservan un espacio de memoria para el kernel completamente aislado del espacio del usuario (donde se ejecutan todos los procesos a nivel de usuario). En sistemas basados en GNU/Linux y BSD, el kernel se comunica con el espacio de usuario, a través de un pequeño demonio “transportador de mensajes”, llamado D-bus (comúnmente conocido como dbus). En el hipotético caso de que se quisiera romper el aislamiento a través del software (en vez de hacerlo a través del hardware como Meltdown), una forma de lograrlo, por ejemplo, sería a través de este demonio. Sin embargo, D-bus no presenta a la fecha, ninguna vulnerabilidad conocida que pueda ser explotada para esto.

A nivel procesador, el aislamiento es manejado por un pequeño supervisor que define si una página de memoria del kernel puede o no ser accedida. Esta característica del hardware, es la que permite al sistema operativo, mapear el kernel en el espacio de memoria de cada proceso de forma alternada con los procesos de usuario, y hacerlo de manera eficiente. Este sistema es el que ataca Meltdown. Para hacerlo, explota una vulnerabilidad encontrada en las ejecuciones fuera de orden (u “OoOE”, por las siglas en inglés de “Out-of-Order Execution”), característica presente en procesadores modernos.

Continue reading →

Seguridad en aplicaciones CGI sobre Apache

Sobre CGI

Las aplicaciones CGI (Common Gateway Interfaz – para referencias dirigirse a la RFC 3875) empleadas con mayor frecuencia hasta hace poco más de una década, han ido quedando en desuso y han sido reemplazadas por módulos externos que deben incorporarse al servidor HTTP de Apache.

CGI representa una forma sencilla para ejecutar programas bajo servidores HTTP con independencia de la plataforma (Robinson & Coard, 2004¹). Esto supone un mecanismo de ejecución directa del programa (código ejecutándose directamente sobre el sistema Operativo) que década y media atrás supuso serios riesgos de seguridad.


¿Por qué volver a CGI?

Los riesgos de seguridad hicieron que surgiesen alternativas a CGI y que esta interfaz dejase de estudiarse. No obstante, hoy día se ha avanzado en el refuerzo de las plataformas (tanto a nivel servidor HTTP de Apache como a nivel del propio kernel), lo que permite retomar los estudios sobre CGI y cuestiones relativas a la seguridad que pueden ser subsanadas como se demostrará más adelante.

De esta forma, es posible retomar las ventajas que supone CGI para el desarrollo de aplicaciones Web, entre las que se destacan por su valor operativo:

  • Menor consumo de recursos: tanto a nivel de microprocesador como de memoria, ya que se prescinde de una cantidad aparentemente significativa de procesos de ejecución simultánea (se estudia actualmente su incidencia, estimando un aproximado del 30% al 55% menos de procesos).
  • Posibilidad de desarrollar aplicaciones Web en prácticamente cualquier lenguaje: esto permite, entre otras cosas, crear aplicaciones Web completas en lenguajes como GNU Bash, C/C++, diversas implementaciones de Lisp y los clásicos como Perl, Python y PHP (sin módulos adicionales acoplados al servidor HTTP de Apache, es decir, sin módulos como WSGI, mod_php, etc.), entre otros.

Todo esto implica tanto ventajas económicas (ya que un menor consume de recursos supone equipos con menores requisitos de hardware) como ventajas tecnológicas (puesto que al existir una menor cantidad de dependencias, se obtiene un mayor control de la aplicación, lo cual se traduce como mayor seguridad (ver: M. W. Lucas, 2013, sobre Seguridad en OpenBSD).
Continue reading →

Bases matemáticas de la criptografía asimétrica (1)

Teoría de Números

La teoría de números es la rama de las matemáticas encargada del estudio de los números enteros y sus propiedades.

Se destaca como campo de estudio en esta rama, el de los números primos por su relevancia dentro de la Informática Teórica para el desarrollo y análisis de sistemas criptográficos asimétricos como, entre otros, el del algoritmo RSA.

En esta primera parte de la serie «Bases matemáticas de la criptografía asimétrica» se hace una introducción a los conceptos más elementales de la Teoría de Números y se comienza a profundizar en el estudio computacional de los números primos, mediante un breve repaso de las principales fórmulas y teoremas en este campo. Continue reading →