Consejos para desarrollar una carrera en ciberseguridad

Camino Vivimos tiempos interesantes para cualquier persona interesada en la informática (siempre que esté dispuesta a mantenerse al día, nada es gratis). Si hablamos de ciberseguridad, creo que en nuestro contexto todavía está por despegar, pero hay presente y futuro, desde luego.

En So, you want to work in security? algunos consejos sobre el tema.

Primero, no hay un camino único:

I’ve learned that there is no single, standard, or best preparatory path. Maybe this will change as the field matures, but I doubt it.

Segundo, algo de lo que carecían muchos de los expertos en seguridad hasta hace no mucho: hay que programar.

Write code. The best security engineers I know are also actively writing code. This gives them firsthand experience with writing software, including unintentionally-yet-inevitably introducing security bugs.

Naturalmente, rompe cosas:

Break code. Spend time finding software bugs. Learn how to use a debugger, network scanner, web debugging proxy, and software fuzzer. Spend time in hacker playgrounds, which are available for all skill levels.

También habla de compartir conocimiento y otro consejo no técnico (y que muchos técnicos olvidan): aprender y practicar nuestras habilidades comunicativas.

Además, recordar que hay que trabajar y equivocarse a veces, tratar de ser optimista, pedir ayuda, …

Interesante.

Una introducción a las baterías

Pila y más En Powering micro-controllers by Battery un buen resumen de los tipos de pilas y baterías y cuál puede ser el uso más conveniente para cada tipo y las recomendaciones.

La ‘respuesta corta’ se fija primero en los tipos de batería existentes: tamaño frente a capacidad y precio. Aunque también habría que considerar en qué tecnología se basan (fundamentalmente la química, que afecta al voltaje, pero también a la curva de descarga):

There are many differences between each kind of battery available on the marked, but the features we normally use to take a decision is: size versus capacity versus price. Logically if we simply didn’t care about size or price, bigger batteries like a standard Akaline D would offer some great capacity and stability, also the new 1.5V Lithium cells are great but very expensive!

Well, as we normally care about price and size, we also need to start considering other factors like the battery’s chemistry, which will affect the not only the cell voltage but the discharging curve as well – those will be covered in more details at the “Long Answer”.

Para tener a mano, en caso de duda.

Algunas ideas para trabajar en ciberseguridad

Protección En So you want to work in security (but are too lazy to read Parisa’s excellent essay) algunas ideas interesantes si pensamos que trabajar en ciberseguridad podría ser una opción para nosotros.

  1. Ciberseguridad tiene que ver con la discordancia entre el comportamiento real del sistema y lo que esperaban que fuera el comportamiento sus diseñadores.
  2. Se trata de una protociencia. Mucha información, que todavía no tenemos bien organizada y en la que algo puede fallar donde menos se espera.
  3. La gente podrá confiar en nosotros, pero no hay forma de medir la efectividad de lo que hagamos.
  4. Puede que creas que eres más listo que los desarrolladores de software, pero no es así.

Principios de seguridad de Saltzer y Schroeder

Grabado en piedra Es bien conocida la frase de Groucho Marx: ‘Estos son mis principios. Si no le gustan… tengo otros’. Sin embargo, los principios tiene su interés y utilidad como conceptos o valores que nos guían en el comportamiento: cuando nos enfrentamos a una nueva situación o nos movemos en terreno incierto, los principios nos pueden ayudar a tomar decisiones.

En ese sentido traemos hoy aquí The Security Principles of Saltzer and Schroeder que presentaron sus principios sobre protección de la información en sistemas informáticos. Serían:

  • Economía en el mecanismo (tan simple y pequeño como sea posible).
  • Fallo en modo seguro por defecto (si algo va mal, el sistema queda en un estado seguro).
  • Mediación completa (para cada acceso a un objeto del sistema se debe comprobar la autorización).
  • Mínimo privilegio (Cada agente debe tener los permisos necesarios para realizar su tarea, pero no más).
  • Mínimo mecanismo común (no compartir estado entre diferentes agentes. Si alguien puede corromperlo, podrá influir en el comportamiento de los que dependan de él).
  • Separación de privilegios (separar las acciones de manera que cada una tenga permiso para realizar la parte que sea necesaria para su actividad; evitar hacer una única pieza que tiene permiso para realizar las distintas tareas).
  • Diseño abierto (el diseño no debería ser secreto o, al menos, su seguridad no debería depender de la ignorancia de los atacantes sobre sus internalidades).
  • Psicológicamente aceptable (si las reglas no son razonables, será difícil que sean aceptadas y seguidas con cierto rigor).

El autor juega con los principios y la saga de ‘Star Wars’ así que puede valer la pena echarle un vistazo, más allá de los principios.

Fuzzing para detección de fallos en Google

Líado Creo que hace un montón de tiempo que no hablábamos de Fuzzing: esencialmente (aunque últimamente se ha ido sofisticando) enviar basura diversa a las interfaces de entrada de los programas para detectar problemas de seguridad.

En Announcing OSS-Fuzz: Continuous Fuzzing for Open Source Software una iniciativa de Google para poner el sistema de fuzzing como servicio a disposición de desarrolladores de software libre. Ya ha servido para encontrar fallos en algunos proyectos:

OSS-Fuzz has already found 150 bugs in several widely used open source projects (and churns ~4 trillion test cases a week). With your help, we can make fuzzing a standard part of open source development, and work with the broader community of developers and security testers to ensure that bugs in critical open source applications, libraries, and APIs are discovered and fixed.

El proyecto está disponible en oss-fuzz con algo más de información.

Recordemos que Microsoft fue uno de los primeros promotores del fuzzing dentro de su ciclo de vida del desarrollo seguro (por cierto, más recientemente también ha puesto a disposición del público Microsoft opens fuzz testing service to the wider public y también que Coverity Scan es otro proyecto que ofrece sus servicios a los desarrolladores de software libre, desde otra perspectiva.