diff --git a/static-build/cmake/AddDependencyProjects.cmake b/static-build/cmake/AddDependencyProjects.cmake
index d52dae7a3534b53d44744a14eeae74d7099345f8..a5f38fa227096b7afb5d73184bf27bdd0df66dfd 100644
--- a/static-build/cmake/AddDependencyProjects.cmake
+++ b/static-build/cmake/AddDependencyProjects.cmake
@@ -115,6 +115,7 @@ ExternalProject_Add(icu
         cat <BINARY_DIR>/uconfig.h.prepend <INSTALL_DIR>/include/unicode/uconfig.h >> <BINARY_DIR>/uconfig.h &&
         ${CMAKE_COMMAND} -E copy_if_different <BINARY_DIR>/uconfig.h <INSTALL_DIR>/include/unicode/uconfig.h
     PATCH_COMMAND patch -d <SOURCE_DIR> -p1 -i "${PATCHES_DIR}/icu-tarantool-security-45.patch"
+    COMMAND       patch -d <SOURCE_DIR> -p1 -i "${PATCHES_DIR}/icu-tarantool-security-59.patch"
 )
 set(TARANTOOL_DEPENDS icu ${TARANTOOL_DEPENDS})
 
diff --git a/static-build/patches/icu-tarantool-security-59.patch b/static-build/patches/icu-tarantool-security-59.patch
new file mode 100644
index 0000000000000000000000000000000000000000..f41ec006adb0847931e92c5a274cff459a897e7c
--- /dev/null
+++ b/static-build/patches/icu-tarantool-security-59.patch
@@ -0,0 +1,21 @@
+diff --git a/source/common/utrie2.cpp b/source/common/utrie2.cpp
+index 24ef578..359952a 100644
+--- a/source/common/utrie2.cpp
++++ b/source/common/utrie2.cpp
+@@ -574,7 +574,15 @@ enumEitherTrie(const UTrie2 *trie,
+                     c+=UTRIE2_DATA_BLOCK_LENGTH;
+                 } else {
+                     for(j=0; j<UTRIE2_DATA_BLOCK_LENGTH; ++j) {
+-                        value=enumValue(context, data32!=NULL ? data32[block+j] : idx[block+j]);
++                        if (data32!=NULL) {
++                            value=enumValue(context, data32[block+j]);
++                        } else if (idx!=NULL) {
++                            value=enumValue(context, idx[block+j]);
++                        } else {
++                            /* data32 and idx are not supposed to be NULL at the same time */
++                            U_ASSERT(false);
++                            return;
++                        }
+                         if(value!=prevValue) {
+                             if(prev<c && !enumRange(context, prev, c-1, prevValue)) {
+                                 return;