{"meta":{"title":"Inyecciones de scripts","intro":"Comprenda los riesgos de seguridad asociados con las inyecciones de scripts y GitHub Actions los flujos de trabajo.","product":"GitHub Actions","breadcrumbs":[{"href":"/es/actions","title":"GitHub Actions"},{"href":"/es/actions/concepts","title":"Conceptos"},{"href":"/es/actions/concepts/security","title":"Seguridad"},{"href":"/es/actions/concepts/security/script-injections","title":"Inyecciones de scripts"}],"documentType":"article"},"body":"# Inyecciones de scripts\n\nComprenda los riesgos de seguridad asociados con las inyecciones de scripts y GitHub Actions los flujos de trabajo.\n\n## Entender el riesgo de las inyecciones de código\n\nCuando cree flujos de trabajo, [acciones personalizadas](/es/actions/concepts/workflows-and-actions/custom-actions) y [acciones compuestas](/es/actions/tutorials/create-actions/create-a-composite-action), siempre debe plantearse si el código podría ejecutar entradas no fiables de atacantes. Esto puede ocurrir cuando un atacante agrega comandos y scripts malintencionados a un contexto. Cuando tu flujo de trabajo se ejecuta, estas secuencias podrían interpretarse como código que luego se ejecutará en el ejecutor.\n\nLos atacantes pueden agregar su propio contenido malintencionado al [contexto de `github`](/es/actions/reference/workflows-and-actions/contexts#github-context), que se debe tratar como una entrada potencialmente no fiable. Normalmente, estos contextos terminan con `body`, `default_branch`, `email`, `head_ref`, `label`, `message`, `name`, `page_name`, `ref` y `title`. Por ejemplo: `github.event.issue.title` o `github.event.pull_request.body`.\n\nDebes asegurarte de que estos valores no fluyan directamente hacia los flujos de trabajo, acciones, llamados a las API ni a cualquier otro lugar en donde se puedan itnerpretar como còdigo ejecutable. Al adoptar el mismo enfoque de programación defensiva que usaría con cualquier otro código de aplicación privilegiado, puede contribuir a reforzar la seguridad al usar GitHub Actions. Para obtener información sobre algunos de los pasos que podría realizar un atacante, consulta [Referencia de uso seguro](/es/actions/reference/security/secure-use).\n\nAdemás, hay otras fuentes menos obvias de entradas no confiables, tales como los nombres de rama y las direcciones de correo electrónico, que pueden ser bastante flexibles en su contenido permitido. Por ejemplo, `zzz\";echo${IFS}\"hello\";#` sería un nombre de rama válido y un posible vector de ataque para un repositorio de destino.\n\nLas siguientes secciones explican còmo puedes ayudar a mitigar el riesgo de inyecciòn de scripts.\n\n### Ejemplo de un ataque de inyecciòn de scripts\n\nUn ataque de inyección de scripts puede ocurrir directamente dentro del script en línea de un flujo de trabajo. En el siguiente ejemplo, una acción utiliza una expresión para probar la validez del título de una solicitud de cambios, pero también agrega el riesgo de ocasionar una inyección de scripts:\n\n```yaml\n      - name: Check PR title\n        run: |\n          title=\"${{ github.event.pull_request.title }}\"\n          if [[ $title =~ ^octocat ]]; then\n          echo \"PR title starts with 'octocat'\"\n          exit 0\n          else\n          echo \"PR title did not start with 'octocat'\"\n          exit 1\n          fi\n```\n\nEste ejemplo es vulnerable a la inyección de scripts, ya que el comando `run` se ejecuta en un script de shell temporal en el ejecutor. Antes de ejecutar el script de shell, las expresiones dentro `${{ }}` se evalúan y, a continuación, se sustituyen por los valores resultantes, lo que puede hacer que sea vulnerable a la inserción de comandos del shell.\n\nPara insertar comandos en este flujo de trabajo, el atacante podría crear una solicitud de incorporación de cambios denominada `a\"; ls $GITHUB_WORKSPACE\"`:\n\n![Captura de pantalla del título de una solicitud de incorporación de cambios en modo de edición. Se ha introducido un nuevo título en el campo: a\"; ls $GITHUB\\_WORKSPACE\".](/assets/images/help/actions/example-script-injection-pr-title.png)\n\nEn este ejemplo, el carácter `\"` se utiliza para interrumpir la sentencia `title=\"${{ github.event.pull_request.title }}\"`, lo que permite que el comando `ls` se ejecute en el runner. Puede ver la salida del comando `ls` en el registro:\n\n```shell\nRun title=\"a\"; ls $GITHUB_WORKSPACE\"\"\nREADME.md\ncode.yml\nexample.js\n```\n\nPara conocer las mejores prácticas de seguridad de los runners, consulta [Referencia de uso seguro](/es/actions/reference/security/secure-use#good-practices-for-mitigating-script-injection-attacks)."}