Archivo del Autor: txipi

Bombas fork(): un snowcrash para tu shell

Es conocido desde hace tiempo que hay una vulnerabilidad de DoS (Denial of Service, Denegación de Servicio) que afecta a muchos UNIX (¿cuál es el plural de UNIX? UNICES suena fatal :-D), así como en GNU/Linux. Con simplemente escribir este conjuro en una shell, terminamos por colgar el sistema:

:(){ :|:&};:

Menuda movida, ¿no? :-O

Lo primero de todo, ¿qué significa ese código? Bien, si sustituimos «:» por «función» e indentamos bien, se entiende mejor:

:(){ :|:&};:

funcion () { funcion | funcion & }; funcion

funcion () {
  funcion | funcion &
};
funcion

Es decir, primero definimos una función y luego la llamamos. Dentro de esa función, se llama de nuevo a esa función (recursión) dos veces y se une esos dos procesos por una tubería (pipe). Además se pone un & al final para que todo eso se ejecute en segundo plano.

A fin de cuentas lo que tenemos es un proceso que se llama a sí mismo (lo que ocasiona un bucle), pero que no tiene condición de finalización (bucle infinito) y lanza dos procesos hijos cada vuelta del bucle y los une por una tubería (más del doble de recursos necesarios cada vez).

Lo dicho, esto es más viejo que el picor, aunque hay scripts realmente sencillos que hacen cosas parecidas con distinto código. En Journey’s End nos plantean uno:

#!/bin/sh
$0 &
exec $0

Así que el problema no está en el conjuro en sí (no tendría sentido poner en nuestro IDS esa cadena para detectarla como maliciosa, porque habría infinitas cadenas que harían lo mismo), sino en la teoría que subyace: un usuario con un límite demasiado amplio de procesos de usuario creados, puede acabar los recursos del sistema.

¿Cuál es mi límite de procesos? Lo podemos conocer fácilmente con el comando ulimit:

ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 12273
max locked memory (kbytes, -l) 32
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 12273
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited

El número máximo en este sistema es 12273 para mi usuario, más que suficiente para dejarlo tuerto 🙁

Si quisiéramos evitar este problema, bastaría con cambiar ese límite, así:

ulimit -u 1000

De esta manera, evitamos el problema, aunque solamente para la shell en la que hemos ejecutado este comando. Podríamos lanzarlo en el /etc/profile o en algún script de inicio de sesión, pero es bastante más elegante modificarlo en el fichero limits.conf.

grep "nproc" /etc/security/limits.conf
# - nproc - max number of processes
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0

Como vemos, tenemos varios ejemplos que limitan los procesos a 20 o a 50 en función del grupo al que pertenezcan. También se pueden definir límites por usuario o se puede establecer un límite general:

% hard nproc 1000

Con esto limitamos el número máximo de procesos a 1000 para todos los usuarios.

Y entonces podemos preguntarnos ¿cómo la gente de GNU/Linux es tan torpe de poner un límite que nos puede colgar el sistema operativo? La respuesta tiene que ver no solo con la cantidad de procesos, sino con el peso de cada uno de ellos. Si fijamos a 1000 el número máximo de procesos por usuario, nos libramos de las dos bombas fork que hemos visto, pero modificando ligeramente la segunda, podríamos seguir tirando el sistema para muchos menos procesos:

#!/bin/sh
$0 &
find . &
exec $0

Quizá entonces no solamente haya que limitar el número de procesos, sino otros límites definidos en el fichero limits.conf.

Cuando leamos que tal malware permite ejecutar «código arbitrario» en nuestro sistema, nos podremos acordar de este torpe código y de cómo el solito es capaz de tumbar todo el servidor, desde una cuenta de usuario :-O

Entrevista entre bestias

Bueno, no es un bestiario lo que recolecta M@k en su Blog de Blogs, pero se le parece un poco, porque por ahí han pasado algunos de los «monstruos» de la blogocosa 🙂

Esta vez el turno me ha tocado a mí y me he tenido que fajar con una batería de preguntas que cuando la he visto casi me da un pasmo. La entrevista que me hicieron para el blog de Infogizarte (con foto de pecejasotzaile incluida :-D), fue casi lo contrario: pocas preguntas para que soltara buena chapa, así que he intentado ser breve esta vez 🙂

Reflexiones sobre el cracktivismo

Hace unas semanas, Mercè Molist, periodista especializada en hacking, cracking y hierbas afines, me escribió para que le contara mis opiniones sobre los recientes actos de cracktivismo que se estaban dando en la red.

¿Cracktivismo? Sí, cracktivismo, algo diferente al hacktivismo. El término se lo he leído por primera vez a Manel Medina, director del equipo de seguridad esCERT, y me parece muy acertado: hacker + activista = hacktivista, cracker + activista = cracktivista.

