Reino: Input Validation and Representation

Problemas de validação e representação da entrada são causados por metacaracteres, codificações alternativas e representações numéricas. Confiar na entrada resulta em problemas de segurança. Os problemas incluem: “Buffer Overflows”, ataques de “Cross-Site Scripting”, “SQL Injection”, entre outros.

Hadoop Job Manipulation

Abstract
O Job enviado a um cluster Hadoop pode ser adulterado em um ambiente hostil.
Explanation
Erros de manipulação de trabalhos Hadoop ocorrem quando:

- Os dados entram em um programa por uma fonte não confiável.

- Os dados são usados para especificar um valor de JobConf que controla um trabalho de cliente.

Clusters Hadoop são um ambiente hostil. Quando configurações de segurança de proteção do acesso não autorizado ao HDFS em máquinas de cluster não são definidas corretamente, um invasor pode ser capaz de assumir o controle. Isso resulta na possibilidade de que todos os dados fornecidos pelo cluster Hadoop sejam adulterados.

Exemplo 1: O código a seguir mostra um envio de Job em um aplicativo de cliente típico que usa entradas da linha de comando na máquina mestre do cluster Hadoop:


public void run(String args[]) throws IOException {

String inputDir = args[0];
String outputDir = args[1];

// Untrusted command line argument
int numOfReducers = Integer.parseInt(args[3]);
Class mapper = getClassByName(args[4]);
Class reducer = getClassByName(args[5]);

Configuration defaults = new Configuration();
JobConf job = new JobConf(defaults, OptimizedDataJoinJob.class);
job.setNumMapTasks(1);
// An attacker may set random values that exceed the range of acceptable number of reducers
job.setNumReduceTasks(numOfReducers);

return job;
}
Exemplo 2: O código a seguir mostra um caso em que um invasor controla o trabalho em execução a ser desativado por meio de argumentos de linha de comando:


public static void main(String[] args) throws Exception {

JobID id = JobID.forName(args[0]);
JobConf conf = new JobConf(WordCount.class);
// configure this JobConf instance
...
JobClient.runJob(conf);
RunningJob job = JobClient.getJob(id);
job.killJob();

}
desc.dataflow.java.hadoop_job_manipulation