Le 21 avril, notre équipe Threat Intelligence a découvert une vulnérabilité dans Kit de site par Google, un plugin WordPress installé sur plus de 300 000 sites. Cette faille permet à tout utilisateur authentifié, quelle que soit sa capacité, de devenir propriétaire de Google Search Console pour tout site exécutant le plug-in Site Kit by Google.

Nous avons déposé un rapport de problème de sécurité auprès de Google le 21 avril 2020. Un correctif a été libéré quelques semaines plus tard, le 7 mai 2020.

Ceci est considéré comme un critique problème de sécurité qui pourrait amener les attaquants à obtenir l’accès des propriétaires à votre site en Google Search Console. L’accès du propriétaire permet à un attaquant de modifier les plans du site, de supprimer des pages des pages de résultats des moteurs de recherche Google (SERP) ou de faciliter les campagnes de référencement Black Hat. Nous recommandons fortement une mise à jour immédiate de la dernière version de ce plugin. Au moment de la rédaction, c’est la version 1.8.0 du Site Kit de Google.

Les clients Wordfence Premium ont reçu une nouvelle règle de pare-feu le 21 avril 2020 pour se protéger contre les exploits ciblant cette vulnérabilité. Les utilisateurs de Wordfence gratuits recevront cette règle après trente jours, le 21 mai 2020.

Site Kit by Google est un plugin utilisé pour obtenir et afficher des informations sur les visiteurs d’un site et les performances de recherche, ainsi que les performances publicitaires, la vitesse de page et d’autres mesures des services Google dans le tableau de bord WordPress. Pour ce faire, il se connecte initialement à un compte Google Search Console, puis fournit des fonctionnalités supplémentaires pour se connecter à Analytics, AdSense, PageSpeed ​​Insights, Optimize et Tag Manager.

Kit de site par Google Dashboard.

Afin d’établir la première connexion avec Site Kit et Google Search Console, le plug-in génère un proxySetupURL qui est utilisé pour rediriger l’administrateur d’un site vers Google OAuth et exécuter le processus de vérification du propriétaire du site via un proxy.

En raison de l’absence de contrôles des capacités admin_enqueue_scripts , le proxySetupURL a été affiché dans le code source HTML des pages d’administration pour tout utilisateur authentifié accédant au tableau de bord / wp-admin.

Plus précisément, admin_enqueue_scripts action déclenche la enqueue_minimal_admin_script qui met en file d’attente le test de base de googlesitekit et inclut finalement le ‘googlesitekit-base-data“Qui renvoie les données de base en ligne. Cela inclut le proxySetupURL.

	new Script_Data(
				'googlesitekit-base-data',
				array(
					'global'        => '_googlesitekitBaseData',
					'data_callback' => function () {
						return $this->get_inline_base_data();
					},
				)
			),

Voici un aperçu du inline_js_base_data qui récupère les données à afficher dans le code source du tableau de bord WordPress dans le cadre de la admin_enqueue_scripts action. Cela inclut le proxySetupURL.

	/**
	 * Modifies the base data to pass to JS.
	 *
	 * @since 1.2.0
	 *
	 * @param array $data Inline JS data.
	 * @return array Filtered $data.
	 */
	private function inline_js_base_data( $data ) {
		$first_admin_id  = (int) $this->first_admin->get();
		$current_user_id = get_current_user_id();

		// If no first admin is stored yet and the current user is one, consider them the first.
		if ( ! $first_admin_id && current_user_can( Permissions::MANAGE_OPTIONS ) ) {
			$first_admin_id = $current_user_id;
		}
		$data['isFirstAdmin'] = ( $current_user_id === $first_admin_id );
		$data['splashURL']    = esc_url_raw( $this->context->admin_url( 'splash' ) );

		$auth_client = $this->get_oauth_client();
		if ( $auth_client->using_proxy() ) {
			$access_code                 = (string) $this->user_options->get( ClientsOAuth_Client::OPTION_PROXY_ACCESS_CODE );
			$data['proxySetupURL']       = esc_url_raw( $auth_client->get_proxy_setup_url( $access_code ) );
			$data['proxyPermissionsURL'] = esc_url_raw( $auth_client->get_proxy_permissions_url() );
		}

		return $data;
	}

Un examen plus approfondi des données détectables dans le code source du tableau de bord d’administration:

proxySetupURL trouvé dans le code source.

Cela a été corrigé dans la dernière version du plugin par l’ajout d’un contrôle de capacité sur le admin_enqueue_scripts action. Cela interdit la inline_js_base_data d’être inclus dans les pages administratives pour les utilisateurs qui ne disposent pas des privilèges appropriés, tels que les abonnés. Cela empêche le proxySetupURL d’être affiché aux utilisateurs non autorisés.

	add_action( 'admin_enqueue_scripts', $register_callback );
		add_action( 'wp_enqueue_scripts', $register_callback );

		add_action(
			'admin_enqueue_scripts',
			function() {
				if ( ! current_user_can( Permissions::AUTHENTICATE ) ) {
					return;
				}
				$this->enqueue_minimal_admin_script();
			}
		);