Un poco a vuelapluma solté unas cuantas ideas:

  • Los defacement o los ataques DDoS no son propios de hackers. La motivación de los defacement no es la curiosidad, pura droga del cerebro hacker, sino el ego y la admiración, algo mucho más mundano, típico de mentes menos inquietas. Los DDoS atentan contra un pilar de la ética hacker: la información debe fluir, quiere ser libre, no se debe poner trabas a la libertad de expresión.
  • El hacktivismo bebe de la ética hacker y comparte su postura en gran parte. A pesar de que los Netstrikes pueden verse como DDoS, no son más que sentadas virtuales, hechas con medios tecnológicos sencillos, al alcance de cualquiera que desee sumarse. Sus razones y sus modos están muy lejos de las botnets empleadas por las cibermafias para tumbar casi cualquier sitio en la Red, a pesar de que aparentemente el resultado pueda parecer similar.
  • No es lo mismo estudiar la tecnología para evaluar su uso, protestar frente a abusos tecnológicos o legales y preparse para evitarlos (autodefensa digital), que conseguir por medios propios o ajenos técnicas y tecnologías que otorgan poder a unos pocos, les permite imponer sus criterios y deja indefensa a gran parte de la Red.
  • Tomando prestada la célebre frase de mi paisano Unamuno, los hacktivistas no pretenden vencer, sino convencer, mientras que los cracktivistas intentan lo contrario, vencer sin convencer. El hacktivista se centra en la batalla ideológica, realmente su pelea se da en las mentes de cada persona que participa o asiste a sus acciones. El resultado práctico no importa en absoluto. Su verdadero objetivo no es apropiarse o tumbar un servidor, sino llegar a las mentes de quienes acceden a él. A pesar de ser capaz de saltar barreras tecnológicas como cortafuegos o sistemas de detección de intrusos, el hacktivista tiene que sortear una capa más, la humana, llena de trincheras de preconceptos y alambradas de prejuicios. Por eso usa otras bazas además de las tecnológicas: el humor, la argumentación, la emotividad, la sorpresa… El cracktivista, en cambio, utiliza a las personas y a sus ordenadores como meros fines para incrementar su cuota de poder, establece sus criterios por la fuerza, alimenta su ego con el miedo de quien teme sus ataques.
  • Más que de ciberguerra puede hoy hablarse de cibermafia. Redes de extorsión cibernética tejidas gracias a la colaboración no voluntaria de miles de cibernautas. Un hacktivista declinaría todo ese poder, puesto que sabe que su uso y abuso destruiría lo más preciado de la Red, su libertad, y facilitaría la adopción de medidas cada vez más restrictivas. El cracker, y en igual medida el cractivista, tiene objetivos mucho más mundanos, más a corto plazo. No duda en demostrar su poder en cada ocasión y en imponer su ley.
  • ¿Irá a más esta cibermafia? Depende de sus resultados en cuanto a costes y beneficios. Actualmente el coste es prácticamente cero y los beneficios son altísimos, así que tiene sentido que aumente su incidencia. La buenas noticia es que es probable que no haya pastel para todos y que muchos de estos ataques se centren en otros grupos mafiosos, en guerras fratricidas. Si finalmente se convierte en una pelea de «perros grandes», será más fácil combatirlos porque serán menos heterogéneos, aunque habrá que estar a la altura en conocimientos y medios.

Y Mercè las ha juntado con las suyas propias, las de Manel y las que ha encontrado en la red para hacer un artículo muy chulo: «Crecen los ciberataques por motivos políticos» 🙂

De charleta con Tiscar Lara

Con motivo de la Moodle Moot Euskadi 2008, Tiscar Lara se pasó por tierras vascas a contarnos cómo veía ella la Red. Su conferencia en la Moot estuvo muy bien, me encantó los puntos que trató y su enfoque escéptico y crítico. Cuando ya estábamos con el hamaiketako y los canapés, Josi Sierra, videoactivista de Aprendices, me comentó a ver si me apetecía hacer una pequeña entrevista a Tiscar. Yo acepté encantado porque no se presentan este tipo de oportunidades todos los días, así que la abordamos mientras hablaba con David y la convencimos para grabar un rato.

Fruto de esa conversación tenemos estos vídeos grabados por Josi con su estilo propio, que a mí personalmente me encanta:

Resumen de la conferencia de Tiscar:

Las dos caras de la Red:

¿Qué usos de Internet te gustarían que se dieran?

Gracias a Tiscar por sus opiniones y a Josi por su manera de ver el mundo en 4:3 😉

Curso de programación en C para GNU/Linux (final II)

Hace bastante tiempo escribí un curso de programación en C para GNU/Linux, unos años después lo publiqué en este blog, y finalmente colgué un PDF con el curso maquetado.

