diff --git a/project.py b/project.py
index 2248a7e..e60910b 100644
--- a/project.py
+++ b/project.py
@@ -1207,7 +1207,26 @@ def _ExtractArchive(self, tarpath, path=None):
     """
     try:
       with tarfile.open(tarpath, 'r') as tar:
-        tar.extractall(path=path)
+        def is_within_directory(directory, target):
+            
+            abs_directory = os.path.abspath(directory)
+            abs_target = os.path.abspath(target)
+        
+            prefix = os.path.commonprefix([abs_directory, abs_target])
+            
+            return prefix == abs_directory
+        
+        def safe_extract(tar, path=".", members=None, *, numeric_owner=False):
+        
+            for member in tar.getmembers():
+                member_path = os.path.join(path, member.name)
+                if not is_within_directory(path, member_path):
+                    raise Exception("Attempted Path Traversal in Tar File")
+        
+            tar.extractall(path, members, numeric_owner=numeric_owner) 
+            
+        
+        safe_extract(tar, path=path)
         return True
     except (IOError, tarfile.TarError) as e:
       _error("Cannot extract archive %s: %s", tarpath, str(e))