Is Gmail Snippets by cloudHQ safe?
Gmail Snippets sends every signed-in Google account email to cloudHQ's servers each time Gmail loads.
When Gmail opens, the extension checks the mail.google.com account switcher for up to 21 signed-in accounts and collects their email addresses. It then posts that list, with the active address, to cloudHQ before any login or consent dialog appears. The check repeats when the stored result is older than two weeks.
Strong link to a flagged operator: 3 of the 17 other listings from the same operator are rated high or critical for malicious behaviour. Flagged: Export Emails to Sheets by cloudHQ (high), Email Signature Generator by cloudHQ (high), Mobile Text Alerts (high).
Who publishes itcloudHQ LLC - 17 other listings from the same operator, 8 of them carrying a finding
cloudHQ LLC - 17 other listings from the same operator, 8 of them carrying a finding
What this publisher told the store about itself, and the other listings that told it the same thing.
Same store account
17 other listings published from this account, 250k+ users between them. 8 of them carry a finding.
AI-generated. Findings may contain errors. Those marked Verified have been manually reviewed.
Publishers can request a review.
Findings
Gmail Snippets sends all signed-in Google account emails to cloudhq.net
Code analysis shows the extension fetches Gmail account-switcher pages for up to 21 sessions, extracts each email address, and POSTs the list to www.cloudhq.net before any sign-in step.
- Severity
- High unwanted
- Type
- Unexpected
- CWE
- CWE-359
- Source
- Static analysis
You open Gmail while signed in to one or more Google accounts.
The extension requests each account's switcher page and sends every email address found to cloudhq.net.
This occurs before any login or consent dialog.
- emailjane.doe@gmail.com
The active Gmail address.
- email_switcher_list["jane.doe@gmail.com","jane@acme-corp.com"]
Every signed-in Google account address found.
- email_or_loginjane.doe@gmail.com
Same active address, repeated.
- chrome_extension_namegmail_snippets
Which cloudHQ feature sent it.
- switch_login1
Fixed flag set to 1.
Account enumeration and upload in content.js
fn_pre_user_check
deobfuscated/content.js:56091 fn_pre_user_check = function(e) { var t = this; try { var n = t.g_email_or_login + t.g_cloudHQ_feature_name + "_pre_check_obj", r = ((new Date).getTime(), { value: "true", timestamp: (new Date).getTime() }), i = {}; i[n] = r, chrome.storage.local.get(n, (function(r) { if (!r || !r[n] || !r[n].timestamp || r[n].timestamp < t.g_two_weeks_ago_timestamp) try { t.fn_get_switcher_account_emails((function() { t.fn_ajax({ type: "POST", url: t.g_server_url + "main_pre_user/check", dataType: "json", data: { email: t.g_email_or_login, email_switcher_list: t.g_switcher_account_emails, email_or_login: t.g_email_or_login, chrome_extension_name: t.g_cloudHQ_feature_name, switch_login: "1" }, complete: function(e, t) { if (-1 === ["error", "timeout", "abort"].indexOf(t)) try { chrome.storage.local.set(i, (function() {})) } catch (e) {} } }) }), e) } catch (e) { console.log("e:", e) }fn_get_switcher_account_emails
deobfuscated/content.js:56026 if (r.g_switcher_account_emails_index > r.g_switcher_account_emails_max_tries) return r.g_email_or_login && -1 == r.g_switcher_account_emails.indexOf(r.g_email_or_login.toLowerCase()) && r.g_switcher_account_emails.push(r.g_email_or_login.toLowerCase()), void e(); try { r.g_switcher_account_emails_index++; var i = "https://mail.google.com/mail/u/" + r.g_switcher_account_emails_index + "/?sw=2";// ... response handler, see below } })) : fetch(i, { method: "GET",- mail.google.com
Queried at /mail/u/0 to /mail/u/20 to read each signed-in account address.
- www.cloudhq.net
Receives the address list via the background PROXY_AJAX relay, which only permits cloudhq.net URLs.
Static analysis finding. This behaviour was identified by reading the shipped extension code and has not yet been reproduced in a live run. The trigger conditions and the exact data sent are read from the code, not from an observed capture.
What it can do
Permissions this extension asks for, as declared in version 1.0.1.8. Asking for a permission is not a finding on its own - it is what the extension can do if it chooses to.
Read and change your data on mail.google.com
https://mail.google.com/
Read and change your data on inbox.google.com
https://inbox.google.com/
Read and change your data on www.cloudhq.net
https://www.cloudhq.net/
Run its own code inside the pages you visit
scripting
Store data in your browser
storage
Keep running in the background while your browser is open
background
Where it sends data
Destinations our analysis observed Gmail Snippets by cloudHQ contacting. Sending data somewhere is not a finding on its own - an extension that syncs your settings has to talk to its own server - but it is where your data can go, and who else it goes to.
- www.cloudhq.netwidely used
Gmail Snippets by cloudHQ sends data to www.cloudhq.net. A widely used service: 79 other extensions we have analysed send data here.