diff --git a/lava_helper/lava_wait_jobs.py b/lava_helper/lava_wait_jobs.py
index 90c0f5e..82ebf38 100755
--- a/lava_helper/lava_wait_jobs.py
+++ b/lava_helper/lava_wait_jobs.py
@@ -216,7 +216,7 @@
             continue
         with open(results_file, "r") as F:
             res_data = F.read()
-        results = yaml.load(res_data)
+        results = yaml.safe_load(res_data)
         non_lava_results = [x for x in results if x['suite'] != 'lava']
         info['lava_url'] = lava_id_to_url(job, user_args)
         info['artifacts_dir'] = "tf-m-ci-scripts/{}".format(info['job_dir'])
diff --git a/tfm_ci_pylib/lava_rpc_connector.py b/tfm_ci_pylib/lava_rpc_connector.py
index 7de3d8a..d07a58d 100644
--- a/tfm_ci_pylib/lava_rpc_connector.py
+++ b/tfm_ci_pylib/lava_rpc_connector.py
@@ -94,7 +94,7 @@
         if yaml_out_file:
             with open(yaml_out_file, "w") as F:
                 F.write(str(job_def))
-        def_o = yaml.load(job_def)
+        def_o = yaml.safe_load(job_def)
         return job_def, def_o.get('metadata', [])
 
     def get_job_log(self, job_id, target_out_file):
@@ -135,7 +135,7 @@
     def get_error_reason(self, job_id):
         try:
             lava_res = self.results.get_testsuite_results_yaml(job_id, 'lava')
-            results = yaml.load(lava_res)
+            results = yaml.safe_load(lava_res)
             for test in results:
                 if test['name'] == 'job':
                     return(test.get('metadata', {}).get('error_type', ''))
@@ -165,7 +165,7 @@
             return False
 
     def device_type_from_def(self, job_data):
-        def_yaml = yaml.load(job_data)
+        def_yaml = yaml.safe_load(job_data)
         return(def_yaml['device_type'])
 
     def has_device_type(self, job_data):
