Segurança sem servidor requer uma mudança de paradigma na forma como as organizações veem a segurança dos aplicativos. Em vez de construir segurança em torno da própria aplicação usando o Firewall da próxima geração, as organizações devem adicionalmente construir segurança em torno das funções dentro das aplicações hospedadas por provedores de nuvem terceirizados. Essa camada adicional de segurança garante o fortalecimento adequado do aplicativo e o controle de acesso com privilégios mínimos, para que cada função faça nem mais nem menos do que foi projetada para fazer - ajudando as organizações a melhorar sua postura de segurança e manter a Conformidade.
A computação sem servidor refere-se a um modelo de computação em nuvem no qual o provedor de nuvem executa o servidor e gerencia dinamicamente a alocação de recursos da máquina. AWS Lambda Functions, Google nuvem Functions e Azure Functions são estruturas populares sem servidor que criam aplicativos.
Uma arquitetura sem servidor oferece o benefício de escalabilidade automatizada e quase infinita. Muito pouco se interpõe entre os desenvolvedores e o código implantado, o que acelera o tempo de lançamento no mercado e facilita a manutenção e o teste de funções individuais. Por fim, a quantidade real de recursos do aplicativo consumidos impacta os preços, o que significa que você paga apenas pelo que usa, resultando em custos mais baixos.
Serverless representa uma mudança adicional de responsabilidades do cliente para o provedor de nuvem. Sem infraestrutura envolvida, há uma diminuição significativa nas despesas gerais de operações.
Transferir o gerenciamento da infraestrutura para seu provedor de nuvem permite que você se concentre no desenvolvimento de soluções para atender sua organização e seus clientes. Ele ajuda você a manter o foco em suas vantagens competitivas exclusivas e frequentemente resulta em economia de custos não apenas em computação, mas também na transferência de pessoas para o desenvolvimento.
Aqui estão alguns pontos-chave:
Contanto que qualquer função dentro de um contêiner precise de acesso para leitura do S3, todas as funções dentro desse contêiner também terão esse privilégio. Com o AWS Lambda, você tem a oportunidade de aplicar privilégios a funções individuais e garantir que tais privilégios sejam restritos apenas ao menor escopo necessário. Se houver uma vulnerabilidade em uma de suas funções, um invasor terá acesso apenas aos recursos limitados dessa função, e não ao grande conjunto de permissões para conceder um contêiner.
Com a mudança na estrutura dos aplicativos sem servidor, surgem alguns novos desafios.
Com o aplicativo sem servidor, não há onde colocar a segurança clássica, como WAF, firewall e IDS. Construir barreiras entre invasores e recursos não é simples por vários motivos.
Os aplicativos sem servidor são mais porosos e refinados. Composto por dezenas ou centenas de funções, os aplicativos serverless são pequenos microsserviços com políticas, funções, API, trilha de auditoria próprias, etc. Isso muda a superfície de ataque, em vez de um pequeno número de pontos de entrada com muitas funcionalidades escondidas atrás de cada um, agora existem mais pontos de entrada, cada um com uma pequena parte do aplicativo por trás dele. Defender seu aplicativo agora exige pensar em cada ponto de entrada.
Vários eventos podem acionar funções, como:
Embora as motivações dos invasores permaneçam as mesmas, as táticas que eles usarão com aplicativos sem servidor devem mudar. A seguir estão algumas das ameaças à Segurança sem Servidor exclusivas desta nova arquitetura de aplicativo.
Com o aplicativo sem servidor, você tem a oportunidade de aplicar privilégios a funções individuais e garantir que tais privilégios sejam restritos apenas ao menor escopo necessário. Isso pode permitir minimizar significativamente sua superfície de ataque, bem como mitigar o impacto de qualquer ataque.
Infelizmente, uma pesquisa recente da Check Point descobriu que a grande maioria dos desenvolvedores não está aproveitando esta oportunidade. Nossa pesquisa descobriu que 98% das funções em aplicativos sem servidor estão em risco, sendo 16% consideradas “graves”. Além disso, a maioria dessas funções recebe mais permissões do que o necessário, que podem ser removidas para melhorar a segurança da função e do aplicativo.
Ao analisar funções, a Check Point atribui uma pontuação de risco a cada função. Isto se baseia nas fraquezas posturais descobertas e leva em consideração não apenas a natureza da fraqueza, mas também o contexto em que ela ocorre. Depois de verificar dezenas de milhares de funções em aplicativos ativos, descobrimos que a maioria dos aplicativos sem servidor simplesmente não está sendo implantada com a segurança necessária para minimizar os riscos. Os maiores problemas de postura de segurança descobertos pela Check Point são permissões desnecessárias, enquanto o restante está relacionado a códigos e configurações vulneráveis.
O fato de as funções sem servidor serem efêmeras e de curta duração torna mais difícil para os invasores persistirem em seu aplicativo a longo prazo. Além disso, esta é uma das muitas vantagens de segurança do serverless. Contudo, o simples facto de isto tornar a vida mais difícil aos atacantes não significa que eles irão parar os ataques; eles apenas mudarão a estratégia.
A curta duração das funções serverless significa que as ameaças à Segurança sem Servidor podem mudar de forma. Os invasores podem construir um ataque muito mais curto que apenas roube, por exemplo, alguns números de cartão de crédito. Esta única rodada de ataque se repete continuamente no que chamamos de ataque do “Dia da Marmota”.
Apesar da curta vida útil dos recursos nativos da nuvem, os invasores ainda podem encontrar maneiras de obter persistência de longo prazo em seu aplicativo. Uma maneira pela qual os invasores podem contornar a natureza efêmera do aplicativo sem servidor é por meio de um ataque upstream, ou “Envenenando o Poço”.
Os aplicativos nativos da nuvem tendem a incluir muitos módulos e bibliotecas com código de diversas fontes de terceiros. Os invasores trabalham para incluir códigos maliciosos em projetos comuns. Então, depois de envenenar o poço, o código malicioso em seus aplicativos em nuvem pode ligar para casa, obter instruções e causar estragos.
Embora isso não seja exatamente uma “ameaça” à segurança, é mais um desafio e um possível obstáculo aos seus esforços para proteger sua arquitetura sem servidor.
Serverless transmite o benefício de maior velocidade de desenvolvimento de aplicativos. Infelizmente, a abordagem tradicional de segurança, em que os desenvolvedores escrevem códigos e empacotam cargas de trabalho e as operações de segurança colocam controles de segurança em torno dessas cargas de trabalho, simplesmente não funcionará sem servidor.
Se os desenvolvedores precisarem esperar que a segurança abra portas, funções IAM ou grupos de segurança para eles, o benefício do aumento da velocidade será rapidamente reduzido. Muitas vezes, a solução é remover o SecOps da equação, o que pode, de facto, ser um risco.
Por outro lado, configurar permissões para uma infinidade de recursos sem servidor e interações entre eles é uma tarefa demorada. Além disso, 'gastar' o tempo dos desenvolvedores nessa configuração de segurança pode rapidamente ficar caro, além de não ser o uso ideal de seu tempo. Aproveitar a automação, como a plataforma CloudGuard, pode aumentar a segurança sem servidor sem dedicar muito tempo ao desenvolvedor.
Outro benefício do serverless é que você paga apenas pelo que realmente consome, o que pode resultar em custos reduzidos. No entanto, pagar exatamente pelo que você usa significa que qualquer aumento no tempo de processamento aumentará os custos.
Colocar um excesso de configuração de segundos de aplicativo em seu aplicativo pode adicionar trabalho extra às suas funções, o que pode aumentar os custos. Embora adicionar tempo de processamento por uma questão de segurança seja um investimento inteligente, requer uma implementação adequada para evitar aumentos de custos excessivos e desnecessários.
Semelhante ao aumento do tempo para configuração de segurança sem servidor acima, não é exatamente uma ameaça, mas sim um desafio que você terá que enfrentar ao proteger sua arquitetura sem servidor.