Esta sección incluye todo lo que está fuera del código fuente pero aun así es importante para la seguridad del producto que se está creando. Dado que todas las cuestiones incluidas en esta sección no están directamente relacionadas con el código fuente, las hemos separado de las demás secciones.
<get>
, que recupera la dependencia especificada por la dirección URL correspondiente. Este enfoque es funcionalmente equivalente al escenario en el que un desarrollador documenta cada dependencia externa como un artefacto incluido en el proyecto de software, pero es más deseable porque automatiza la recuperación e incorporación de las dependencias cuando se realiza una compilación.
<get src="http://people.apache.org/repo/m2-snapshot-repository/org/apache/openejb/openejb-jee/3.0.0-SNAPSHOT/openejb-jee-3.0.0-SNAPSHOT.jar"
dest="${maven.repo.local}/org/apache/openejb/openejb-jee/3.0.0-SNAPSHOT/openejb-jee-3.0.0-SNAPSHOT.jar"
usetimestamp="true" ignoreerrors="true"/>
<dependencies>
<dependency org="javax.servlet"
name="servletapi"
rev="2.3" conf="build->*"/>
<dependency org="javax.jms"
name="jms"
rev="1.1" conf="build->*"/> ...
</dependencies>
<dependencies>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>javax.jms</groupId>
<artifactId>jms</artifactId>
<version>1.1</version>
</dependency>
...
</dependencies>
Configure::write('debug', 3);
Configure::write()
indica el nivel de depuración. Cuanto mayor sea el número, más detallados serán los mensajes de registro.low
.
Configure::write('Security.level', 'low');
Session.timeout
, las opciones Security.level
definen cuánto tiempo es válida una sesión. El tiempo de espera de sesión real es igual al Session.timeout
por uno de los siguientes múltiplos:ActionForms
son vulnerables a la manipulación de ClassLoader.
const dns = require('dns');
// User-controlled input for DNS servers
const customDnsServers = from_user_controlled_input;
// Set custom DNS servers
dns.setServers(customDnsServers);
customDnsServers
se le asigna un valor derivado de la entrada controlada por el usuario. Esta entrada se utiliza luego para configurar los servidores DNS usandodns.setServers(customDnsServers)
. Si un atacante proporciona direcciones de servidor DNS maliciosas, puede dirigir la aplicación para que resuelva nombres de dominio utilizando sus servidores, lo que puede devolver direcciones IP falsas.Dockerfile
no especifica un USER
, los contenedores de Docker se ejecutan con privilegios de superusuario de forma predeterminada. Estos privilegios de superusuario se propagan al código que se ejecuta dentro del contenedor, que suele ser más permisivo de lo necesario. La ejecución del contenedor Docker con privilegios de superusuario amplía la superficie de ataque, lo que podría permitir a los atacantes realizar formas de explotación más graves.latest
indica automáticamente el nivel de versión de una imagen que no usa un resumen o una etiqueta única para proporcionar una versión. Docker asigna automáticamente la etiqueta latest
como mecanismo para apuntar al archivo de archivo de manifiesto más reciente. Debido a que las etiquetas son mutables, un atacante puede reemplazar una imagen o capa usando una etiqueta latest
(o etiquetas débiles comoimagename-lst, imagename-last, myimage
).ubuntu
.
FROM ubuntu:Latest
...
zypper
para que recupere la última versión del paquete dado.
...
zypper install package
...
Example 2
, si el repositorio está comprometido, un atacante podría simplemente cargar una versión que cumpla con los criterios dinámicos y provoque que zypper
descargue una versión malintencionada de la dependencia.ADD/COPY
, un atacante puede recrear cada capa del docker para obtener la información.Volumes
también puede exponer directorios confidenciales. Si necesita usar Volumes
para conservar los datos, evite montar directorios confidenciales.Ejemplo 2: en el siguiente código ASPX se permite la redirección automática de todas las solicitudes de secuencias de comandos de ASP.NET para Microsoft Ajax CDN:
...
<script src="http://ajax.microsoft.com/ajax/jquery/jquery-1.4.2.min.js" type="text/javascript"></script>
...
...
<asp:ScriptManager
ID="ScriptManager1"
EnableCdn="true"
Runat="Server" />
...
Example 2
, el control ScriptManager
configura su página ASPX para que redireccione automáticamente cualquier solicitud de script a la CDN correspondiente.services-config.xml
especifica un elemento XML "Logging" (Registro) para describir los diferentes aspectos del registro. Tiene un formato similar al siguiente:
<logging>
<target class="flex.messaging.log.ConsoleTarget" level="Debug">
<properties>
<prefix>[BlazeDS]</prefix>
<includeDate>false</includeDate>
<includeTime>false</includeTime>
<includeLevel>false</includeLevel>
<includeCategory>false</includeCategory>
</properties>
<filters>
<pattern>Endpoint.*</pattern>
<pattern>Service.*</pattern>
<pattern>Configuration</pattern>
</filters>
</target>
</logging>
target
toma un atributo opcional que se llama level
, el cual indica el nivel de registro. Si el nivel de depuración se establece en un nivel demasiado detallado, su aplicación puede escribir datos confidenciales en el archivo de registro.allUsers
y allAuthenticatedUsers
, otorga a cualquier persona acceso a datos confidenciales.