This is an automated email from the ASF dual-hosted git repository.

zihaoxiang pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git


The following commit(s) were added to refs/heads/dev by this push:
     new 60b019b729 [Improvement] Fix the git url command injection in pytorch 
task(#15873) (#15950)
60b019b729 is described below

commit 60b019b729a5bb1c05e5627d85b1a903546100a8
Author: cntiger <[email protected]>
AuthorDate: Thu May 9 14:50:27 2024 +0800

    [Improvement] Fix the git url command injection in pytorch task(#15873) 
(#15950)
    
    * fix the git url command injection danger(#15873)
    
    * [Improvement] Fix the git url command injection in pytorch,format code 
style task(#15873)
    
    ---------
    
    Co-authored-by: cntigers <Xiaohu4321@>
    Co-authored-by: Rick Cheng <[email protected]>
---
 .../dolphinscheduler/plugin/task/pytorch/GitProjectManager.java     | 4 ++--
 .../dolphinscheduler/plugin/task/pytorch/PytorchTaskTest.java       | 6 ++++++
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git 
a/dolphinscheduler-task-plugin/dolphinscheduler-task-pytorch/src/main/java/org/apache/dolphinscheduler/plugin/task/pytorch/GitProjectManager.java
 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-pytorch/src/main/java/org/apache/dolphinscheduler/plugin/task/pytorch/GitProjectManager.java
index 3189f26920..5f1e815c30 100644
--- 
a/dolphinscheduler-task-plugin/dolphinscheduler-task-pytorch/src/main/java/org/apache/dolphinscheduler/plugin/task/pytorch/GitProjectManager.java
+++ 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-pytorch/src/main/java/org/apache/dolphinscheduler/plugin/task/pytorch/GitProjectManager.java
@@ -33,12 +33,12 @@ import lombok.extern.slf4j.Slf4j;
 public class GitProjectManager {
 
     public static final String GIT_PATH_LOCAL = "GIT_PROJECT";
-    private static final Pattern GIT_CHECK_PATTERN = 
Pattern.compile("^(git@|https?://)");
+    private static final Pattern GIT_CHECK_PATTERN = 
Pattern.compile("^(git@|https?://)(?![&|])[^&|]+$");
     private String path;
     private String baseDir = ".";
 
     public static boolean isGitPath(String path) {
-        return GIT_CHECK_PATTERN.matcher(path).find();
+        return GIT_CHECK_PATTERN.matcher(path).matches();
     }
 
     public void prepareProject() throws Exception {
diff --git 
a/dolphinscheduler-task-plugin/dolphinscheduler-task-pytorch/src/test/java/org/apache/dolphinscheduler/plugin/task/pytorch/PytorchTaskTest.java
 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-pytorch/src/test/java/org/apache/dolphinscheduler/plugin/task/pytorch/PytorchTaskTest.java
index c213021607..e35a175df1 100644
--- 
a/dolphinscheduler-task-plugin/dolphinscheduler-task-pytorch/src/test/java/org/apache/dolphinscheduler/plugin/task/pytorch/PytorchTaskTest.java
+++ 
b/dolphinscheduler-task-plugin/dolphinscheduler-task-pytorch/src/test/java/org/apache/dolphinscheduler/plugin/task/pytorch/PytorchTaskTest.java
@@ -72,6 +72,12 @@ public class PytorchTaskTest {
 
     }
 
+    @Test
+    public void testGitProjectUrlInjection() {
+        Assertions.assertFalse(GitProjectManager.isGitPath("git@& cat 
/etc/passwd >/poc.txt #"));
+        Assertions.assertFalse(GitProjectManager.isGitPath("git@| cat 
/etc/passwd >/poc.txt #"));
+    }
+
     @Test
     public void testGitProject() {
 

Reply via email to