SóProvas


ID
195400
Banca
CESPE / CEBRASPE
Órgão
TCU
Ano
2010
Provas
Disciplina
Banco de Dados
Assuntos

Uma equipe de desenvolvimento de software recebeu a
incumbência de desenvolver um sistema com as características
apresentadas a seguir.

* O sistema deverá ser integrado, interoperável, portável e
seguro.
* O sistema deverá apoiar tanto o processamento online, quanto
o suporte a decisão e gestão de conteúdos.
* O sistema deverá ser embasado na plataforma JEE (Java
enterprise edition
) v.6, envolvendo servlets, JSP (Java server
pages
), Ajax, JSF (Java server faces) 2.0, Hibernate 3.5, SOA
e web services.

O líder da equipe iniciou, então, um extenso processo de
coleta de dados com o objetivo de identificar as condições
limitantes da solução a ser desenvolvida e tomar decisões
arquiteturais e tecnológicas que impactarão várias características
funcionais e não funcionais do sistema, ao longo de seu ciclo de
vida. A partir dessa coleta, o líder deverá apresentar à equipe um
conjunto de informações e de decisões.

A respeito de práticas e técnicas de programação para desenvolver
com segurança o sistema integrado referido no texto, julgue os
próximos itens.

Se o líder da equipe decidir adotar como prática geral a sanitização de exceptions na implementação das aplicações, essa medida eliminará do estado dos objetos throwable lançados para tratamento pelas camadas superiores do sistema as informações que possam descrever detalhes internos de funcionamento do sistema que não devem ser apresentados aos usuários finais, tais como informações acerca da inexistência de arquivos que sejam nomeados pelo próprio usuário final, dados descritivos da estrutura do sistema de arquivos e detalhes acerca de conexões com sistemas de gerenciamento de bancos de dados (SGBDs).

Alternativas
Comentários
  • "It is not necessary to sanitize exceptions containing information derived 
    from caller inputs. If a caller provides the name of a file to be opened, 
    for example, do not sanitize any resulting FileNotFoundException thrown when 
    attempting to open that file as it provides useful debugging information. ' 

    Extraído do Secure Coding Guidelines for the Java Programming Language 
    http://java.sun.com/security/seccodeguide.html

     

  • acho que o examinador quis jogar palavras difíceis para confundir
  • Não achei o erro nessa questão! De acordo com o secure coding guidelines do jee, a questão estaria certa:

    Guideline 2-1 / CONFIDENTIAL-1: Purge sensitive information from exceptions

    Exception objects may convey sensitive information. For example, if a method calls thejava.io.FileInputStream constructor to read an underlying configuration file and that file is not present, a java.io.FileNotFoundException containing the file path is thrown. Propagating this exception back to the method caller exposes the layout of the file system. Many forms of attack require knowing or guessing locations of files.

    Exposing a file path containing the current user's name or home directory exacerbates the problem. SecurityManager checks guard this information when it is included in standard system properties (such as user.home) and revealing it in exception messages effectively allows these checks to be bypassed.

    Internal exceptions should be caught and sanitized before propagating them to upstream callers. The type of an exception may reveal sensitive information, even if the message has been removed. For instance, FileNotFoundException reveals whether or not a given file exists.

    It is sometimes also necessary to sanitize exceptions containing information derived from caller inputs. For example, exceptions related to file access could disclose whether a file exists. An attacker may be able gather useful information by providing various file names as input and analyzing the resulting exceptions.

    Be careful when depending on an exception for security because its contents may change in the future. Suppose a previous version of a library did not include a potentially sensitive piece of information in the exception, and an existing client relied upon that for security. For example, a library may throw an exception without a message. An application programmer may look at this behavior and decide that it is okay to propagate the exception. However, a later version of the library may add extra debugging information to the exception message. The application exposes this additional information, even though the application code itself may not have changed. Only include known, acceptable information from an exception rather than filtering out some elements of the exception.

    Exceptions may also include sensitive information about the configuration and internals of the system. Do not pass exception information to end users unless one knows exactly what it contains. For example, do not include exception stack traces inside HTML comments.


  • acertei em 2013 e errei agora.. Será que realmente o examinador quis saber se sanatizar é ou não uma boa prática?

  • Em algumas ferramentas de análise de código como o Sonar, é uma prática, recomendar a retirada de exceções do tipo throwable, pois o mesmo corresponde a hierarquia máxima do java e não seria possível realizar o tratamento adequado a exceção. Entretanto a questão informa que será realizado a sanitização de exception, no meu ver seria sanitização de throwable.

  • Redação horrível.