EC-Council CASE .NET - Certified Application Security Engineer - Review
Posted on November 8, 2024 (Last modified on December 15, 2024) • 12 min read • 2,442 wordsCertificação interessante, mas perigosa para desenvolvedores versados apenas nas últimas versões da tecnologia Microsoft .NET ou inexperientes como eu. Este é um post review do curso e seu conteúdo, com direcionamentos para não cair do penhasco no momento da prova.
Aqui é mais um relato de momento de carreira e por que decidi me aventurar nesta certificação, mesmo hoje não sendo muito fã das certificações da EC-Council (isso é um papo pra outro momento).
Até 2011 toda minha carreira foi direcionada para infraestrutura em geral, como redes, sistemas operacionais e serviços neles implementados em ambientes heterogêneos com Linux (de todos os sabores) e Windows. A partir de 2011 caí de gaiato na área de segurança, e comecei a reforçar mais ainda meus conhecimentos que eram muito básicos de programação, que se resumia a scripts de batch e um pouco de Powershell para Windows, Shell Script para Linux e Python para fazer scripts universais e ajudar no desenvolvimento de exploits durante meus períodos mais imersos em segurança ofensiva.
Em 2021, mesmo ainda como liderança exclusiva em segurança ofensiva, comecei a trabalhar de forma mais próxima às iniciativas de criação de programas de desenvolvimento seguro, atuando inicialmente mais como um consultor de processos e tecnologias necessárias, e consequemente na formatação dos perfis dos profissionais a serem contratados, condução das entrevistas e direcionamento das contratações para o RH. Até aí tudo legal, tudo confortável, até que eu migro efetivamente para o time de Segurança de Applicações (AppSec) como líder do time que eu ajudei a contruir. A responsabilidade e cobrança sobre o tema acabou aumentando.
Como tech lead do time, me senti na obrigação de aprimorar meus conhecimentos, mesmo sabendo que já tinha uma bagagem considerável desde 2015 do tema de forma macro quando comecei a lidar direta e indiretamente iniciativas de transformação digital e início de implementação de agilidade e segurança em esteiras de software.
Então decidi seguir por dois caminhos paralelos iniciais, primeiro me enveredar para a certificação CSSLP (Certified Secure Software Lifecycle Professional) da ISC2 para organizar melhor todo o conhecimento que eu já tinha com uma boa base do que a academia fala sobre desenvolvimento seguro como prática; e segundo me dediquei ao desenvolvimento, mas não ficando dentro de uma possível zona de conforto como o Python, decidi que era hora que aprender outra tecnologia, outro framework amplamente utilizado em meu empregador, foi aí que decidi me aventurar com Microsoft .NET. Grande parte da culpa de ter mais um aspirante a desenvolvedor cabaço na área é do Pedro Ferreira (Linkedin|Github), que é um dev experiente em .NET que levamos para time durante meu período como líder. Culpem ele pelo advento de um profissional com conteúdos de pessíma qualidade de qualquer coisa correlata que vier daqui pra frente. 😂
No futuro acho que vale um post para a certificação CSSLP (Certified Secure Software Lifecycle Professional). Não tem muito segredo, mas nunca é tarde para compartilhar. Stay tunned!
Para estudos do .NET, foquei muito no desenvolvimento web com ASP.NET com padrão MVC a partir da versão 6. Estudei pelas plataformas do balta.io e desenvolvedor.io (o que mais indico) , além do uso de uma infinidade de materiais disponíveis em blogs e YouTube.
A partir do momento que me senti um pouco mais confiante do meu conhecimento sobre o framework e a tecnologia, decidi que poderia encarar o curso e a prova do EC-Council CASE .NET - Certified Application Security Engineer.
A família CASE (Certified Application Security Engineer) possui dois treinamentos, das tecnologias .NET e Java, que podem ser adquiridos da seguinte forma:
Para qualquer profissional engenheiro de software ou de segurança de aplicações que queria se aprofundar nas práticas de proteção e resiliência de suas soluções.
Para ser elegível a candidatar-se ao Exame CASE, o candidato resumidamente deve atender um dos critérios abaixo:
A exame é realizado com um proctor, que te monitorará durante o período de teste com o uso do LogMeIn. Logo no início o proctor já perguntar se prefere a interação sempre via chat ou por voz, o que fica a seu critério.
Mais informações sobre o agendamento, teste de equipamento, interação com o proctor e início do teste pode ser acessado pelo clicando na imagem abaixo.
Como mencionei no início deste artigo, minha maior dificuldade foi a necessidade de adentrar em conteúdo de versões mais antigas do ASP.NET. Se você já é um profissional experimentado em todas as fases do framework .NET, essa jornada será extremamente fácil pra ti.
A partir do ASP.NET Core 6, a plataforma trouxe mudanças que simplificaram muito a vida de quem desenvolve com ela. No entanto, para estudantes como eu que estão começando, ser obrigado a aprender conceitos e práticas de versões antigas pode gerar uma série de dificuldades. O que levou a ter que buscar algumas referências externas para melhor assimilação, e em alguns momentos até decorar padrões de configuração, para ajudar nas eliminações durante as respostas de múltipla escolha.
Durante o curso, você será imerso em um contexto de tudo em servidor com uso do IIS e nada em containers, onde vecê será forçado a estudar configurações de segurança em IIS. Portanto, dê total atenção ao capítulo 10. Secure Deployment and Maintainance.
Nas versões antigas do ASP.NET Core, o Startup.cs era o coração do projeto. Ali ficavam a configuração dos serviços e o pipeline de middlewares. Com o ASP.NET Core 6, tudo isso foi centralizado no Program.cs. A mudança trouxe simplicidade, mas criou um problema para quem está aprendendo: entender por que alguns materiais ainda falam de Startup.cs enquanto outros já seguem o modelo novo.
E pra ajudar, ainda é exigido conhecimento do modelo Web Forms, o controle de validação de formulários era amplamente baseado em componentes específicos como <asp:RequiredFieldValidator>
, <asp:RangeValidator>
, <asp:CompareValidator>
, <asp:RegularExpressionValidator>
e <asp:CustomValidator>
. Tudo extremamente acoplado e difícil de gerenciar. Atualmente, a validação é baseada em Data Annotations e Model Binding, permitindo que regras sejam definidas diretamente nos modelos de dados, centralizando a lógica e reduzindo o acoplamento ao front-end. Além disso, frameworks como o jQuery Validation complementam a experiência, fornecendo validação no lado do cliente sem a necessidade de controles adicionais.
CASE Brochure | CASE .NET Blueprint v1 |
---|---|
|
|
Sou muito pragmático nos meus estudos, em resumo, me organizando conforme o conteúdo disponível e qualquer outro externo que seja necessário. No caso do CASE .NET, segui o seguinte esquema:
Precisei de poucas de referências externas, apenas para entender melhor configurações que fala muito brevemente no conteúdo. Para a prova, tudo o que está disponível no curso é o suficiente.
Se você gosta de controlar seus avanços, você pode fazer como eu anotando no caderno para ter o controle visual. Pode ver que anoto inclusive a quantidade de páginas em cada capítulo, me ajudando a dividir melhor a carga de estudo no dia ou período.
Nas duas fases de leitura que menciono acima, gostaria de compartilhar uma sugestão de sequência:
Pois é, a prova não perdoa. Certamente eu “cairia do penhasco” se não estivesse dado atenção ao legado de configurações do IIS e webforms.
Pude observar alguns erros de ortográficos e até gramaticais em uma ou duas perguntas, além de opções de respostas mal formatadas, deixando dúvidas no momento de responder.
As 2 horas disponíveis são mais que suficientes, respondi as 50 perguntas em pouco menos de 40 minutos, revisando poucas respostas ao final. Enfim, passeiiii!!!!! Badge da certificação aqui! Mais uma pra conta.
Se você tem interesse em aprofundar nos controles de segurança em .NET, sugiro entrar nesse barco. Umas das coisas mais legais do curso, apesar da pouca abordagem a estrutura MVC, é poder estabelecer melhor os checklists de segurança para compartilhar com os desenvolvedores e na criação de conteúdos de boas práticas de desenvolvimento, principalmente os controles defensivos específicos para .NET.
👾