En plus d’afficher le proxySetupURL à tout utilisateur authentifié, nous avons découvert que la demande de vérification utilisée pour vérifier la propriété d’un site était une action d’administration enregistrée qui, là encore, ne comportait aucun contrôle de capacité. Cela a permis aux demandes de vérification de provenir de n’importe quel utilisateur WordPress authentifié, y compris ceux avec des autorisations minimales.

le admin_action_googlesitekit_proxy_setup l’action a été enregistrée ici.

	add_action(
			'admin_action_' . Google_Proxy::ACTION_SETUP,
			function () {
				$this->verify_proxy_setup_nonce();
			},
			-1
		);

		add_action(
			'admin_action_' . Google_Proxy::ACTION_SETUP,
			function () {
				$code      = $this->context->input()->filter( INPUT_GET, 'googlesitekit_code', FILTER_SANITIZE_STRING );
				$site_code = $this->context->input()->filter( INPUT_GET, 'googlesitekit_site_code', FILTER_SANITIZE_STRING );

				$this->handle_site_code( $code, $site_code );
				$this->redirect_to_proxy( $code );
			}
		);

Il s’agit de la fonction qui gère la demande de vérification:

	/**
	 * Handles receiving a verification token for a user by the authentication proxy.
	 *
	 * @since 1.1.0
	 * @since 1.1.2 Runs on `admin_action_googlesitekit_proxy_setup` and no longer redirects directly.
	 */
	private function handle_verification_token() {
		$verification_token = $this->context->input()->filter( INPUT_GET, 'googlesitekit_verification_token', FILTER_SANITIZE_STRING );
		$verification_type  = $this->context->input()->filter( INPUT_GET, 'googlesitekit_verification_token_type', FILTER_SANITIZE_STRING );
		$verification_type  = $verification_type ?: self::VERIFICATION_TYPE_META;

		if ( empty( $verification_token ) ) {
			return;
		}

		switch ( $verification_type ) {
			case self::VERIFICATION_TYPE_FILE:
				$this->authentication->verification_file()->set( $verification_token );
				break;
			case self::VERIFICATION_TYPE_META:
				$this->authentication->verification_meta()->set( $verification_token );
		}

		add_filter(
			'googlesitekit_proxy_setup_url_params',
			function ( $params ) use ( $verification_type ) {
				return array_merge(
					$params,
					array(
						'verify'              => 'true',
						'verification_method' => $verification_type,
					)
				);
			}
		);
	}

Voici un aperçu de la demande de vérification envoyée au cours du processus:
/wp-admin/index.php?action=googlesitekit_proxy_setup&googlesitekit_code=[SITEKIT-CODE]&googlesitekit_verification_token=[VERIFICATION TOKEN]&googlesitekit_verification_token_type=FILE&nonce=[NONCE]

Cela a été corrigé dans la dernière version avec un contrôle de capacité ajouté sur le handle_verification_token pour vérifier qu’une demande de vérification s’est produite lors d’une session authentifiée légitime avec un utilisateur disposant des autorisations administratives pour CONFIGURER le plugin Site Kit by Google.

		if ( ! current_user_can( Permissions::SETUP ) ) {
			wp_die( esc_html__( 'Sorry, you are not allowed to do that.', 'google-site-kit' ), 403 );
		}

Ces deux failles ont permis aux utilisateurs de niveau abonné de devenir propriétaires de Google Search Console sur n’importe quel site concerné.

Lorsqu’un nouveau propriétaire d’une propriété dans Google Search Console est configuré, un message est envoyé par e-mail: “Les propriétaires peuvent modifier les paramètres essentiels qui affectent la façon dont Google Search interagit avec votre site ou votre application”.

Il existe plusieurs façons pour un attaquant d’utiliser l’accès propriétaire de Google Search Console pour un site. Pour les attaquants malveillants, la possibilité de manipuler les pages de résultats des moteurs de recherche via Blackhat SEO est particulièrement intéressante. De plus, un attaquant pourrait utiliser l’accès à la console de recherche en conjonction avec un autre exploit qui implique l’injection de contenu malveillant sur un site pour la monétisation.

Un propriétaire dans Google Search Console peut faire des choses comme demander que les URL soient supprimées du moteur de recherche Google, afficher les données de performances concurrentielles, modifier les plans de site, etc.

L’accès injustifié des propriétaires de Google Search Console sur un site peut nuire à la visibilité d’un site dans les résultats de recherche Google et avoir un impact sur les revenus lorsqu’un attaquant supprime des URL des résultats de recherche. Plus précisément, il pourrait être utilisé pour aider un concurrent qui souhaite nuire au classement et à la réputation d’un site à mieux améliorer sa propre réputation et son classement.

Heureusement, il existe des moyens de vérifier et de surveiller si de nouveaux propriétaires de Google Search Console ont été ajoutés et le pare-feu Wordfence protège votre site.

Comme notre équipe de nettoyage du site voit souvent des propriétaires de propriétés malveillants dans Google Search Console ajoutés à des sites piratés, nous avons inclus quelques conseils de leur part.

surveillance