A la gente le gustó bastante y todavía recibo algunas dudas, correcciones o comentarios sobre el curso, lo que me hace bastante ilusión porque significa que se sigue utilizando 🙂

A raíz de los premios startup2.0, recordé la existencia de bubok, una web en la que subes tu PDF, diseñas una portada y permites que la gente pida copias impresas de tus escritos. Muy buena idea si quieres difundir tus trabajos evitando gastarte mucho dinero al principio. Intenté subir mi documento desde el portátil del trabajo (Debian + Iceweasel) y no me funcionó muy bien la web, así que miré un poco por Internet y vi que Lulu hacía prácticamente lo mismo. Enredé un poco con la web y finalmente subí el curso.

Lo podéis descargar y comprar desde mi tienda en Lulu: http://stores.lulu.com/garaizar. El material es copyleft, la descarga gratuita y si queréis tener las 81 páginas en papel, tendréis que pagar 6 euros, precio amigo ;-D (de esos 6 euros creo que me llevo 0.30 o algo así, intenté poner lo mínimo).

Si alguien se lo compra, que mande una foto de cómo queda, ¿vale? 😉

Actualización: A sugerencia de Angel María, he vuelto a probar en Bubok y de maravilla (ahora con Ubuntu 8.04 y Firefox 3beta5). Aquí tenéis el resultado: http://www.bubok.com/libros/1561/gnulinux-programacion-de-sistemas.

La tristeza es hermosa con Clint Mansell

Hace tiempo que no oculto que soy un fan incondicional de Darren Aronofsky. Solamente he visto 3 largometrajes suyos (PI, Requiem por un sueño y La fuente de la vida), tampoco tiene muchos más (aunque si alguien sabe como conseguir Protozoa, Fortune cookie o Supermarket sweep, ¡que me avise!), pero los 3 me han impactado mucho.

Quizá la película más difícil de ver ha sido La fuente de la vida, no me esperaba el guión y de hecho no me vino muy bien verla por la temática que trata. Aún así, Darren sigue siendo uno de mis directores favoritos y cuando he vuelto a verla, he flipado con la manera de transmitir con imágenes.

Si Darren maneja el lenguaje visual como pocos, Clint Mansell compone para sus películas como ningún otro. Supongo que a muchos os sonará su tema principal en Requiem por un sueño, lo han usado en multitud de vídeos, anuncios, promociones e incluso en trailers de otras películas (creo que en el Señor de los Anillos).

Quizá os suene menos su banda sonora para La fuente de la vida. A mí sencillamente me alucina. La suelo utilizar para relajarme y para estudiar (mañana tengo examen y «estoy haciendo un descanso») y creo que Clint Mansell es capaz de hacer música triste y hermosa, requiems que apetece escuchar.

Os dejo con la primera canción de la BSO, para que os entren ganas de más:

Cumpleaños pasado por agua

Ayer fue mi cumpleaños (30 años de historia me contemplan, ufff) y como antaño, ha caído en exámenes, así que me lo he pasado estudiando Dificultades de Aprendizaje.

Cuando vi el parte meteorológico para este finde me alegré: lluvia a raudales, pocas tentaciones para mandar a los libros a tomar viento fresco, pero este mediodía he puesto las noticias y menudo temón, riesgos de inundaciones por todos lados.

Pensé que con las grandes inundaciones del 83, se había mejorado en infraestructuras y demás, pero la recomendación de la Administración ha sido un escueto consejo del tipo «no conviene acercarse a los márgenes de los ríos, que el agua baja con mucha fuerza». Aja, de acuerdo, ¿algo más? 😀

Bueno, como no suelo seguir muchos consejos, he pillado la cámara y me he ido a los márgenes del río que más cerca tenía, y vaya, sí que bajaba el agua con fuerza…

Mira ama, ¡salgo en la tele!

Realmente el programa se emitió hace un montón, más o menos cuando fue el jucio de Ramoncín contra Alasbarricadas.org, así que figúrate… Pero como soy un desastre, recorté el video, lo subí a youtube y se me olvidó publicarlo.

Hace unos días un personaje del e-ghost se lo encontró buscando otra cosa y ha sido bastante comentado 😀

Así que nada, para que quien quiera pueda reirse a gusto, aquí estoy, hablando sobre la SGAE y sobre la cultura libre en la ETB2, dentro del programa Pásalo!, que si bien no es tan chulo como salir en Tres 14, es mucho mejor que salir en el Diario de Patricia ;-D

