O que é Java?
Originalmente lançado em Maio de 1995, Java é a linguagem de programação mais popular do mundo, com mais de 95% de todos os desktops corporativos rodando em Java. Jave é projetada para deixar os desenvolvedores “escrever uma vez, rodar em qualquer lugar” (WORA), significando que o código escrito em Java é capaz de rodar em todas as plataformas com suporte a Java, sem necessidade de mais recompilação.
Java é uma linguagem de programação concorrente, baseada em classes, orientada a objetos de uso geral, que é celebrada por ser rápida, segura e confiável e pode ser encontrada em qualquer lugar, desde os websites mais populares até dispositivos móveis e de consoles de jogos até centros de dados corporativos e mais além. Licenciado sob a Licença Pública Geral GNU, o Java é gratuito para download.
Java é influenciado por numerosas linguagens de programação incluindo C++, C#, Eiffel, Mesa, Modula-3, Objective-C e outras e desempenhou um papel importante no desenvolvimento de muitas linguagens de programação populares como Groovy, Hack, Haxe, Kotlin, PHP, Python, Scala e outras. Mundialmente, há mais de 9 milhões de desenvolvedores Java que, se todos se unissem e formassem um país, seria o 95º maior país por população do mundo, ou, se eles criassem uma cidade, seria empatado para o 20º maior do mundo.
Por que foi inicialmente criado Java?
No início dos anos 90, estender o poder da computação em rede à vida cotidiana foi considerado uma visão radical e um grupo de engenheiros da Sun Microsystem, conhecido como “Green Team”, liderado por James Gosling, procurou realizar esta visão ao iniciar a próxima onda na computação através da união de dispositivos de consumo e computadores com a criação do Java. Esta equipa de engenheiros da Sun estava ligeiramente à frente do seu tempo como foco inicial dos seus esforços na televisão interactiva e a linguagem deste projecto chamava-se originalmente Oak, depois da árvore fora do escritório de Gosling, antes da sua renomeação para Java depois do café Java.
>
Embora Java estivesse à frente da curva quando se tratava de televisão interativa, ele surgiu ao mesmo tempo em que a internet começava a decolar e era uma combinação perfeita para esta tecnologia emergente. Em 1995 foi anunciado que o navegador de internet Netscape Navigator incorporaria tecnologia Java e, desde então, os principais navegadores web incorporaram a capacidade de executar applets Java.
Como a maioria das linguagens de codificação, o desenvolvimento de Java foi orientado por uma série de princípios que influenciaram a criação e o desenvolvimento contínuo de Java:
- Deve ser “simples, orientado a objetos e familiar”.
- Deve ser “robusto e seguro”.
- Deve ser “neutro em termos de arquitetura e portátil”.
- Deve ser executado com “alto desempenho”.
- Deve ser “interpretado, rosqueado e dinâmico”.
Major Java Frameworks and their Security Threats:
Struts
Struts é um framework livre, baseado em código aberto, Model-view-controller (MVC) usado para desenvolver aplicações web Java EE. Lançado em maio de 2000, Struts foi escrito por Craig McClanahan e doado à Apache Foundation, o principal objetivo por trás do Struts é a separação do modelo (lógica da aplicação que interage com um banco de dados) da view (páginas HTML apresentadas ao cliente) e do controlador (instância que passa informações entre a view e o modelo).
Uma grande preocupação de segurança enfrentada pelas aplicações construídas usando o Struts é a execução remota do código. Em 2010, Struts2, um popular framework Struts foi baixado mais de 1 milhão de vezes em 2010 por mais de 18.000 organizações e incluiu uma classe única de fraqueza que permitiu
Partes maliciosas executar código arbitrário em qualquer aplicação web Struts2.
Spring MVC
Spring MVC é um framework de aplicação Spring escrito por desenvolvedores Spring como uma resposta ao que eles viram como falhas de design em outros frameworks populares, como a separação insuficiente entre as camadas de apresentação e de tratamento de pedidos, e entre a camada de tratamento de pedidos e o modelo. Como Struts, o Spring MVC também é um framework baseado em ação. Em 2011, o Spring MVC, juntamente com Struts, foi considerado uma das bibliotecas vulneráveis mais baixadas devido ao CVE-2012-3451, esta versão foi baixada mais de 18 milhões de vezes entre 2011-2012 por mais de 43.000 organizações
Google Web Toolkit (GWT)
Como um conjunto de ferramentas de código aberto que permite aos desenvolvedores criar e manter aplicações front-end JavaScript complexas em Java, o Google Web Toolkit (GWT) é gratuito e usado tanto pelo Google quanto por milhares de desenvolvedores em todo o mundo. O GWT foi concebido para permitir o desenvolvimento produtivo de aplicações web de alto desempenho sem que o programador precise de ter um conhecimento avançado das peculiaridades do navegador, XMLHttpRequest e JavaScript. Devido ao fato de a GWT produzir código JavaScript, as aplicações GWT precisam estar protegidas contra todas as ameaças que as aplicações JavaScript enfrentam.
Hibernate
Hibernate ORM, conhecido como simplesmente Hibernate, é um framework de mapeamento objeto-relacional para a linguagem Java. Projetado para mapear classes Java para tabelas de banco de dados e mapeamento de tipos de dados Java para tipos de dados SQL. Aplicativos contendo Hibernate podem ser ameaçados por injeções SQL se SQL, ou HQL, as consultas são geradas por strings concatenadas. Uma maneira de proteger contra isso é usando parâmetros nomeados em qualquer SQL ou HQL.
OWASP ESAPI
OWASP ESAPI, a OWASP Enterprise Security API, é uma biblioteca de controle de segurança de aplicações web gratuita e de código aberto que torna mais simples para os desenvolvedores escrever aplicações de menor risco enquanto as bibliotecas ESAPI são projetadas para facilitar aos programadores a adição retroativa de segurança em aplicações existentes.
Java Server Faces (JSF)
Formalizado como padrão através do processo da comunidade Java, Java Server Faces (JSF) é uma especificação Java para construir interfaces de usuário baseadas em componentes para aplicativos Web. De acordo com o OWASP “JSF não implementa seu próprio modelo de segurança, mas depende da segurança padrão do JEE. Isso significa que ambos os modelos de segurança de servidor de aplicativos, JAAS ou outras implementações ACL podem ser usados com a estrutura JSF sem nenhum esforço de integração”. Uma preocupação de segurança para as aplicações que implementam o JSF é o controle de acesso e as questões de autorização.
JSP
JavaServer Pages (JSP) é construído sobre a API do Servlet e permite a incorporação de código Java que é compilado e depois executado quando uma requisição é recebida. Uma ameaça comum ao código JSP é o cross-site scripting (XSS).
Vulnerabilidades de segurança Java
Embora a plataforma Java inclua inúmeros recursos projetados para melhorar a segurança das aplicações Java, é fundamental para os desenvolvedores garantir que seu código Java esteja livre de vulnerabilidades nos estágios iniciais do ciclo de vida do desenvolvimento do software. Evitar erros de segurança Java, como não restringir o acesso a classes e variáveis, não finalizar classes, confiar em pacotes scoop e outros é o melhor lugar para começar a proteger o código Java, também é importante para os desenvolvedores se familiarizarem com as ameaças de segurança comuns que o código Java enfrenta, assim como frameworks Java. Para mais informações sobre como proteger o código Java durante o desenvolvimento, leia 9 Erros de segurança que todo desenvolvedor Java deve evitar aqui.
Vulnerabilidades de segurança Java de alto risco:
Com mais de 95% de todos os desktops corporativos do mundo rodando Java, há sérias consequências quando as vulnerabilidades no código Java chegam à produção e são exploradas por partes maliciosas. A seguir está uma lista de algumas das ameaças de alto risco que as aplicações escritas em Java enfrentam:
- Injeções de código
- Injeções de comando
- Injeções de cordas de conexão
- Injeções deLDAP
- XSS refletido
- Recurso Injecção
- Pedido SQL Injecção
- InjecçãoSQL
- XSS armazenado
- Injecção XSS
>
Segurar o seu Java
>
Checkmarx’s CxSAST, uma solução de análise de código estático, destaca-se entre as soluções de teste Java não só como a solução que manterá o seu código Java livre de problemas de segurança e conformidade, mas também como a ferramenta que contribuirá para o avanço da sua organização no que diz respeito à maturidade da segurança das aplicações.
CxSAST trabalha com as ferramentas que seus desenvolvedores já estão usando, pois se integra perfeitamente com a maioria dos programas de desenvolvimento comuns disponíveis em todos os estágios do SDLC. As características do CxSAST, tais como varredura incremental de código e a melhor localização de correção, o tornam ideal para qualquer ambiente de desenvolvimento contínuo de integração contínua (CICD).
Quando vulnerabilidades são detectadas no código Java, o CxSAST não apenas identificará a melhor localização de correção, mas também oferecerá recursos ao desenvolvedor para entender como o vetor de ataque funciona, bem como conselhos de correção que os ajudarão a garantir que erros semelhantes sejam evitados no futuro.