Cada grupo deve colocar a resposta às perguntas (note que pode colocar as respostas às experiências, mas estas não irão contar para avaliação) dos seguintes exercícios na área do seu grupo no Github até ao final do dia 07/Jun/22. Por cada dia de atraso será descontado 0,15 valores à nota desse trabalho.
Nota:
Grave os ficheiros na diretoria Aula 13 para a sua máquina local.
Analise os ficheiros InputValidation.cpp e InputValidation.java.
-
Explique os dois problemas: (i) utilização do cin/Scanner para leitura, (ii) acesso ao array
-
O que alterava?
Analise o ficheiro WhileEx.java.
-
Qual o(s) problema(s) no input do programa?
-
Altere o programa de modo a validar todo o input e recuperar apropriadamente dos erros.
Analise o ficheiro Input.cpp.
-
Qual o(s) problema(s) no input do programa ?
-
Altere o programa de modo a validar todo o input e recuperar apropriadamente dos erros.
Analise o ficheiro Input.java.
-
Qual o(s) problema(s) no input do programa ?
-
Altere o programa de modo a validar todo o input e recuperar apropriadamente dos erros.
Analise o programa filetype.c que imprime no écran o tipo de ficheiro passado como argumento.
-
Existem pelo menos dois tipos de vulnerabilidades estudadas na aula teórica de "Validação de Input" que podem ser exploradas. Identifique-as.
-
Forneça o código/passos/linha de comando que permitem explorar cada uma das vulnerabilidades identificadas na linha anterior.
-
O que aconteceria se o seu programa tivesse permissões setuid root?
Analise o programa readfile.c que imprime no écran o conteúdo do ficheiro passado como argumento, a que acrescenta o sufixo ".txt" de modo a garantir que só deixa ler ficheiros em texto.
- Existe pelo menos uma vulnerabilidade estudada na aula teórica de "Validação de Input" (em conjunto com outra que já estudou) que permite que o programa imprima ficheiros que não terminam em ".txt". Explique.
- Indique a linha de comando necessária para aceder ao ficheiro /etc/passwd.
Analise o ficheiro string_formato.c com o exemplo de vulnerabilidade de string de formato dado na aula, e o ficheiro string_formato2.c já sem essa vulnerabilidade.
- Faça algumas experiências com vários valores de input tanto com o programa com vulnerabilidades como sem vulnerabilidades e tire as suas conclusões.
Teste a sua habilidade de identificar problemas de segurança durante a revisão de código. Para tal, complete a OWASP Security Code Review 101 em https://owasp.org/SecureCodingDojo/codereview101/.
O OWASP Security Code Review 101 é parte integrante do OWASP Secure Coding Dojo.
Uma estratégia importante de segurança é a "defense in depth". Explique o que significa. De que modo é que a "defense in depth" está relacionada com a validação de input?
Desenvolva um programa (na linguagem em que tiver mais experiência) que pede:
- valor a pagar,
- data de nascimento,
- nome,
- número de identificação fiscal (NIF),
- número de identificação de cidadão (NIC),
- numero de cartão de crédito, validade e CVC/CVV.
Valide esse input de acordo com as regras de validação "responsável", apresentadas na aula teórica.