diff --git a/scripts/setup/constraints.txt b/scripts/setup/constraints.txt
index 645b46e98242ac..da2c0fadec06dc 100644
--- a/scripts/setup/constraints.txt
+++ b/scripts/setup/constraints.txt
@@ -32,8 +32,6 @@ cbor2==5.4.6
     # via -r requirements.zephyr.txt
 certifi==2022.12.7
     # via requests
-cffi==1.15.1
-    # via cryptography
 charset-normalizer==3.0.1
     # via requests
 click==8.1.3
diff --git a/scripts/setup/requirements.all.txt b/scripts/setup/requirements.all.txt
index 3266eaf8504572..c740841dfc426b 100644
--- a/scripts/setup/requirements.all.txt
+++ b/scripts/setup/requirements.all.txt
@@ -43,6 +43,8 @@ mypy-protobuf==3.5.0
 protobuf==4.24.4
 types-protobuf==4.24.0.2
 
+cffi==1.15.0; python_version < "3.13"
+cffi==1.17.1; python_version >= "3.13"
 cryptography
 
 # python unit tests
diff --git a/scripts/tools/telink/requirements.txt b/scripts/tools/telink/requirements.txt
index bb4359b5319da3..bc623e4a3dcd0b 100644
--- a/scripts/tools/telink/requirements.txt
+++ b/scripts/tools/telink/requirements.txt
@@ -1,6 +1,7 @@
 cryptography==41.0.4
-cffi==1.15.0
+cffi==1.15.0; python_version < "3.13"
+cffi==1.17.1; python_version >= "3.13"
 future==0.18.3
 pycparser==2.21
 pypng==0.0.21
-PyQRCode==1.2.1
\ No newline at end of file
+PyQRCode==1.2.1