From f87d5c6c4e40ba092943f5b6dec930f193a15236 Mon Sep 17 00:00:00 2001 From: even <827656971@qq.com> Date: Thu, 26 Jun 2025 18:52:20 +0800 Subject: [PATCH] =?UTF-8?q?afl=20=E7=9B=B8=E5=85=B3=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../process/engine/worker/afl/AFLSlotCompileWorker.java | 9 ++++++--- .../cd/casic/ci/process/engine/worker/afl/AFLWorker.java | 9 ++++++--- .../service/variable/impl/VariableServiceImpl.java | 3 +++ ops-server/src/test/java/cd/casic/server/SftpTest.java | 4 ++++ 4 files changed, 19 insertions(+), 6 deletions(-) diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/afl/AFLSlotCompileWorker.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/afl/AFLSlotCompileWorker.java index c455f240..db8e8e28 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/afl/AFLSlotCompileWorker.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/afl/AFLSlotCompileWorker.java @@ -96,6 +96,7 @@ public class AFLSlotCompileWorker extends DockerWorker { String allCommand = "docker run -v "+ PipelineGlobalVariableConstant.AFL_VOLUME_WORK_DIR_PREFIX +":"+PipelineGlobalVariableConstant.AFL_DOCKER_BASE_DIR+" -it "+imageName+" bash\n" + "cd "+PipelineGlobalVariableConstant.AFL_DOCKER_BASE_DIR+"\n"+// 进入到容器中的卷挂载目录 "mkdir -p "+workDir+"\n"+ + "chmod -R o+rwx "+ workDir +"\n"+ "cd "+workDir+"\n"+handleZipFile(fileName); Object commandScriptObj = taskProperties.get(AFLSlotCompileConstant.COMMAND_SCRIPT); String commandScript = commandScriptObj instanceof String ? ((String) commandScriptObj) : null; @@ -135,8 +136,9 @@ public class AFLSlotCompileWorker extends DockerWorker { private void putInCompileResult(TaskRunContext context,String path, PipResourceMachine machineInfo){ String host = machineInfo.getMachineHost(); - String user = machineInfo.getPassword(); - String password = machineInfo.getPassword(); + String user = machineInfo.getUsername(); + String password = CryptogramUtil.doDecrypt(machineInfo.getPassword()); + append(context,"AFL编译完毕"); List fileNameList = null; try { JSch jsch = new JSch(); @@ -149,7 +151,7 @@ public class AFLSlotCompileWorker extends DockerWorker { Vector files = sftpChannel.ls(path); fileNameList = new ArrayList<>(files.size()); for (ChannelSftp.LsEntry file : files) { - if (!file.getAttrs().isDir()) { + if (!file.getAttrs().isDir()&&!file.getFilename().contains(".")) { fileNameList.add(file.getFilename()); } } @@ -161,6 +163,7 @@ public class AFLSlotCompileWorker extends DockerWorker { if (!CollectionUtils.isEmpty(fileNameList)&&context!=null) { Map taskProperties = context.getGlobalVariables(); // 放入全局上下文中 + append(context,"AFL编译完毕:"+JSON.toJSONString(fileNameList)); taskProperties.put(AFLSlotCompileConstant.COMPILE_RESULT,fileNameList); } } diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/afl/AFLWorker.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/afl/AFLWorker.java index 1a8dc196..f0b94c39 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/afl/AFLWorker.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/engine/worker/afl/AFLWorker.java @@ -36,8 +36,9 @@ public class AFLWorker extends DockerWorker { //从taskProperties中获取资源id String resourceType = taskProperties.get("resourceType").toString(); String resourceId = taskProperties.get("resourceId").toString(); - String commandEnd = taskProperties.get("commandEnd").toString(); - String imageName = taskProperties.get("imageName").toString(); + String commandEnd = taskProperties.get("commandEnd") instanceof String ? ((String) taskProperties.get("commandEnd")) : null; + String imageName = taskProperties.get("imageName") instanceof String ? ((String) taskProperties.get("imageName")) : null; + String executableName = taskProperties.get("executableName") instanceof String ? ((String) taskProperties.get("executableName")) : null; // 代码编译目录 String workDir = (String)globalVariables.get(PipelineGlobalVariableConstant.AFL_DOCKER_WORK_DIR_KEY); // 入参目录 @@ -45,6 +46,8 @@ public class AFLWorker extends DockerWorker { if (StringUtils.isEmpty(seedPath) || StringUtils.isEmpty(workDir) || StringUtils.isEmpty(resourceId) || + StringUtils.isEmpty(imageName) || + StringUtils.isEmpty(executableName) || StringUtils.isEmpty(commandEnd) || StringUtils.isEmpty(resourceType)) { // 缺少参数 @@ -71,7 +74,7 @@ public class AFLWorker extends DockerWorker { "cd " +PipelineGlobalVariableConstant.AFL_DOCKER_BASE_DIR+File.separator+workDir+ "\n"+ cdSourceName(fileName) + "mkdir -p "+PipelineGlobalVariableConstant.AFL_DOCKER_BASE_DIR+File.separator+output+"\n" + - "afl-fuzz -i "+PipelineGlobalVariableConstant.AFL_DOCKER_BASE_DIR+File.separator+seedPath+" -o "+PipelineGlobalVariableConstant.AFL_DOCKER_BASE_DIR+File.separator+output+" "+commandEnd; + "afl-fuzz -i "+PipelineGlobalVariableConstant.AFL_DOCKER_BASE_DIR+File.separator+seedPath+" -o "+PipelineGlobalVariableConstant.AFL_DOCKER_BASE_DIR+File.separator+output+" "+ executableName + " " +commandEnd; try { //将节点的配置信息反编译成对象 log.info("AFL模糊测试执行脚本:{}",commandScript); diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/variable/impl/VariableServiceImpl.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/variable/impl/VariableServiceImpl.java index eabce159..23bdb0d6 100644 --- a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/variable/impl/VariableServiceImpl.java +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/variable/impl/VariableServiceImpl.java @@ -5,11 +5,13 @@ import cd.casic.ci.process.engine.manager.RunContextManager; import cd.casic.ci.process.engine.runContext.BaseRunContext; import cd.casic.ci.process.process.service.variable.VariableService; import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.Map; @Service +@Slf4j public class VariableServiceImpl implements VariableService { @Resource private RunContextManager contextManager; @@ -20,6 +22,7 @@ public class VariableServiceImpl implements VariableService { return ""; } Map globalVariables = context.getGlobalVariables(); + log.info("当前全局变量:{}",globalVariables); return globalVariables.get(varName); } } diff --git a/ops-server/src/test/java/cd/casic/server/SftpTest.java b/ops-server/src/test/java/cd/casic/server/SftpTest.java index cbba6dc9..48d37999 100644 --- a/ops-server/src/test/java/cd/casic/server/SftpTest.java +++ b/ops-server/src/test/java/cd/casic/server/SftpTest.java @@ -36,6 +36,10 @@ public class SftpTest { System.out.println(CryptogramUtil.doEncrypt("hnidc0327cn!@#xhh")); } @Test + public void ssh(){ + System.out.println(CryptogramUtil.doDecrypt("cf917c4ff8463a54df75120e2ff802e8")); + } + @Test public void getFileList(){ String host = "175.6.27.158"; String user = "ubuntu";