Buffff… me faltan muchas tablas delante de la cámara :-(. Habrá que pillarse una para hacer un videoblog y perderle el miedo al objetivo 😉

Call for levelz!

Llevo ya unos cuantos años encargándome del concurso «Hack it!» de la Euskal Encounter, y algunos más haciendo lo propio en la Universidad de Deusto. A pesar de que es bastante trabajo, lo hago encantado porque en nivel técnico y las ganas de los participantes son alucinantes 🙂

Sin embargo, mi red neuronal es finita y cada vez me cuesta más inventar nuevos retos que tengan la mezcla justa de complejidad técnica, ingenio y diversión, así que el año pasado decidí (después de hablar con muchos de los participantes) cambiar un poco el concurso.

Las reglas serán prácticamente las mismas, pero la manera de definir los niveles será mucho más abierta.

Hubo un debate el año pasado con respecto a la secuenciación de los niveles. Existían partidarios de publicar todos los niveles a la vez y otros que preferían el reto del «camino único» (niveles con un orden pre-establecido que evitan que pases al siguiente si no has completado el anterior). Todavía no lo tengo 100% claro, pero quizá opte por probar un método que me sugirieron: ir publicando cada X tiempo un nuevo nivel. La gente que pase los niveles anteriores, tendrá ventaja porque tendrá más tiempo para los siguientes y la gente que no los pase, no se quedará atascada en un nivel infernal (siempre hay alguno, aunque es muy difícil detectarlos desde la organización O:-) ).

Dicho todo esto, os escribo para pediros niveles. En lugar de un «call for papers», hagamos un «call for levels», donde se pueda contribuir enviando propuestas de niveles para el hackit. Las condiciones son las siguientes:

1) Se podrán enviar tantas propuestas como se estime oportuno, no hay límite de envíos.

2) Las propuestas deberán remitirse a txipi ALGARROBO txipinet PUNKO com, indicando en el asunto «Call for levels, hackit 2008».

3) En la propuesta deberá especificarse una explicación detallada del nivel, su resolución y un grado de dificultad estimado.

4) Se admitirán también sugerencias de niveles menos elaboradas, bocetos, ideas, etc. aunque sus posibilidades de ser incluidas en el concurso serán menores que las de propuestas más elaboradas.

5) El nivel propuesto deberá desvelar una palabra (frase o URL) que apunte hacia el siguiente nivel en el concurso. Conseguir esa palabra será el indicador de que el nivel ha sido superado.

Ya, ¿y qué ventaja tiene participar en este «call for levels»? Tampoco es que os pueda conceder la vida eterna, pero hay algunos beneficios:

1) Si participas en el concurso y se incluye alguna de tus propuestas, tendrás niveles ya resueltos, lo que puede suponer una gran ventaja.

2) Aparecerás en los créditos del concurso, por supuesto.

3) Me harás una persona un poco menos agobiada y más feliz 🙂

De acuerdo, supongamos que os he convencido (o estáis de exámenes y os enrolaríais en un carguero uzbeko con tal de no estudiar)… ¿qué se puede enviar como propuesta? Podéis echar un vistazo a otras ediciones del hackit para situaros: hackit1, hackit2. En general se aceptan pruebas de seguridad en cliente web (javascript, Java, Flash, ActiveX, etc.), criptografía, cracking en cualquier plataforma y cosas similares. Si queréis enviar algo para hackear en la parte servidora (por ejemplo, un nivel de sql injection contra un servidor web), deberéis preparar una máquina virtual de Qemu con lo necesario, para que la lancemos desde el servidor del hack it (intentad limitar la memoria RAM que use la máquina virtual, para que pueda haber varias ejecutándose concurrentemente).

Así que lo dicho, espero que concursantes de otros años como la gente de 48 bits, e-ghost, DiarioLinux, Navarparty, #euskal_linux, Linuca y demás, os animéis a colaborar! 😉

Happy hacking!

Microciencia-ficción

Microciencia-ficción

Oskitar y Punio, de cero cero y cincuenta y siete . es han organizado el I CONCURSO TWITTER DE RELATOS BREVES DE CIENCIA FICCIÓN y no he podido resistirme 🙂

La idea es simple, contar en un tweet (un micropost de 140 caracteres de Twitter) un relato breve de ciencia-ficción. Casi todos los mostrados son bastante apocalípticos, como corresponde habitualmente al género, pero hay otros bastante cachondos.

Estás son mis contribuciones (de momento):

@scifitwit: Era su primer día. Sin ver el cartel, entró en la sala de control del LHC. Su estropajo frotó un botón y el mundo implosionó.

@scifitwit: Sabía que moriría, pero quería un entierro normal. Soltó su casco y lo lanzó con fuerza en sentido opuesto a la escotilla.

@scifitwit: Erastótenes terminó sus cálculos y miró por la ventana con una sonrisa infantil: ¡quedaba tanto mundo por descubrir!

@scifitwit: el zumbido de la última abeja reina cesó y la vegetación planetaria entró en parada cardiorespiratoria, un nuevo letargo de Gaia

Tenéis más aquí.