向 Hadoop 群集中提交的 Job 在有害環境中可能被篡改。
Hadoop job manipulation 錯誤在以下情況中出現:
- 數據從一個不可信賴的數據源進入程序。
- 數據用來指定控制客戶端作業的 JobConf 值。
Hadoop 群集是一種有害環境。當用來防止對群集設備中 HDFS 未經授權訪問的安全配置設置不當時,攻擊可能會乘機進行控制。從而造成 Hadoop 群集提供的任何數據被篡改的可能性。
例 1:下列代碼是典型客戶端應用程序中提交的 Job,其輸入來自 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;
}
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();
}