Boletim digital maio/2013
Centro de Informática de Ribeirão Preto
Nesta edição:
Diferenças entre vírus, trojans e outros Intel Haswell - Sucessor da arquitetura Ivy Bridge Segurança em desenvolvimento de software
Expediente Universidade de São Paulo Reitor João Grandino Rodas Vice-Reitor Hélio Nogueira da Cruz Campus de Ribeirão Preto Prefeito do Campus Prof. Osvaldo Luiz Bezzon Superintendência de Tecnologia da Informação Superintendente Prof. Antonio Roque Dechen Centro de Informática de Ribeirão Preto Diretor Prof. Oswaldo Baffa Filho Vice-Diretor Prof. Alexandre Souto Martinez Chefe da Seção Técnica Administrativa Carlos Eduardo Herculano Chefe do Serviço Técnico de Informática Cláudia H. B. Lencioni Chefe da Seção Técnica de Suporte Clélia Camargo Cardoso Chefe da Seção Técnica de Redes Rubens Rodrigo Diniz Chefe Seção Técnica de Manutenção em Informática Luiz Henrique Coletto Projeto Gráfico João H. Rafael Junior Apoio: Instituto de Estudos Avançados Polo Ribeirão Preto
Índice Diferença entre vírus, trojan e outros - 4 Intel Haswell, sucessor da arquitetura Ivy Bridge - 8 Segurança em desenvolvimento de software - 10
Espaço do leitor
Envie sugestões do que você gostaria de ler no Boletim Digital do CIRP. Email para contato: boletim@cirp.usp.br
Quais as diferenças entre vírus, trojans, spywares e outros? Todas as pessoas que utilizam um computador - seja ele um desktop, notebook, netbook ou mesmo um tablet - está habituada a ouvir e pronunciar as palavras vírus, trojan, spyware, adware e malware. É intuitivo pensarmos que essa coleção de nomes rotulam ameaças ao computador e que todas elas correspondem a um vírus. É fato que, normalmente, todos esses elementos cibernéticos causam algum prejuízo à todos nós. Entretanto, eles não são todos iguais e nem devem ser indiscriminadamente denominados vírus. Malware é a definição genérica para eles. O que é um Malware? Um Malware é uma combinação das palavras da língua inglesa malicious e software. Os "programas maliciosos" são programas e comandos desenvolvidos com diferentes propósitos: invadir uma máquina, sistema, bancos de dados, causar danos, apagar informações, roubar informações, interromper serviços, dentre outros. Praticamente 100% desses malwares são silenciosos, não sendo percebido pelo usuário do sistema. Resumindo, malware é a palavra que define indistintamente programas perigosos, invasivos ou mal intencionados que possam afetar um computador.
4
Tomando os malwares como base, estes se dividem em diversas categorias. Dentre as principais, podemos citar o famigerado vírus, além de worms, trojans, spywares e adwares. Vamos conhecer um pouco mais sobre cada um. Vírus A denominação vírus está associada à maneira como esses malwares se reproduzem. Diferentemente dos anteriormente citados, sua capacidade de infectar sistemas, fazer cópias de si mesmo e infectar outros computadores, é muito semelhante ao que um vírus biológico faz em organismos vivos, causando sempre algum tipo de problema ao sistema por conseguinte, ao usuário infectado. Daí a sua denominação. Vírus são tipicamente contraídos à partir de arquivos anexos em e-mails. Existem muitas outras formas de contraí-los. Entretanto, como a contaminação esta associada à uma ação do usuário - como a execução do aplicativo anexo - essa é a forma mais comumente observada.
Worms Um worm (verme, em inglês) de computador é, também, um programa malicioso que utiliza como meio de propagação, uma rede. Neste caso, ele
Quais as diferenças entre vírus, trojans, spywares e outros?
pode se infiltrar em vários computadores sem a necessidade de que algum usuário participe do processo, ao contrário dos vírus vistos anteriormente. O perigo dos worms está justamente no processo com que se dissemina. Eles podem ser disparados, aplicados e espalhados de forma totalmente automática, sem que o usuário participe ativamente do processo. Trojan Cavalo de tróia, em português, é um conjunto de funções desenvolvidas
6
para serem executadas em um sistema. Junto à um download, por exemplo, pode ser que um cavalo de tróia consiga infiltrar uma máquina. Depois da instalação do aplicativo, programa ou algum outro sistema (desejado pelo usuário), diversos outros programas (indesejados) ou comandos podem ser executados, instalando o Trojan. Po d e s e r q u e n ã o h a j a u m a contaminação de imediato ou mesmo algum comportamento estranho proveniente do computador. Fato é que algum conteúdo não desejado foi
instalado sem o consentimento do usuário. Daí a relação com o cavalo de tróia, historicamente falando. O usuário instala em sua máquina um conteúdo diferente do que foi ofertado ou procurado.
executam ou baixam anúncios e propagandas automaticamente para o computador, instalando-se na máquina podendo gerar marketing e publicidade de gosto duvidoso e em quantidade suficiente para causar muita irritação ao usuário.
Spywares Em inglês, spy significa espião. Foi com essa característica que os spywares surgiram. Inicialmente, o objetivo dos spywares era monitorar páginas visitadas pelo usuário, dentre outros objetos de interesse dos desenvolvedores de spywares.
Adwares nao costumam causar prejuízos ou danos ao sistema. De qualquer forma, não deixam de causar insatisfação, pois, comumente ícones são instalados em sua área de trabalho, no menu Iniciar ou mesmo nas barras de ferramentas do navegador, para oferecer produtos ou serviços.
Mas, qual o fundamento? Com base nessas informações poder-se-ia atingir os usuários com mais eficiência em propagandas, por exemplo. Porém, atualmente os spywares podem ser utilizados para roubar informações pessoais do usuário (logins e senhas) e modificar configurações do sistema (como página inicial do navegador).
Além desses, existem diversos outros malwares que, inclusive, podem reunir em um só vários problemas aqui descritos. O ideal é evitar o acesso à sites e correios eletrônicos de origem duvidosa, manter o antivirus e o sistema operacional atualizado, bem como observar muito bem o conteúdo dos downloads executados.
Esse tipo de malware foi muito explorado nos últimos anos. Isso motivou o desenvolvimento de diversos softwares com a especialidade de remover spywares de computadores. Adware O último malware aqui abordado não costuma prejudicar o computador. Entretanto, os usuários de computadores são extremamente afetados e atingidos. Adwares são programas que exibem,
Observar com atenção os remetentes dos e-mails recebidos pode prevenir o ataque por trojans, por exemplo. Assim, evita-se a contração e disseminação desses malwares. Autor: Fernando Yosetake Centro de Informática da USP Ribeirão Preto (CIRP)
Intel Haswell - Sucessor da arquitetura Ivy Bridge Haswell é o codinome da 4ª geração de processadores com microarquitetura de 22nm que substituirá o Ivy Bridge 3ª Geração e foi anunciado em Fevereiro de 2013 e durante a IDF 2013 (Intel Developer Forum), que aconteceu entre os dias 10 e 11 de abril deste ano, em Pequim, a Intel apresentou mais detalhes sobre a aguardada arquitetura Haswell.
8
A Intel lançará a família do novo processador durante a Computex 2013, que acontece em Junho na cidade de Taipei, Taiwan.
permitindo maior controle do fluxo, dando mais vazão quando necessário ou zerando-o completamente quando ocioso, além das trocas de estado ser muito mais rápidas.
Uma das principais novidades é a reorganização dos componentes internos para um funcionamento melhor, com redução de gasto de energia (TDP) de até 30% menos que a geração anterior.
Com isso tem maior desempenho devido à comunicação entre canais, menor consumo de energia e ocupando o mesmo espaço físico de um transistor planar.
Herdou dos Ivy Bridge a tecnologia de transistores Tri-Gate. São chamados transistores 3D, pois são fabricados em camadas superpostas (wafers), com saídas (Gates) no topo e laterais,
Outra novidade é o desempenho da GPU (Graphics Processor Unit) Integrada que dobrou em relação aos Ivy Bridge, com suporte ao DirectX 11.1, OpenCL 1.2 e OpenGL 4.0, acompanhando assim a evolução das
maiores beneficiados, pois não será preciso uma linha de processadores simplificados. Utilizando a arquitetura com a adição de chipsets internos vai conseguir reduzir o consumo, sem afetar o desempenho. Netgrafia
placas gráficas de vídeo dedicadas, talvez não para jogos pesados, mas com desempenho acima da média. Foi mantido o suporte as memórias DDR3 em canal duplo. Esperamos ter novidades para o suporte às DDR4 em próximos lançamentos de chipsets para as próximas placas-mãe. Com um novo sistema de cache e socket 1150 o processador ficou incompatível com as atuais placas mãe, restando assim gastar se quiser um Haswell em sua casa.
http://en.wikipedia.org/wiki/Haswell_% 28microarchitecture%29 http://www.tecmundo.com.br http://pcworld.uol.com.br/noticias/2013 / 0 5 / 0 3 / p r o c e s s a d o r e s 2 0 1 c h a s w e l l 2 0 1 d - d a - i n t e l - t ra ra o grande-ganho-no-desempenho-grafico/ http://meiobit.com/84702/intel-trigate-transistores-3d/ http://www.computextaipei.com.tw/ Autor: Luiz Henrique Coletto
Mas a Intel mira nos Ultrabooks e dispositivos móveis, que serão os
Chefia SCMANUT
Segurança em desenvolvimento de software Desenvolver Sistemas é uma tarefa um tanto quanto delicada e que exige muita atenção e dedicação. Recomendações de características de linguagens de programação, boas práticas e um bom planejamento fazem parte dos requisitos iniciais para todo desenvolvedor. É fundamental elaborar um fluxograma do projeto em que vai atuar, preparar os diagramas de blocos, estabelecer a arquitetura, as codificações e ambiente de testes. A documentação é parte importante pois é fundamental para futura manutenção. Programar com requisitos de segurança é considerado um grande desafio. Deve-se especificar o nível de segurança que será aplicado ao projeto. Desenvolver software seguro é incorporar a segurança desde o início do desenvolvimento do Software. Recomenda-se que o desenvolvedor conheça as vulnerabilidades em diferentes artefatos do ciclo de vida do desenvolvimento do software para que estes possam ser removidos assim que possível. Caso contrário, a remoção as vulnerabilidades, numa fase posterior ir á aumentar o custo significativamente. Três níveis de critérios que podem ser utilizados: Nível Baixo: É considerado para uso em sistemas 10
que não exigem maiores preocupações de segurança. Um sistema de biblioteca que é acessado através de um único computador que possui uma única conexão a um servidor e não está ligado à Internet. Um sistema com este nível de segurança pode ser considerado como um sistema doméstico e geralmente não está interligado com várias estações de trabalhos, além de ter baixo nível de importância para a empresa. Nível Médio: São sistemas que exigem um pouco de segurança, como sistema de cadastro de alunos, notas, cursos e todas as informações de uma grande universidade. Este nível de segurança é considerado mediano, pois envolve uma série de requisitos de segurança a serem implantados, como normas, modelos e treinamento de segurança além do bom senso dos usuários do sistema. Nível Alto: As principais clientelas são os Sistemas Bancários, transações web, transferência de dados particulares de cliente como no caso do Imposto de Renda entre outros sistemas deste gênero. Estes sistemas necessitam do nível
mais alto de segurança bem como implementação constante de novas técnicas desenvolvidas através de pesquisas recentes. No sentido de quantificar a segurança, propõe-se que todo o modelo SSDP (Secure Software Development Process) deve ser implementado. A proposta do nível de segurança a ser empregado no sistema deve dar-se através da avaliação das informações da empresa e do projeto. Identificar e propor aos stakeholders (parte interessada) os critérios de segurança (baixo, médio ou alto) que através do entendimento do engenheiro de segurança seja necessário para garantir a segurança de tal projeto, explicando claramente ao cliente que se pode alterar o nível de segurança, porém isso irá alterar os custos e o cronograma de desenvolvimento do projeto. Segurança do Sistema: - Seguir especificação de segurança, evitar falhas (vulnerabilidades) que comprometam a segurança. Buffer Overflows, Backdoors, etc. - Garantir ao Cliente a segurança do Sistema - Manter os códigos-fonte em segurança, evitar roubo de código ou indisponibilidade da equipe de desenvolvimento
Algumas Características de um Ambiente Seguro: - Espaço físico restrito, com controle de acesso físico e proteção lógica dos servidores. - Separação entre ambiente de desenvolvimento, teste e construção. - Gerência de configuração dos fontes. - Processos de desenvolvimento bem estabelecidos e controlados, gerando evidências dos controles. - Segurança no Desenvolvimento. Normas e práticas programação:
de
boa
- Funções intrinsecamente seguras. - Verificar códigos de erro retornado por função ou método. - Atentar para tamanho de buffers e arrays do sistema. - Documentar o código. - Segurança no Desenvolvimento. As 10 práticas seguras desenvolvimento de Software: 1. Validação de entrada. 2. Atenção nas mensagens de alerta. 3. Projeto com ênfase na segurança. 4. Simplifique as coisas.
em
Segurança em desenvolvimento de software 5. Padrão é negar tudo. 6. Poucos privilégios para os recursos oferecidos. 7. Limpeza dos dados enviados a outros sistemas. 8. Prática de defesa sempre. 9. Técnicas de garantia de qualidade. 10. Adotar um padrão de código seguro. Referência: www.securecoding.cert.org Norma ISO/IEC-15408: Common Criteria Uma referência internacional para desenvolvedores, administradores e auditores de segurança para sistemas de informação. A Common Criteria simplesmente atesta que o produto de software (aplicação web) implementa um determinado conjunto de funcionalidades de segurança, mas não garante que o mesmo seja seguro apenas por conta disso. A segurança de fato estará ligada à capacidade da aplicação web em resistir à tentativas de ataques a partir da interação com os usuários, logo, não basta apenas prever critérios e funcionalidades de segurança nas etapas de seu desenvolvimento.
12
O objetivo é fornecer um conjunto de critérios fixos que permitem especificar a segurança de uma aplicação de forma não ambígua a partir de características do ambiente da aplicação, e definir formas de garantir a segurança da
Garante que o sistema funciona de acordo com o especificado em sua documentação, e que esta descreve as proteções necessárias contra ameaças identificadas. Aplicável quando alguma confiança no funcionamento é necessária, porém as ameaças à segurança não são vistas como sérias. A avaliação é feita na versão entregue ao Cliente, com base na documentação, sem o auxílio do desenvolvedor. • EAL 2 - Testado Estruturalmente Garante que foram utilizadas as práticas comerciais padrão no desenvolvimento; Requer uma análise de vulnerabilidades do sistema, testes independentes e validação dos testes e estrutura utilizados pelo desenvolvedor, que também será avaliado. Aplicável nos casos em que desenvolvedores e usuários requerem um nível entre baixo e moderado, de garantia de segurança. Exemplo: sistemas legados ou nos quais o desenvolvedor possui acesso limitado.
aplicação para o cliente final. Nesta norma são definidos quatro níveis de garantia de segurança (EAL Evaluation Assurance Level) EAL 1 - Testado funcionalmente
EAL 3 - Metodicamente testado e verificado Garante que a segurança foi aplicada no estágio de projeto do sistema, sem alteração substancial nas práticas de desenvolvimento.
Segurança em desenvolvimento de software Requer investigação completa do sistema e do seu desenvolvimento, sem a necessidade de reengenharia. Aplicável nos casos em que desenvolvedores e usuários requerem nível moderado de garantia de segurança. EAL 4 - Metodicamente projetado, testado e verificado Garante o máximo em segurança baseada em boas práticas de desenvolvimento, sem a utilização de especialista. Analisa as funções de segurança do Sistema utilizando: - Especificações interfaces;
funcional
e
de
- Estruturas de alto nível e baixo nível; - Subconjunto da implementação; - Modelo informal da segurança do sistema.
política
de
OWASP - Open Web Application Security Project Comunidade aberta dedicada a habilitar organizações a desenvolver, adquirir e manter aplicações que possam ser confiáveis. Disponibilizam ferramentas e documentos organizados nas seguinte categorias: Proteção: proteção contra falhas de
14
implementação e design de segurança Detecção: detecção de falhas de implementação e design de segurança Ciclo de vida: adicionam segurança ao ciclo de vida de desenvolvimento de software. O Top 10 é uma lista dos 10 ataques a segurança de aplicações web mais críticos existentes. Este é, provavelmente, o projeto mais famoso da OWASP e é atualizado frequentemente, sendo que a última versão é deste ano (2013) com a seguinte lista de ataques: 1. Injeção: ocorre quando um dado não confiável é enviado a um interpretador como parte de um comando ou consulta. O tipo de injeção mais famoso é o SQL Injection que permite que o atacante execute quaisquer comandos SQL no banco de dados da aplicação vulnerável. 2. Cross-site Scripting (XSS): ocorre quando uma aplicação obtém um dado não confiável e envia para um navegador Web sem correta validação e escapamento. Permite que um atacante execute quaisquer scripts (normalmente Javascript) no navegador da vítima. 3. Autenticação e gerenciamento de sessão quebrados: ocorre quando a autenticação e o gerenciamento de sessão da aplicação não são feitos de
forma correta, permitindo que o atacante comprometa senhas, chaves, sessões web, assumindo a identidade da vítima.
manter todo o software atualizado, incluindo todas as bibliotecas utilizadas pelas aplicações.
4. Referência direta insegura a objeto: ocorre quando o desenvolvedor expõe uma referência a um objeto interno, como um arquivo, diretório ou chave de banco de dados. Sem uma checagem de controle de acesso ou outra proteção, atacantes podem manipular estas referências para acessar dados não
7. Armazenamento criptográfico inseguro: ocorre quando a aplicação protege incorretamente seus dados sensíveis (como números de cartões de crédito e credenciais de autenticação) com criptografia ou hash adequados. Os atacantes podem roubar ou modificar estes dados para conduzir roubo de
autorizados, confidenciais.
arquivos
identidade, fraude de cartão de crédito ou outros crimes.
5. Cross-site Request Forgery (CSRF): força o navegador Web da vítima logada numa aplicação a enviar um request forjado, incluindo o cookie de sessão da vítima e qualquer outra informação de autenticação incluída automaticamente, para uma aplicação vulnerável. Isto permite que o atacante force o navegador da vítima a gerar requests que a aplicação vulnerável pensa que são legítimos.
8. Falha ao restringir acesso a URL: ocorre quando a aplicação restringe o acesso a uma página reservada apenas pela interface, ou seja, não exibindo os links para ela. Um atacante pode obter o link para esta página e acessá-la diretamente.
como
6. Problema com configurações de segurança: boa segurança requer ter uma configuração de segurança bem definida e implantada para a aplicação, frameworks, servidor de aplicação, servidor Web, servidor de banco de dados e plataforma. Todas estas configurações devem ser definidas, implementadas e mantidas quando não são liberadas com configurações padrão seguras. Isto inclui
9. Proteção em nível de transporte insuficiente: ocorre quando uma aplicação falha ao autenticar, encriptar e proteger a confidencialidade e integridade do tráfego de rede sensível. Isto pode acontecer com o uso de algorítmos de criptografia fracos, usam certificados digitais expirados ou inválidos ou não os usam corretamente. 10. Redirects e forwards não validados: ocorre quando uma aplicação redireciona ou encaminha um usuário a outras páginas ou sites e usam dados não confiáveis para determinar a página de destino. Sem validação apropriada,
Segurança em desenvolvimento de software
16
, atacantes podem redirecionar vítimas para sites de phishing ou malware ou usam forwards para acessar páginas não autorizadas.
Assim, ele pode ser utilizado para identificar falhas de segurança em sua aplicação web sem alterar a interface de usuário da mesma.
A cada uma das vulnerabilidades listadas são ensinadas formas de evitar que sua aplicação fique vulnerável. Para isso algumas ferramentas são utilizadas:
ESAPI é uma API de controle de segurança que torna fácil aos desenvolvedores escreverem aplicações com baixo risco. Disponível para as plataformas como Java, .NET, Python e PHP, a ESAPI tem o seguinte design básico para todas as implementações:
WebGoat é uma aplicação web feita em Java com diversas falhas de segurança feita para ensinar lições de segurança em aplicações web. Em cada lição, o usuário deve demonstrar que entende um problema de segurança explorando a vulnerabilidade do
- Ter uma implementação de referência
WebGoat.
para cada controle;
Por exemplo, em uma das lições o usuário precisa fazer um ataque de SQL Injection para roubar números falsos de cartões de crédito. A aplicação é um ambiente de aprendizado realístico e provê aos usuários dicas e código que explicam cada lição.
- Poder, opcionalmente, utilizar sua própria implementação para cada controle;
- Ter um conjunto de interfaces de controle de segurança;
AntiSamy é uma API utilizada para evitar que código HTML e CSS malicioso afete sua aplicação e evitando, assim, um ataque de XSS. A API faz isso fazendo uma validação do HTML/CSS recebido do cliente e o valida através de uma whitelist, que é uma lista de elementos HTML/CSS seguros de serem aceitos pela aplicação.
WebScarab é um aplicativo desktop feito em Java (multiplataforma) utilizado como um Proxy Web. Após configurar seu navegador para utilizar a porta aberta pelo WebScarab como proxy HTTP, você pode utilizá-lo para analisar todo o tráfego entre o navegador e a aplicação que está sendo acessada, bem como alterar o conteúdo
Ele tem suporte a mensagens de erro amigáveis e suas políticas de validação
do request enviado originalmente.
podem ser personalizadas.
]
[
Guias
Fontes:
Além de software, a OWASP elabora uma rica documentação sobre o assunto e uma parte desta documentação é composta por três importantes guias:
http://www.rodrigocarvalho.blog.br/ow asp-projeto-aberto-para-seguranca-emaplicacoes-web/
Guia de desenvolvimento: provê um guia prático com exemplos de código em Java, .NET e PHP, cobrindo um extenso leque de problemas de segurança; Guia de revisão de código: objetiva guiar o revisor de código na busca por vulnerabilidades da aplicação;
As Top 10 OWASP podem ser encontradas na URL: https://www.owasp.org/index.php/Top_ 10_2013-T10
Autor: Ali Faiez Taha
Guia de teste: objetiva criar melhores práticas para testes de penetração em aplicações web
SCREDE – CIRP