Quadro de segurança: gerenciamento de configurações | Atenuações
Implementar a CSP (Política de Segurança de Conteúdo) e desabilitar o JavaScript embutido
Title | Detalhes |
---|---|
Componente | Aplicativo Web |
Fase do SDL | Build |
Tecnologias aplicáveis | Genérico |
Atributos | N/D |
Referências | Uma introdução à política de segurança de conteúdo, referência de política de segurança de conteúdo, introdução à política de segurança de conteúdo, posso usar o CSP? |
Etapas | A CSP (Política de Segurança de Conteúdo) é um mecanismo de defesa aprofundado, um padrão de W3C, que permite aos proprietários do aplicativo Web ter controle sobre os conteúdos inseridos em seus sites. A CSP é adicionada como um cabeçalho de resposta HTTP no servidor Web e é aplicada pelos navegadores do cliente. É uma política baseada em lista de permissões ─ um site pode declarar um conjunto de domínios confiáveis, dos quais conteúdos ativos, como JavaScript, podem ser carregados. A CSP oferece os seguintes benefícios de segurança:
|
Exemplo
Política de exemplo:
Content-Security-Policy: default-src 'self'; script-src 'self' www.google-analytics.com
Essa política permite que os scripts sejam carregados somente no servidor do aplicativo Web e no servidor do Google Analytics. Os scripts carregados em qualquer outro site serão rejeitados. Quando a CSP estiver habilitada em um site, os seguintes recursos serão desabilitados automaticamente para atenuar ataques de XSS.
Exemplo
Os scripts embutido não serão executados. Veja abaixo exemplos de scripts embutidos:
<script> some JavaScript code </script>
Event handling attributes of HTML tags (for example, <button onclick="function(){}">
javascript:alert(1);
Exemplo
As cadeias de caracteres não serão avaliadas como código.
Example: var str="alert(1)"; eval(str);
Habilitar o filtro XSS do navegador
Title | Detalhes |
---|---|
Componente | Aplicativo Web |
Fase do SDL | Build |
Tecnologias aplicáveis | Genérico |
Atributos | N/D |
Referências | Filtro de proteção contra XSS |
Etapas | A configuração do cabeçalho de resposta X-XSS-Protection controla o filtro de scripts entre sites do navegador. Esse cabeçalho de resposta pode ter valores os seguintes valores:
Essa é uma função do Chromium que utiliza relatórios de violação da CSP para enviar detalhes para um URI de sua escolha. As duas última opções são consideradas valores seguros. |
Os aplicativos ASP.NET devem desabilitar o rastreamento e a depuração antes da implantação
Title | Detalhes |
---|---|
Componente | Aplicativo Web |
Fase do SDL | Build |
Tecnologias aplicáveis | Genérico |
Atributos | N/D |
Referências | Visão geral sobre depuração do ASP.NET, Visão geral sobre rastreamento do ASP.NET, Como: habilitar o rastreamento de um aplicativo ASP.NET, Como: habilitar a depuração de aplicativos do ASP.NET |
Etapas | Quando o rastreamento estiver habilitado para a página, todos os navegadores que a solicitarem também obterão as informações de rastreamento que contêm dados do fluxo de trabalho e do estado interno do servidor. Elas podem ser informações confidenciais de segurança. Quando a depuração estiver habilitada para a página, os erros ocorridos no servidor serão apresentados ao navegador como uma pilha de dados de rastreamento. Esses dados podem conter informações confidenciais de segurança sobre fluxo de trabalho do servidor. |
Acessar JavaScripts de terceiros somente de origens confiáveis
Title | Detalhes |
---|---|
Componente | Aplicativo Web |
Fase do SDL | Build |
Tecnologias aplicáveis | Genérico |
Atributos | N/D |
Referências | N/D |
Etapas | Os JavaScripts de terceiros devem ser referenciados somente de origens confiáveis. Os pontos de extremidade de referência devem estar sempre no TLS. |
Garantir que as páginas ASP.NET autenticadas incluam defesas contra adulterações de interface do usuário ou furto de clique
Title | Detalhes |
---|---|
Componente | Aplicativo Web |
Fase do SDL | Build |
Tecnologias aplicáveis | Genérico |
Atributos | N/D |
Referências | Folha de dicas de defesa contra click-jacking OWASP, Internos do Internet Explorer - Combate ao click-jacking com opções de X-Frame |
Etapas | O furto de clique, também conhecido como "ataque de adulteração de IU", ocorre quando um invasor utiliza várias camadas transparentes ou opacas para fazer com que o usuário clique em um botão ou link de outra página quando, na verdade, ele pretendia clicar na página de nível superior. Para aplicar essas camadas, é preciso criar uma página mal-intencionada com um iframe para carregar a página da vítima. Assim, o invasor é "sequestra" os cliques destinados a uma página e os encaminha para outra página, que provavelmente pertence a outro aplicativo, domínio ou ambos. Para evitar esse tipo de ataque, defina os cabeçalhos de resposta HTTP de X-Frame-Options adequados que instruem o navegador a não permitir enquadramentos de outros domínios |
Exemplo
O cabeçalho X-FRAME-OPTIONS pode ser definido com o arquivo web.config do IIS. O snippet de código do arquivo web.config para sites que nunca devem ser enquadrados:
<system.webServer>
<httpProtocol>
<customHeader>
<add name="X-FRAME-OPTIONS" value="DENY"/>
</customHeaders>
</httpProtocol>
</system.webServer>
Exemplo
O código do arquivo web.config para sites que só devem ser enquadrados por páginas do mesmo domínio:
<system.webServer>
<httpProtocol>
<customHeader>
<add name="X-FRAME-OPTIONS" value="SAMEORIGIN"/>
</customHeaders>
</httpProtocol>
</system.webServer>
Garantir que apenas fontes confiáveis sejam permitidas se o CORS estiver habilitado em aplicativos Web do ASP.NET
Title | Detalhes |
---|---|
Componente | Aplicativo Web |
Fase do SDL | Build |
Tecnologias aplicáveis | Web Forms, MVC5 |
Atributos | N/D |
Referências | N/D |
Etapas | A segurança do navegador impede que uma página da Web envie solicitações do AJAX para outro domínio. Essa restrição se chama política da mesma origem e impede que um site mal-intencional leia dados confidenciais de outro site. No entanto, às vezes pode ser necessário expor APIs de forma segura para que os outros sites possam utilizá-las. O CORS (Compartilhamento de Recursos entre Origens) é um padrão W3C que permite ao servidor relaxar a política de mesma origem. Usando o CORS, um servidor pode explicitamente permitir algumas solicitações entre origens e rejeitar outras. O CORS é mais seguro e flexível do que técnicas anteriores, como o JSONP. Essencialmente, habilitar o CORS significa adicionar alguns cabeçalhos de resposta HTTP (Access - Control-*) ao aplicativo da Web. Isso pode ser feito de duas formas. |
Exemplo
Se o acesso ao arquivo Web.config estiver disponível, o CORS poderá ser adicionado ao seguinte código:
<system.webServer>
<httpProtocol>
<customHeaders>
<clear />
<add name="Access-Control-Allow-Origin" value="https://example.com" />
</customHeaders>
</httpProtocol>
Exemplo
Se o acesso ao arquivo web.config não estiver disponível, o CORS pode ser adicionado no seguinte código C#:
HttpContext.Response.AppendHeader("Access-Control-Allow-Origin", "https://example.com")
É essencial garantir que a lista de origens no atributo "Access-Control-Allow-Origin" esteja definida como um conjunto finito e confiável de origens. Se isso for configurado incorretamente (por exemplo, definindo o valor como '*') sites mal-intencionados poderão disparar solicitações entre origens ao aplicativo Web > sem restrições, tornando o aplicativo vulnerável a ataques de CSRF.
Habilitar o atributo ValidateRequest em páginas ASP.NET
Title | Detalhes |
---|---|
Componente | Aplicativo Web |
Fase do SDL | Build |
Tecnologias aplicáveis | Web Forms, MVC5 |
Atributos | N/D |
Referências | Solicitar validação - evitando ataques de script |
Etapas | A validação de solicitação, um recurso do ASP.NET oferecido desde a versão 1.1, impede que o servidor aceite conteúdo sem HTML codificado. Esse recurso foi desenvolvido para ajudar a impedir alguns ataques de injeção de script, nos quais o código de script do cliente ou HTML pode ser enviado sem saber para um servidor, armazenado e apresentado a outros usuários. Ainda recomendamos que você valide todos os dados de entrada e os codifique com HTML quando for apropriado. A validação de solicitação é executada pela comparação de todos os dados de entrada com uma lista de valores potencialmente perigosos. Se uma correspondência for encontrada, o ASP.NET gera uma |
Exemplo
No entanto, esse recurso pode ser desabilitado no nível da página:
<%@ Page validateRequest="false" %>
ou no nível do aplicativo:
<configuration>
<system.web>
<pages validateRequest="false" />
</system.web>
</configuration>
Observe que o recurso de validação de solicitação não tem suporte no pipeline do MVC6 nem faz parte dele.
Usar as versões mais recentes de bibliotecas JavaScript hospedadas localmente
Title | Detalhes |
---|---|
Componente | Aplicativo Web |
Fase do SDL | Build |
Tecnologias aplicáveis | Genérico |
Atributos | N/D |
Referências | N/D |
Etapas | Os desenvolvedores que usam bibliotecas JavaScript padrão, como a JQuery, devem usar as versões aprovadas das bibliotecas JavaScript comuns que não contêm falhas de segurança conhecidas. Uma boa prática é usar a versão mais recente das bibliotecas, porque elas contêm correções de segurança para vulnerabilidades conhecidas em suas versões anteriores. Se a versão mais recente não puder ser usada por motivos de compatibilidade, as versões mínimas abaixo devem ser usadas. Versões mínimas aceitáveis:
Nunca carregue quaisquer bibliotecas JavaScript de sites externos, como CDNs públicas. |
Desabilitar a detecção automática de MIME
Title | Detalhes |
---|---|
Componente | Aplicativo Web |
Fase do SDL | Build |
Tecnologias aplicáveis | Genérico |
Atributos | N/D |
Referências | Segurança do IE8 parte V: proteção abrangente, Tipo de MIME |
Etapas | O cabeçalho X-Content-Type-Options é um cabeçalho HTTP que permite aos desenvolvedores especificar que seus conteúdos não devem ter o MIME detectado. Esse cabeçalho foi criado para reduzir os ataques de detecção de MIME. Para cada página que pode incluir conteúdo controlável pelo usuário, você deve usar o cabeçalho HTTP X-Content-Type-Options:nosniff. Para habilitar globalmente o cabeçalho necessário para todas as páginas do aplicativo, você tem as seguintes opções: |
Exemplo
Adicionar o cabeçalho no arquivo web.config se o aplicativo estiver hospedado no Internet Information Services (IIS) 7 ou posterior.
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="X-Content-Type-Options" value="nosniff"/>
</customHeaders>
</httpProtocol>
</system.webServer>
Exemplo
Adicionar o cabeçalho usando a Aplication_BeginRequest global
void Application_BeginRequest(object sender, EventArgs e)
{
this.Response.Headers["X-Content-Type-Options"] = "nosniff";
}
Exemplo
Implementar o módulo HTTP personalizado
public class XContentTypeOptionsModule : IHttpModule
{
#region IHttpModule Members
public void Dispose()
{
}
public void Init(HttpApplication context)
{
context.PreSendRequestHeaders += newEventHandler(context_PreSendRequestHeaders);
}
#endregion
void context_PreSendRequestHeaders(object sender, EventArgs e)
{
HttpApplication application = sender as HttpApplication;
if (application == null)
return;
if (application.Response.Headers["X-Content-Type-Options "] != null)
return;
application.Response.Headers.Add("X-Content-Type-Options ", "nosniff");
}
}
Exemplo
Você pode habilitar o cabeçalho necessário apenas para páginas específicas adicionando-o a respostas individuais:
this.Response.Headers["X-Content-Type-Options"] = "nosniff";
Remover cabeçalhos de servidor padrão nos sites do Microsoft Azure para evitar impressões digitais
Title | Detalhes |
---|---|
Componente | Aplicativo Web |
Fase do SDL | Build |
Tecnologias aplicáveis | Genérico |
Atributos | Tipo de ambiente - Azure |
Referências | Removendo cabeçalhos de servidor padrão nos sites do Microsoft Azure |
Etapas | Cabeçalhos como Server, X-Powered-By e X-AspNet-Version revelam informações sobre o servidor e as tecnologias subjacentes. É recomendável suprimir esses cabeçalhos, impedindo, assim, a impressão digital do aplicativo |
Configurar um Firewall do Windows para acesso ao Mecanismo de Banco de Dados
Title | Detalhes |
---|---|
Componente | Banco de dados |
Fase do SDL | Build |
Tecnologias aplicáveis | SQL Azure, OnPrem |
Atributos | N/D, Versão do SQL - V12 |
Referências | Como configurar um firewall de Banco de Dados SQL do Azure, Configurar um Firewall do Windows para Acesso ao Mecanismo do Banco de Dados |
Etapas | Os sistemas de Firewall ajudam a impedir o acesso não autorizado aos recursos do computador. Para acessar uma instância do mecanismo de banco de dados do SQL Server por meio de um firewall, você precisa configurar o firewall no computador que está executando o SQL Server para permitir o acesso. |
Garantir que apenas fontes confiáveis sejam permitidas se o CORS estiver habilitado na ASP.NET Web API
Title | Detalhes |
---|---|
Componente | API Web |
Fase do SDL | Build |
Tecnologias aplicáveis | MVC 5 |
Atributos | N/D |
Referências | Permitindo solicitações entre origens na ASP.NET Web API 2, ASP.NET Web API - suporte ao CORS na ASP.NET Web API 2 |
Etapas | A segurança do navegador impede que uma página da Web envie solicitações do AJAX para outro domínio. Essa restrição se chama política da mesma origem e impede que um site mal-intencional leia dados confidenciais de outro site. No entanto, às vezes pode ser necessário expor APIs de forma segura para que os outros sites possam utilizá-las. O CORS (Compartilhamento de Recursos entre Origens) é um padrão W3C que permite ao servidor relaxar a política de mesma origem. Usando o CORS, um servidor pode explicitamente permitir algumas solicitações entre origens e rejeitar outras. O CORS é mais seguro e flexível do que técnicas anteriores, como o JSONP. |
Exemplo
No arquivo App_Start/WebApiConfig.cs, adicione o seguinte código ao método WebApiConfig.Register.
using System.Web.Http;
namespace WebService
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// New code
config.EnableCors();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
}
Exemplo
O atributo EnableCors pode ser aplicado aos métodos de ação em um controlador da seguinte maneira:
public class ResourcesController : ApiController
{
[EnableCors("http://localhost:55912", // Origin
null, // Request headers
"GET", // HTTP methods
"bar", // Response headers
SupportsCredentials=true // Allow credentials
)]
public HttpResponseMessage Get(int id)
{
var resp = Request.CreateResponse(HttpStatusCode.NoContent);
resp.Headers.Add("bar", "a bar value");
return resp;
}
[EnableCors("http://localhost:55912", // Origin
"Accept, Origin, Content-Type", // Request headers
"PUT", // HTTP methods
PreflightMaxAge=600 // Preflight cache duration
)]
public HttpResponseMessage Put(Resource data)
{
return Request.CreateResponse(HttpStatusCode.OK, data);
}
[EnableCors("http://localhost:55912", // Origin
"Accept, Origin, Content-Type", // Request headers
"POST", // HTTP methods
PreflightMaxAge=600 // Preflight cache duration
)]
public HttpResponseMessage Post(Resource data)
{
return Request.CreateResponse(HttpStatusCode.OK, data);
}
}
É essencial garantir que a lista de origens no atributo EnableCors esteja definida como um conjunto finito e confiável de origens. Se isso não for configurado corretamente (por exemplo, definindo o valor como '*'), sites mal-intencionados poderão disparar solicitações de origem cruzada para a API sem restrições, >tornando-a vulnerável a ataques de CSRF. O atributo EnableCors pode ser decorado no nível do controlador.
Exemplo
Para desabilitar o CORS em um determinado método de uma classe, use o atributo DisableCors conforme mostrado abaixo:
[EnableCors("https://example.com", "Accept, Origin, Content-Type", "POST")]
public class ResourcesController : ApiController
{
public HttpResponseMessage Put(Resource data)
{
return Request.CreateResponse(HttpStatusCode.OK, data);
}
public HttpResponseMessage Post(Resource data)
{
return Request.CreateResponse(HttpStatusCode.OK, data);
}
// CORS not allowed because of the [DisableCors] attribute
[DisableCors]
public HttpResponseMessage Delete(int id)
{
return Request.CreateResponse(HttpStatusCode.NoContent);
}
}
Title | Detalhes |
---|---|
Componente | API Web |
Fase do SDL | Build |
Tecnologias aplicáveis | MVC 6 |
Atributos | N/D |
Referências | Permitindo solicitações entre origens (CORS) no ASP.NET Core 1.0 |
Etapas | No ASP.NET 1.0, o CORS pode ser habilitado com o middleware ou o MVC. Quando o MVC é usado para habilitar o CORS, os mesmos serviços do CORS são usados, mas o middleware CORS não. |
Abordagem 1 Habilitar CORS com middleware: para habilitar o CORS para todo o aplicativo, adicione o middleware do CORS ao pipeline de solicitação usando o método da extensão UseCors. Uma política entre origens pode ser especificada quando o middleware do CORS for adicionado usando a classe CorsPolicyBuilder. Há duas maneiras de fazer isso:
Exemplo
A primeira é chamar UseCors com um lambda. O lambda utiliza um objeto CorsPolicyBuilder:
public void Configure(IApplicationBuilder app)
{
app.UseCors(builder =>
builder.WithOrigins("https://example.com")
.WithMethods("GET", "POST", "HEAD")
.WithHeaders("accept", "content-type", "origin", "x-custom-header"));
}
Exemplo
A segunda é definir uma ou mais políticas CORS e, em seguida, selecionar a política pelo nome no tempo de execução.
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddPolicy("AllowSpecificOrigin",
builder => builder.WithOrigins("https://example.com"));
});
}
public void Configure(IApplicationBuilder app)
{
app.UseCors("AllowSpecificOrigin");
app.Run(async (context) =>
{
await context.Response.WriteAsync("Hello World!");
});
}
Abordagem 2 Habilitar CORS no MVC: os desenvolvedores podem usar o MVC como uma alternativa à aplicação de um CORS específico por ação, por controlador ou globalmente para todos os controladores.
Exemplo
Por ação: para especificar uma política de CORS para uma ação específica, adicione o atributo [EnableCors] à ação. Especifique o nome da política.
public class HomeController : Controller
{
[EnableCors("AllowSpecificOrigin")]
public IActionResult Index()
{
return View();
}
Exemplo
Por controlador:
[EnableCors("AllowSpecificOrigin")]
public class HomeController : Controller
{
Exemplo
Globalmente:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.Configure<MvcOptions>(options =>
{
options.Filters.Add(new CorsAuthorizationFilterFactory("AllowSpecificOrigin"));
});
}
É essencial garantir que a lista de origens no atributo EnableCors esteja definida como um conjunto finito e confiável de origens. Se isso não for configurado corretamente (por exemplo, definindo o valor como '*'), sites mal-intencionados poderão disparar solicitações de origem cruzada para a API sem restrições, >tornando-a vulnerável a ataques de CSRF.
Exemplo
Para desabilitar o CORS para um controlador ou uma ação, use o atributo [DisableCors].
[DisableCors]
public IActionResult About()
{
return View();
}
Criptografar as seções dos arquivos de configuração da API Web que contêm dados confidenciais
Title | Detalhes |
---|---|
Componente | API Web |
Fase do SDL | Implantação |
Tecnologias aplicáveis | Genérico |
Atributos | N/D |
Referências | Como Criptografar seções de configuração no ASP.NET 2.0 usando DPAPI, Especificar um provedor de configuração protegido, Como usar o Azure Key Vault para proteger os segredos do aplicativo |
Etapas | Arquivos de configuração, tais como Web. config e appsettings.json geralmente são usados para armazenar informações confidenciais, incluindo nomes de usuários, senhas, cadeias de conexão de banco de dados e chaves de criptografia. Se você não proteger essas informações, o aplicativo ficará vulnerável a usuários mal-intencionados, que podem obter informações sigilosas, como nomes usuários e senhas de contas, nomes de bancos de dados e nomes de servidores. Com base no tipo de implantação (no Azure ou local), criptografe as seções confidenciais dos arquivos de configuração usando a DPAPI ou serviços, como o Azure Key Vault. |
Garantir que todas as interfaces de administrador sejam protegidas com credenciais fortes
Title | Detalhes |
---|---|
Componente | Dispositivo IoT |
Fase do SDL | Implantação |
Tecnologias aplicáveis | Genérico |
Atributos | N/D |
Referências | N/D |
Etapas | Quaisquer interfaces administrativas expostas pelo gateway de campo ou pelo dispositivo devem ser protegidas com credenciais fortes. Outras interfaces expostas, como Wi-Fi, SSH, compartilhamentos de arquivos e FTP, também devem ser protegidas com credenciais fortes. Senhas fracas padrão não devem ser usadas. |
Garantir que um código desconhecido não seja executado em dispositivos
Title | Detalhes |
---|---|
Componente | Dispositivo IoT |
Fase do SDL | Build |
Tecnologias aplicáveis | Genérico |
Atributos | N/D |
Referências | Habilitar a Inicialização Segura e a Criptografia do Dispositivo do BitLocker no Windows 10 IoT Core |
Etapas | A Inicialização Segura de UEFI restringe o sistema a permitir somente a execução dos binários assinados por uma autoridade especificada. Esse recurso impede que códigos desconhecidos sejam executados na plataforma e enfraqueçam sua postura de segurança. Habilite a Inicialização Segura de UEFI e restrinja a lista de autoridades de certificação confiáveis para assinatura de código. Assine todos os códigos implantados no dispositivo usando uma das autoridades confiáveis. |
Criptografar o sistema operacional e partições adicionais do dispositivo IoT com o BitLocker
Title | Detalhes |
---|---|
Componente | Dispositivo IoT |
Fase do SDL | Build |
Tecnologias aplicáveis | Genérico |
Atributos | N/D |
Referências | N/D |
Etapas | O Windows 10 IoT Core implementa uma versão leve da Criptografia do Dispositivo do BitLocker, que tem uma dependência forte na presença de um TPM na plataforma, incluindo o protocolo preOS necessário na UEFI que realiza as medições necessárias. Essas medições do preOS garantem que o sistema operacional tenha posteriormente um registro definitivo de como foi iniciado. Use o BitLocker para criptografar as partições do sistema operacional e outras partições que armazenem dados confidenciais. |
Garantir que apenas o mínimo de serviços/recursos estejam habilitados nos dispositivos
Title | Detalhes |
---|---|
Componente | Dispositivo IoT |
Fase do SDL | Implantação |
Tecnologias aplicáveis | Genérico |
Atributos | N/D |
Referências | N/D |
Etapas | Não habilite ou desabilite no sistema operacional recursos ou serviços que não sejam necessários ao funcionamento da solução. Por exemplo, se o dispositivo não precisar da implantação de uma IU, instale o Windows IoT Core no modo sem periféricos. |
Criptografar o sistema operacional e partições adicionais do Gateway de Campo de IoT com o BitLocker
Title | Detalhes |
---|---|
Componente | Gateway de Campo de IoT |
Fase do SDL | Implantação |
Tecnologias aplicáveis | Genérico |
Atributos | N/D |
Referências | N/D |
Etapas | O Windows 10 IoT Core implementa uma versão leve da Criptografia do Dispositivo do BitLocker, que tem uma dependência forte na presença de um TPM na plataforma, incluindo o protocolo preOS necessário na UEFI que realiza as medições necessárias. Essas medições do preOS garantem que o sistema operacional tenha posteriormente um registro definitivo de como foi iniciado. Use o BitLocker para criptografar as partições do sistema operacional e outras partições que armazenem dados confidenciais. |
Garanta que as credenciais de logon padrão do gateway de campo sejam alteradas durante a instalação.
Title | Detalhes |
---|---|
Componente | Gateway de Campo de IoT |
Fase do SDL | Implantação |
Tecnologias aplicáveis | Genérico |
Atributos | N/D |
Referências | N/D |
Etapas | Garanta que as credenciais de logon padrão do gateway de campo sejam alteradas durante a instalação. |
Garantir que o Gateway de Nuvem implemente um processo para manter atualizado o firmware de dispositivos conectados
Title | Detalhes |
---|---|
Componente | Gateway de Nuvem IoT |
Fase do SDL | Build |
Tecnologias aplicáveis | Genérico |
Atributos | Opção de gateway - Hub IoT do Azure |
Referências | Visão geral do gerenciamento de dispositivo do Hub IoT, Tutorial de atualização de dispositivo para o Hub IoT do Azure usando a imagem de referência do Raspberry Pi 3 B+. |
Etapas | O LWM2M é um protocolo da Open Mobile Alliance destinado ao gerenciamento de dispositivos IoT. O gerenciamento de dispositivos IoT do Azure permite que você interaja com dispositivos físicos usando os trabalhos do dispositivo. Certifique-se de que o Gateway de Nuvem implemente um processo para manter constantemente atualizados o dispositivo e outros dados de configuração usando o gerenciamento de dispositivos do Hub IoT do Azure. |
Garantir que os controles de segurança de ponto de extremidade estejam configurados nos dispositivos de acordo com as políticas organizacionais
Title | Detalhes |
---|---|
Componente | Limite de confiança de máquina |
Fase do SDL | Implantação |
Tecnologias aplicáveis | Genérico |
Atributos | N/D |
Referências | N/D |
Etapas | Verifique se os dispositivos têm controles de segurança de ponto de extremidade, como o BitLocker, para a criptografia de nível de disco, além de um antivírus com assinaturas atualizadas, um firewall baseado em host, atualizações de sistema operacional, políticas de grupo etc., e se eles estão configurados de acordo com as políticas de segurança organizacionais. |
Garantir o gerenciamento seguro das chaves de acesso do Armazenamento do Azure
Title | Detalhes |
---|---|
Componente | Armazenamento do Azure |
Fase do SDL | Implantação |
Tecnologias aplicáveis | Genérico |
Atributos | N/D |
Referências | Guia de segurança do Armazenamento do Azure - Gerenciando as chaves da conta de armazenamento |
Etapas | Armazenamento de chave: recomenda-se armazenar as chaves de acesso do Armazenamento do Azure como um segredo no Azure Key Vault e solicitar que os aplicativos recuperem a chave diretamente do cofre de chaves. Recomendamos que você faça isso pelos seguintes motivos:
|
Garantir que apenas fontes confiáveis sejam permitidas se o CORS estiver habilitado no Armazenamento do Azure
Title | Detalhes |
---|---|
Componente | Armazenamento do Azure |
Fase do SDL | Build |
Tecnologias aplicáveis | Genérico |
Atributos | N/D |
Referências | Suporte ao CORS para os serviços de armazenamento do Azure |
Etapas | O Armazenamento do Azure permite habilitar o CORS – Compartilhamento de Recursos entre Origens. Para cada conta de armazenamento, é possível especificar os domínios que podem acessar os recursos na conta de armazenamento. Por padrão, o CORS está desabilitado em todos os serviços Você pode habilitar o CORS usando a API REST ou a biblioteca de cliente de armazenamento para chamar um dos métodos e definir as políticas de serviço. |
Habilitar o recurso de limitação do serviço WCF
Title | Detalhes |
---|---|
Componente | WCF |
Fase do SDL | Build |
Tecnologias aplicáveis | .NET Framework 3 |
Atributos | N/D |
Referências | MSDN, Fortify Kingdom |
Etapas | Não definir um limite para o uso de recursos do sistema pode resultar no esgotamento de recursos e, por fim, em uma negação de serviço.
|
Exemplo
Veja abaixo um exemplo de configuração com a limitação habilitada:
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="Throttled">
<serviceThrottling maxConcurrentCalls="[YOUR SERVICE VALUE]" maxConcurrentSessions="[YOUR SERVICE VALUE]" maxConcurrentInstances="[YOUR SERVICE VALUE]" />
...
</system.serviceModel>
Divulgação de informações do WCF por meio de metadados
Title | Detalhes |
---|---|
Componente | WCF |
Fase do SDL | Build |
Tecnologias aplicáveis | .NET Framework 3 |
Atributos | N/D |
Referências | MSDN, Fortify Kingdom |
Etapas | Os metadados podem ajudar invasores a obter mais informações sobre o sistema e a planejar uma forma de ataque. Os serviços do WCF podem ser configurados para expor os metadados, que fornecem informações descritivas detalhadas do serviço e que não devem ser transmitidos em ambientes de produção. As propriedades HttpGetEnabled / HttpsGetEnabled da classe ServiceMetaData definem se um serviço deve expor os metadados. |
Exemplo
O código mostrado abaixo instrui o WCF a transmitir os metadados de um serviço.
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
smb.HttpGetUrl = new Uri(EndPointAddress);
Host.Description.Behaviors.Add(smb);
Não transmita os metadados de um serviço em um ambiente de produção. Defina as propriedades HttpGetEnabled / HttpsGetEnabled da classe ServiceMetaData classe como false.
Exemplo
O código mostrado abaixo instrui o WCF a não transmitir os metadados de um serviço.
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = false;
smb.HttpGetUrl = new Uri(EndPointAddress);
Host.Description.Behaviors.Add(smb);