Esta seção contém tudo o que fica fora do código-fonte, porém que é essencial para a segurança do produto que está sendo criado. Como os problemas tratados neste domínio não são diretamente relacionados com o código-fonte, nós o separamos dos demais domínios.
<get>
, que recupera a dependência especificada pelo URL correspondente. Essa abordagem é funcionalmente equivalente ao cenário em que um desenvolvedor documenta cada dependência externa como um artefato incluído no projeto de software, mas é mais desejável porque automatiza a recuperação e incorporação das dependências quando um build é executado.
<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 o nível de depuração. Quanto maior o número, mais detalhadas serão as mensagens de log.low
.
Configure::write('Security.level', 'low');
Session.timeout
, as configurações de Security.level
definem por quanto tempo uma sessão permanece válida. A hora de tempo limite de sessão real é igual a Session.timeout
vezes um dos seguintes múltiplos:ActionForms
são vulneráveis à manipulação 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
recebe um valor derivado da entrada controlada pelo usuário. Em seguida, essa entrada é usada para configurar os servidores DNS usando dns.setServers(customDnsServers)
. Se um invasor fornecer endereços de servidores DNS mal-intencionados, ele poderá direcionar o aplicativo para resolver nomes de domínio usando seus servidores, o que pode retornar endereços IP falsos.Dockerfile
não especifica um USER
, os contêineres do Docker são executados com privilégios de superusuário por padrão. Esses privilégios de superusuário são propagados para o código em execução dentro do contêiner, o que geralmente é mais permissão do que o necessário. A execução do contêiner do Docker com privilégios de superusuário amplia a superfície de ataque que pode permitir que invasores executem formas mais sérias de exploração.latest
indica automaticamente o nível de versão de uma imagem que não usa uma tag de resumo ou exclusiva para fornecer uma versão para ela. O Docker atribui automaticamente a tag latest
como mecanismo para apontar para o arquivo de manifesto de imagem mais recente. Como as tags são mutáveis, um invasor pode substituir uma imagem ou camada usando uma tag latest
(ou tags fracas, como imagename-lst, imagename-last, myimage
).ubuntu
.
FROM ubuntu:Latest
...
zypper
a recuperar a versão mais recente do pacote fornecido.
...
zypper install package
...
Example 2
, se o repositório estiver comprometido, um invasor pode simplesmente fazer upload de uma versão que atenda aos critérios dinâmicos e fazer com que o zypper
baixe uma versão mal-intencionada da dependência.ADD/COPY
, um invasor pode recriar cada camada do docker para obter as informações.Volumes
também pode expor diretórios confidenciais. Se você precisa usar Volumes
para persistir os dados, evite montar diretórios confidenciais.Exemplo 2: O código ASPX a seguir permite o redirecionamento automático de todas as solicitações de script da estrutura ASP.NET à 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
, o controle ScriptManager
configura sua página ASPX para redirecionar automaticamente qualquer solicitação de script à CDN apropriada.services-config.xml
especificará um elemento XML "Logging" para descrever vários aspectos desse registro. Parece o seguinte:
<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
usa um atributo opcional denominado level
, que indica o nível de log. Se o nível de depuração for definido com um nível muito detalhado, seu aplicativo pode gravar dados confidenciais no arquivo de log.allUsers
e allAuthenticatedUsers
, dá a qualquer pessoa acesso a dados confidenciais.