Google vous avertira par e-mail chaque fois qu’un nouveau propriétaire de la Search Console a été ajouté. Si vous recevez l’un de ces e-mails et que vous n’avez pas récemment ajouté de nouveau propriétaire de Google Search Console, prenez des mesures immédiates et supprimez le propriétaire inconnu.

Vérification et suppression des propriétaires indésirables

Même si vous n’avez reçu aucun e-mail de Google vous avertissant de la présence d’un nouveau propriétaire de Google Search Console, vous pouvez vérifier les propriétaires à partir du tableau de bord de Google Search Console.

Recherche d’utilisateurs Google Console de recherche:

  1. Connectez-vous à votre Google Search Console et accédez à “Paramètres”. C’est là que vous trouverez «Utilisateurs et autorisations».

    Emplacement des paramètres de la Google Search Console.

  2. Cliquez sur «Utilisateurs et autorisations». Vous verrez une liste de tous les utilisateurs de Google Search Console avec leur nom, leur adresse e-mail et leur rôle.
  3. Vérifiez les utilisateurs répertoriés. Vérifiez qu’aucun propriétaire inconnu n’est répertorié.

Si vous découvrez un propriétaire de Google Search Console escroc, veuillez effectuer les actions suivantes:

  1. Cliquez sur les trois points à côté du propriétaire du site que vous souhaitez supprimer.

    Suppression du propriétaire.

  2. Cliquez sur «Gérer les propriétaires de propriétés». Vous pouvez voir ici un journal des demandes de vérification et déterminer quand les propriétaires ont été ajoutés, ainsi que la possibilité de ne pas vérifier les propriétaires de sites.

    Gérer les propriétaires.

  3. Cliquez sur “Unverify” pour tout propriétaire voyou que vous souhaitez supprimer. Cela annulera la vérification de ce compte et révoquera l’accès au compte de la console de recherche.

    Propriétaire du site non vérificateur.

Précaution supplémentaire

Site Kit by Google fournit des fonctionnalités pour réinitialiser la connexion d’un site avec Site Kit. Si vous découvrez qu’un propriétaire voyous de Google Search Console a été ajouté, nous vous recommandons de prendre l’étape supplémentaire pour réinitialiser Site Kit by Google sur votre site WordPress.

Réinitialisation du kit de site par Google:

  1. Connectez-vous à votre site WordPress et accédez au Kit de site via les “Paramètres” de Google.

    Paramètres du Kit de site par Google.

  2. Accédez à “Paramètres administrateur” et cliquez sur “Réinitialiser le kit de site”. Confirmez la réinitialisation en cliquant sur «Réinitialiser» lorsque vous y êtes invité. Cela réinitialisera votre connexion au Kit de site et vous obligera à reconnecter tous les services Google précédemment connectés.

    Réinitialisation du kit de site par Google.

Nous avons publié une règle de pare-feu le 21 avril 2020 aux utilisateurs de Wordfence Premium qui bloquera toutes les tentatives de vérification qui ne proviennent pas des administrateurs, ce qui en fin de compte offre une protection contre la création de propriétaires de Google Search Console injustifiés.

En raison de certaines limitations, le pare-feu ne peut pas empêcher l’affichage de ProxySetupURL dans le code source. Cependant, la règle de pare-feu bloquant les demandes de vérification est suffisante pour fournir une protection optimale sur un site utilisant une version vulnérable de Site Kit by Google.

Les utilisateurs gratuits de Wordfence recevront cette règle le 21 mai 2020.

21 avril 2020 – Découverte initiale et analyse de vulnérabilité. La règle de pare-feu a été publiée pour les clients Wordfence Premium. Nous avons soumis la divulgation de vulnérabilité via Google Programme de récompense pour la vulnérabilité, car cela semble être leur principal canal de divulgation de vulnérabilité.
22 avril 2020 – Le rapport de vulnérabilité a été trié et attribué par l’équipe de sécurité de Google.
30 avril 2020 – L’équipe Google Security nous informe que la vulnérabilité a été vérifiée et qu’un bogue a été déposé.
4 mai 2020Un commit apparaît dans Site Kit de Google Github Repository qui semble fournir un correctif pour la vulnérabilité.
7 mai 2020Un patch a été publié.
21 mai 2020 – Les utilisateurs de Wordfence gratuits reçoivent une règle de pare-feu.

Dans l’article d’aujourd’hui, nous avons détaillé une faille qui permettait aux utilisateurs WordPress de bas niveau de devenir propriétaire de Google Search Console en exploitant une vulnérabilité du plugin Site Kit by Google. Cette faille a été entièrement corrigée dans la version 1.8.0. Nous recommandons aux utilisateurs de mettre immédiatement à jour la dernière version disponible.

Sites en cours d’exécution Wordfence Premium sont protégés des attaques contre cette vulnérabilité depuis le 21 avril 2020. Les sites exécutant la version gratuite de Wordfence recevront cette mise à jour des règles de pare-feu le 21 mai 2020. Si vous connaissez un ami ou un collègue utilisant ce plugin sur leur site, nous vous recommandons fortement en leur transmettant cet avis afin qu’ils puissent mettre à jour et protéger leur compte Google Search Console et leur site WordPress.


Source link

%d blogueurs aiment cette page :