diff --git a/core/lib/Drupal/Core/Cache/DatabaseBackend.php b/core/lib/Drupal/Core/Cache/DatabaseBackend.php
index d53c51c2fc..82ae03092f 100644
--- a/core/lib/Drupal/Core/Cache/DatabaseBackend.php
+++ b/core/lib/Drupal/Core/Cache/DatabaseBackend.php
@@ -135,7 +135,16 @@ protected function prepareItem($cache, $allow_invalid) {
 
     // Unserialize and return the cached data.
     if ($cache->serialized) {
-      $cache->data = unserialize($cache->data);
+      $unserialized = unserialize($cache->data);
+      // Make sure that corrupt items are properly identified and treated as
+      // cache misses. Otherwise, broken items will be treated as cache hits,
+      // and return a FALSE as the cached data.
+      if ($unserialized === FALSE) {
+        if ($cache->data != serialize(FALSE)) {
+          return FALSE;
+        }
+      }
+      $cache->data = $unserialized;
     }
 
     return $cache;
