Informática
Seguridad
Desarrollo

Código PHP y repositorio git: ¿cómo han conseguido hackearlo?

Si no te enteraste de lo que ocurrió con el código PHP a principios de 2021 en el ámbito de la seguridad web es que no eres un verdadero developer. El domingo 28 de marzo, un grupo de hackers logró acceder al repositorio Git interno del lenguaje de programación PHP, consiguiendo añadir una puerta trasera al código fuente del mismo. ¿Sabías que este es el lenguaje de programación más usado en toda la World Wide Web? De hecho, se calcula que un 79,1% de todos los sitios web del mundo lo emplean.

Foto de código html y código php

Según se conoce, este ataque insertó dos cambios maliciosos en el repositorio php-src, y aunque se desconoce la causa, todo apunta a que el servidor oficial git.php.net fue atacado.

Qué es el código PHP en programación, para qué sirve y cuáles son sus características

El código PHP es un lenguaje de programación de uso general que se adapta sobre todo al desarrollo web. Se trata de un lenguaje de scripting de código abierto con programación HTML integrada, que resulta ventajoso por su flexibilidad y su alta compatibilidad con otras bases de datos.

Agregar código es claramente imprescindible en la programación web.

Por si no lo sabías, un lenguaje de código abierto es un código de programación de uso libre y gratuito para todos los programadores que quieran usarlo. “Con programación HTML integrada” significa que en un mismo archivo vamos a poder combinar código PHP con código HTML, siguiendo unas reglas básicas.

Figura de un muñeco de papel con código php por detrás

El PHP suele utilizarse para crear páginas web dinámicas, esas cuyo contenido va cambiando ya sea por modificaciones en su base de datos, búsquedas o aportaciones de los usuarios. Este lenguaje se procesa en servidores, que devuelven páginas HTML como si fueran estáticas.

El funcionamiento es el siguiente: cuando escribes la URL de un sitio web en un buscador, el servidor recibe la petición, reúne la información necesaria consultando a bases de datos, otras webs u otros servidores. Seguidamente, el servidor responde enviando una página web estática pero cuya creación ha sido dinámica. Fíjate en este esquema para comprenderlo mejor:

         Página web estática: Petición → Respuesta

         Página web dinámica: Petición → Procesado y preparación → Respuesta 

Para distinguir el código PHP de JavaScript, debes saber que PHP genera HTML y envía el código al cliente como si se tratara de una página estática. El cliente recibe los resultados que el servidor devuelve después de interpretar el código PHP. Lo mejor de utilizar este lenguaje es que es muy simple para los desarrolladores principiantes pero, a la vez, ofrece muchas funcionalidades avanzadas para los más profesionales.

¿Qué ha pasado? Problemas en el repositorio git

Quizás te estés preguntando cómo puede ser que un grupo de hackers haya podido acceder al repositorio del código fuente del lenguaje de programación web más utilizado del mundo. Pues bien, el hecho de que sea un código abierto tiene mucho que ver. Como te explicábamos, eso significa que cualquiera con conocimientos puede contribuir a mejorar este código, y que no hay ninguna empresa detrás que contrate a trabajadores o comercialice este código, de modo que es libre y gratuito.

Seguridad con PHP: nuevas medidas

Según sabemos, el ataque se produjo por un fallo en el repositorio git.php.net, que actúa como un espejo del repositorio principal. En este sentido, el repositorio contiene todos los datos de un sitio web y procura protegerlos. No obstante, mientras los expertos siguen investigando lo ocurrido, han decidido que el mantenimiento de una estructura Git propia es un riesgo de seguridad innecesario y por lo tanto, el servidor git.php.net va a desaparecer. A partir de ahora, los repositorios en GitHub que antes actuaban solo como mirrors, pasarán a ser los principales. De este modo, los cambios deberán enviarse a GitHub en lugar de a git.php.net.

El código malicioso que se añadió al código fuente se hizo a través de las cuentas de dos miembros del equipo core de PHP, pero ambos dijeron no estar involucrados. El equipo de PHP usa autenticación de doble factor para sus cuentas, y por ello creen que se trató de un fallo en el servidor Git principal.