Index: src/js/_enqueues/admin/site-health.js
===================================================================
--- src/js/_enqueues/admin/site-health.js	(revision 48301)
+++ src/js/_enqueues/admin/site-health.js	(working copy)
@@ -65,8 +65,71 @@
 		goodIssuesWrapper.toggleClass( 'hidden' );
 		$( this ).attr( 'aria-expanded', ! goodIssuesWrapper.hasClass( 'hidden' ) );
 	} );
+	
+	/*
+	 * Object.entries polyfill.
+	 *
+	 * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries
+	 */
+	if ( ! Object.entries ) {
+		Object.entries = function( obj ) {
+			var ownProps = Object.keys( obj ),
+				ownValues = Object.values( obj ),
+				i = ownProps.length,
+				resArray = new Array( i ); // Preallocate the array.
 
+			while ( i-- ) {
+				resArray[ i ] = [ ownProps[ i ], ownValues[ i ] ];
+			}
+
+			return resArray;
+		};
+	}
+
 	/**
+	 * Validates the Site Health test result format.
+	 *
+	 * @since 5.5.0
+	 *
+	 * @param {Object} issue
+	 *
+	 * @return {boolean}
+	 */
+	function validateIssueData( issue ) {
+		// Expected minimum format of a valid SiteHealth test response.
+		var minimumExpected = {
+			test: 'string',
+			label: 'string',
+			description: 'string'
+		};
+		var passed = true;
+
+		// Loop over expected data and match the data types.
+		Object.entries( minimumExpected ).forEach( ( [ key, value ] ) => {
+			if ( 'object' === typeof( value ) ) {
+				Object.entries( value ).forEach( ( [ subKey, subValue ] ) => {
+					if (
+						'undefined' === typeof( issue[ key ] ) ||
+						'undefined' === typeof( issue[ key ][ subKey ] ) ||
+						subValue !== typeof( issue[ key ][ subKey ] )
+					) {
+						passed = false;
+					}
+				} );
+			} else {
+				if (
+					'undefined' === typeof( issue[ key ] ) ||
+					value !== typeof( issue[ key ] )
+				) {
+					passed = false;
+				}
+			}
+		} );
+
+		return passed;
+	}
+
+	/**
 	 * Appends a new issue to the issue list.
 	 *
 	 * @since 5.2.0
@@ -79,6 +142,14 @@
 			heading,
 			count;
 		
+		/*
+		 * Validate the issue data format before using it.
+		 * If the output is invalid, discard it.
+		 */
+		if ( ! validateIssueData( issue ) ) {
+			return false;
+		}
+
 		SiteHealth.site_status.issues[ issue.status ]++;
 
 		count = SiteHealth.site_status.issues[ issue.status ];
Index: src/wp-admin/site-health.php
===================================================================
--- src/wp-admin/site-health.php	(revision 48290)
+++ src/wp-admin/site-health.php	(working copy)
@@ -144,7 +144,9 @@
 	<h4 class="health-check-accordion-heading">
 		<button aria-expanded="false" class="health-check-accordion-trigger" aria-controls="health-check-accordion-block-{{ data.test }}" type="button">
 			<span class="title">{{ data.label }}</span>
-			<span class="badge {{ data.badge.color }}">{{ data.badge.label }}</span>
+			<# if ( data.badge ) { #>
+				<span class="badge {{ data.badge.color }}">{{ data.badge.label }}</span>
+			<# } #>
 			<span class="icon"></span>
 		</button>
 	</h4>
