Hans StudyNetwork and security consultant

State of cyber hygiene · Cambridge · October 2026

State of cyber hygiene in Cambridge

89 small businesses in Cambridge publish a website on a domain they own. Over the last week of October 2026 I checked every one of those domains the way a stranger on the internet could: public DNS records, one visit to the home page over HTTP and one over HTTPS, the response headers, and the certificate. No logins, no scanning. Nothing past the home page was touched, and this is what the public footprint of Cambridge's small-business economy looks like.

89 domainsPassive checks onlyCollected October 27, 2026No business named
5+Exposed to the PHP takeover bugon an unpatched or unsupported PHP version; a floor, since most sites hide the version. The bug was disclosed last week and is being exploited now
89Businesses checkedCambridge (85), Ayr (4)
90%Can be impersonated by email65 of 72 have no enforced DMARC, so mail can be forged as them
12Running outdated software7 behind on WordPress, 5 on a code library retired in 2016
86%HTTPS set up properly1 serve a broken or missing certificate
6Dead or parked domains4 no longer work, 2 show a placeholder; an abandoned domain can be re-registered by anyone
00 · Headline findingsfor press

The headline findings

Every number here comes from the public-facing side, public DNS records and a single visit to each home page, collected October 27, 2026. No business is named. This is not name and shame. It is meant to draw attention to things we do not normally pay attention to. The sections that follow break each figure down by sector, town, and platform, and the method note at the end explains exactly what was checked, and what was not.

  1. A critical flaw in PHP, the software that runs most of the web, was disclosed on October 21, 2026 and is already being exploited. It hands an attacker control of the server with no password needed, and the US cyber agency ordered federal systems to patch it by October 29. At least 5 small-business sites in Cambridge are advertising a PHP version that is either unpatched against this bug or on a release line that will never get a fix. That is a floor, not a ceiling: most sites hide their version, so the real number is higher.
  2. 89 small businesses in Cambridge with a website of their own were checked from the outside for this report, the way any visitor could. Local firms, shops, trades, clinics, and contractors, not chains or government.
  3. 65 of them (90%) can be impersonated in email. Without an enforced DMARC record, a scammer can send an invoice or a quote that looks like it came from the business, and the customer's mail provider has nothing to stop it. Only 7 (10%) have that protection turned on.
  4. 37 of these sites run WordPress. Of the 20 that publish their version number, 7 are behind on security updates, and 5 sites across the sample still load a code library that stopped getting fixes in 2016. 9 of them take card payments through WooCommerce on that same software.
  5. 73 sites (86%) have HTTPS set up properly. The other 12 reachable sites do not fully, and 1 serve a broken, expired, or missing certificate, so a customer typing in a card number or a password cannot be sure who is receiving it.
  6. 8 business domains have no SPF record at all, the most basic of the email checks. Anyone, anywhere, can send mail as those businesses with nothing to flag it as fake.
  7. 4 domains these businesses are still listed under no longer work, and 2 more show a parking or placeholder page. An abandoned domain can be re-registered by anyone, who then receives the email meant for that business.
  8. Scored across every outside check, the typical business in Cambridge lands at 66 out of 100. 10 earned an A. 0 failed outright.
01 · Email authentication72 mail domains

Most domains can be impersonated by email

72 of the 89 domains accept email (they publish an MX record). Of those, 64 (89%) publish an SPF record. 8 don't. Without SPF, any mail server on earth can send as that business and the receiving side has nothing to check it against. DMARC, the record that tells receivers what to do with mail that fails the checks, exists on 30 domains (42%), but only 7 (10%) set a policy of quarantine or reject. The other 23 sit at p=none, which is monitoring mode... the record is there, it just doesn't do anything to a forged message.

6 have neither SPF nor DMARC. 3 (4%) have the full set that mail providers now expect from senders: SPF, a DKIM signature at a standard selector, and an enforcing DMARC policy. Those are the domains whose invoices land in the inbox when Gmail and Microsoft tighten their rules again.

The most common mail platform here is Google Workspace (23 domains). Platform matters less than configuration. Tenants on Microsoft 365 in this sample enforce DMARC 19% of the time and Google Workspace tenants 9%; the defaults on both are p=none or nothing at all, so the numbers reflect whoever set the tenant up, not the vendor.

Why this one matters most

Invoice fraud against small businesses almost always starts with a message that appears to come from the business or from one of its suppliers. SPF, DKIM, and an enforcing DMARC policy are the 3 DNS records that let the big mail providers drop those messages before a customer sees them. They cost nothing but time.

EM-01

Of 72 domains that receive mail

  • SPF published64 · 89%
  • SPF ends in -all18 · 25%
  • DMARC published30 · 42%
  • DMARC enforced7 · 10%
  • DMARC reporting (rua)15 · 21%
  • DKIM at a known selector22 · 31%
  • SPF + DKIM + enforced DMARC3 · 4%
  • Neither SPF nor DMARC6 · 8%

MTA-STS 0 · TLS-RPT 0 · BIMI 0 · multiple SPF records 1 · SPF over 10 lookups 0

EM-02

DMARC policy

  • Reject3 · 4%
  • Quarantine4 · 6%
  • None (monitor only)23 · 32%
  • No record42 · 58%
  • Invalid0 · 0%
EM-03

Google Workspace against Microsoft 365

Of mail domains on eachMicrosoft 365Google WorkspaceFiltered (Proofpoint, Mimecast, etc.)Host-bundled
Domains1623105
SPF present100%91%100%80%
SPF ends in -all88%9%20%0%
DMARC present50%39%30%40%
DMARC enforced19%9%0%0%
DMARC p=none31%30%30%40%
DKIM found19%30%40%0%
SPF + DKIM + enforced DMARC6%0%0%0%
Mean score67616357

DKIM is checked at each platform's default selectors (google; selector1 and selector2). A tenant signing at a custom selector shows as not found.

All mail platforms

PlatformDomainsEnforcep=noneNo DMARC
Google Workspace239%30%61%
Microsoft 3651619%31%50%
Other (small host or self-run)1315%23%62%
Mail filtering or relay service100%30%70%
Hosting-bundled email50%40%60%
Rackspace40%75%25%
GoDaddy email10%0%100%
02 · Website configuration85 HTTPS sites

Nearly every site has HTTPS. Fewer than half use it fully

85 sites answer over HTTPS. 84 of those presented a certificate that validates cleanly; 1 did not (expired, issued for a different hostname, self-signed, or an incomplete chain), and 0 sites answer on plain HTTP only. 74 (87%) redirect a plain-HTTP visitor to the encrypted site. HSTS, the header that keeps browsers on HTTPS after the first visit, is set on 35 (41%).

Most negotiated TLS 1.3 (81) or 1.2 (4) with a modern client, which is the default on current hosting. 0 servers (0% of the 85 that completed the test) still accept a TLS 1.1 handshake. Browsers dropped it in 2020. 42 sites (49%) send none of the 4 basic browser security headers (Content-Security-Policy, X-Frame-Options, X-Content-Type-Options, Referrer-Policy). 12 (14%) announce their web server or PHP version in the response headers; 3 of the 8 that name a PHP version are on a release that no longer gets security fixes (anything before PHP 8.2 as of October 2026).

WB-01

Of 85 sites answering on HTTPS

  • Certificate validates84 · 99%
  • HTTP redirects to HTTPS74 · 87%
  • HSTS header35 · 41%
  • HSTS max-age 1 year+19 · 22%
  • Refuses TLS 1.185 · 100%
  • X-Content-Type-Options38 · 45%
  • X-Frame-Options27 · 32%
  • Referrer-Policy14 · 16%
  • Content-Security-Policy13 · 15%
  • Permissions-Policy14 · 16%
  • Behind Cloudflare27 · 32%
PHP2Shell, 6 days in

On October 21, 2026 the PHP project shipped emergency releases for 2 unauthenticated remote code execution bugs, CVE-2026-109618 and CVE-2026-109619, rated 9.2 and reachable before any application code runs on Apache mod_php. CISA added both to its Known Exploited Vulnerabilities list on October 26; Amazon saw attempts against its honeypots 4 days before the disclosure. Fixed releases are 8.2.35, 8.3.36, 8.4.27, and 8.5.12. PHP 8.1 and older got no release. In Cambridge, 8 sites announce their PHP version in a response header: 3 already show a fixed build, 2 show a supported branch below the fix, and 3 run a branch with no release at all, mostly 7.4.33 and 8.1.34. A version string can lag a distribution backport, so "below fix" means "cannot be ruled out from the outside", and the far larger group of sites that hide the version are unknown either way.

WB-02

Certificate problems

  • hostname mismatch1 · 100%
  • HTTP only, no HTTPS0 · 0%

Certificates past their expiry date as served: 0

WB-03

Certificate issuers

  • Let's Encrypt61 · 72%
  • Google Trust Services15 · 18%
  • Sectigo3 · 4%
  • GoDaddy2 · 2%
  • ZeroSSL1 · 1%
  • Amazon1 · 1%
WB-04

PHP versions announced

  • PHP 7.4.332 · 25%
  • PHP 8.3.362 · 25%
  • PHP 8.4.271 · 12%
  • PHP 8.2.341 · 12%
  • PHP 8.3.351 · 12%
  • PHP 8.0.301 · 12%

Fixed for PHP2Shell: 8.2.35, 8.3.36, 8.4.27, 8.5.12 · no release for 8.1 and older

Web server as announced

  • Cloudflare27 · 32%
  • nginx16 · 19%
  • Apache15 · 18%
  • LiteSpeed10 · 12%
  • Squarespace9 · 11%

Version string exposed: 12 · X-Powered-By PHP: 8 · PHP 7.4.33 (2), 8.3.36 (2), 8.4.27 (1), 8.2.34 (1)

03 · Platforms and CMS37 WordPress

WordPress carries the region, and tells you its version

37 of the 85 reachable sites run WordPress. That's 44%. 20 of them print the exact WordPress version in the page source. 13 are on a supported branch (7.1.3 or 7.0.7 at the time of the check) and 7 are behind it. On its own, a version string is a shopping list for anyone matching known exploits to targets, and hiding it is a one-line change. Loading every site in a real browser cut the unidentified group to 16 by resolving the JavaScript-rendered builders the plain fetch could not read.

11 WordPress sites load Elementor and 9 run WooCommerce, so card data and customer accounts sit on the same install as the brochure pages. 5 sites still ship jQuery 1.x. That library line went end-of-life in 2016. The second-largest group after WordPress is hosted builders (Wix, Squarespace, Shopify, GoDaddy, Duda, Webflow), where the vendor patches the platform; those sites score better on headers and TLS for no effort on the owner's part, and worse on the things the owner still controls, like DMARC.

Reading the plugin list

Plugin names below come from asset paths on the home page, so they undercount anything that doesn't load on the front page. Counts are how many sites load each plugin, not how many are out of date; that can't be read from the outside without probing, which this survey doesn't do.

PL-01

Platform split, 85 sites

  • WordPress37 · 44%
  • Custom / unidentified16 · 19%
  • Wix12 · 14%
  • Squarespace9 · 11%
  • Shopify2 · 2%
  • Webflow2 · 2%
  • Duda2 · 2%
  • Static / JS framework2 · 2%
  • Weebly1 · 1%
  • Site1231 · 1%
PL-02

WordPress versions seen

  • WordPress 7.1.x12 · 60%
  • WordPress 6.4.x2 · 10%
  • WordPress 6.9.x2 · 10%
  • WordPress 7.0.x2 · 10%
  • WordPress 6.6.x1 · 5%
  • WordPress 6.8.x1 · 5%

Version visible 20 of 37 · current 7.1.3: 12 · supported branch: 13 · behind: 7

PL-03

Most-loaded WordPress plugins

  • contact-form-711 · 30%
  • elementor10 · 27%
  • revslider9 · 24%
  • elementor-pro8 · 22%
  • js_composer6 · 16%
  • instagram-feed4 · 11%
  • smart-slider-33 · 8%
  • wpforms3 · 8%
  • google-site-kit3 · 8%
  • premium-addons-for-elementor2 · 5%
  • add-to-any2 · 5%
  • supreme-modules-pro-for-divi2 · 5%
PL-04

Front-end markers

  • Elementor11 · 13%
  • WooCommerce9 · 11%
  • jQuery 1.x (EOL)5 · 6%
  • Any jQuery version visible41 · 48%
  • Generator tag present31 · 36%
  • Mixed content on page6 · 7%

Median plugins visible per WordPress site: 5

04 · Hosting, CDN, and WAF85 sites

Where the sites live, and what stands in front of them

27 of the 85 reachable sites (32%) answer through Cloudflare, which means the origin server is hidden and the free tier of a web application firewall is at least available to them. Counting Cloudflare, Sucuri, Imperva, Akamai, AWS CloudFront and WAF, Azure Front Door, and Fastly together, 28 sites (33%) have some edge service in front of them. The rest answer straight from the host. For 30 WordPress sites that means the login page, the XML-RPC endpoint, and the REST API are a direct hop from the internet with nothing rate-limiting them.

58 sites show their serving network. 26% of those are served from Canada and 71% from the United States, mostly Amazon and Google plus the big American shared hosts. 11 sites share one of 1 addresses that each carry 10 or more businesses from this sample, which is normal for shared hosting and worth knowing when one of them is compromised. 38 sites negotiate HTTP/3, 78 HTTP/2, and 7 are still on HTTP/1.1 only; 20 domains (22%) have an IPv6 address.

Reading the hosting table

Hosting is identified from the network that announces the serving IP address (Team Cymru's ASN data) and reverse DNS, nothing else. A site behind Cloudflare is listed as Cloudflare because its origin is not visible. Wix, Squarespace, Shopify, and Webflow sit partly on Amazon and Google networks and partly on their own, so the platform counts in section 03 and the network counts here differ.

HS-01

Serving network

  • Cloudflare (origin hidden)27 · 32%
  • Google Cloud11 · 13%
  • Squarespace9 · 11%
  • Amazon Web Services9 · 11%
  • Other (named host)6 · 7%
  • OVH6 · 7%
  • Hostinger3 · 4%
  • GoDaddy2 · 2%
  • Canadian hosting company2 · 2%
  • IONOS2 · 2%
  • Ontario ISP2 · 2%
  • Fastly1 · 1%
  • Vultr1 · 1%
  • Liquid Web / Nexcess1 · 1%
HS-02

Edge, CDN, and WAF signatures

  • Cloudflare27 · 32%
  • Squarespace platform9 · 11%
  • Wix platform9 · 11%
  • Google Cloud LB2 · 2%
  • Webflow platform1 · 1%
  • AWS CloudFront1 · 1%

Signatures come from response headers and cookies. Wordfence and other WordPress security plugins leave no front-page marker, so they are not counted either way.

HS-03

Country of the serving network

  • US68 · 80%
  • CA15 · 18%
  • LT1 · 1%
  • UA1 · 1%

Cloudflare and other US-registered networks front 27 sites whose origin may be anywhere.

HS-04

Protocol and transport

  • HTTP/338 · 45%
  • HTTP/278 · 92%
  • HTTP/1.1 only7 · 8%
  • IPv6 address20 · 24%
  • HSTS preload-ready3 · 4%
  • 90-day certificates (automated)78 · 92%
  • Longer certificates (manual renewal)6 · 7%
  • security.txt published1 · 1%
HS-05

What the page loads from other people

  • Runs Google Analytics45 · 54%
  • Runs the Meta pixel14 · 17%
  • Any third-party tracker47 · 57%
  • No tracker at all36 · 43%
  • Pulls from 20+ outside origins7 · 8%
  • Self-contained (own domain only)9 · 11%

Rendered in a headless browser. Median 7 third-party origins per site, up to 34. Trackers and outside origins are a privacy and supply-chain exposure: each one sees the visitor and can change what runs on the page.

HS-06

Tracker types seen

  • Google Analytics45 · 54%
  • Google Ads18 · 22%
  • Meta Pixel14 · 17%
  • Microsoft Clarity6 · 7%
  • Bing/UET3 · 4%
  • LinkedIn Insight1 · 1%
05 · DNS and domains89 domains

DNS is where most of the easy wins sit

2 domains (2%) are DNSSEC-signed, and 2 publish a CAA record limiting which authorities can issue their certificates. 4 domains in the directories no longer resolve or don't answer at all, and 2 show a parking or placeholder page; those are mostly businesses that let a domain lapse while directories still list it, which is its own risk when someone else registers it and starts receiving their mail.

DN-01

DNS hosting

  • GoDaddy20 · 22%
  • Other (small host or registrar)18 · 20%
  • Registrar DNS17 · 19%
  • Cloudflare11 · 12%
  • Web host DNS7 · 8%
  • Wix6 · 7%
  • Managed DNS5 · 6%
  • AWS Route 532 · 2%
DN-02

Domain state

  • Live74 · 83%
  • Blocked or error (4xx/5xx)9 · 10%
  • Dead (DNS)3 · 3%
  • Parked / placeholder2 · 2%
  • No response1 · 1%

DNSSEC signed 2 · CAA 2 · apex resolves but www doesn't 1

06 · By sector and municipalitygroups of 10+

Who is doing well, and who isn't

Mean score among scored domains, DMARC enforcement among mail-receiving domains, and clean HTTPS among reachable sites. Groups under 10 domains are left out so a single business can't be picked out of a row.

SEC-01

By sector

SectornScoreDMARC enforcedHTTPS ok
Healthcare/Dental106311%100%
SEC-02

By municipality

MunicipalitynScoreDMARC enforcedHTTPS ok
Cambridge81659%99%

By platform

PlatformnScoreHSTSNo headers
WordPress376216%70%
Custom / unidentified165919%62%
Wix127575%0%
Squarespace965100%0%
07 · Scorecard85 scored · mean 66 · median 65

How Cambridge grades out

Each domain that answers gets a score out of 100 from the checks above (40 points email, 40 website, 20 platform disclosure; the method section has the rubric). The 4 domains that no longer resolve are counted in section 05 and left out of the scoring. Across the 85 scored domains in Cambridge the mean is 66 and the median 65. 10 (12%) grade A, which in this rubric means every outside-visible control a small business can set is set. 0 grade F.

SC-02

Most common findings

  • No DKIM at common selectors50 · 56%
  • No HSTS header50 · 56%
  • SPF ends in softfail (~all)43 · 48%
  • No DMARC record42 · 47%
  • No security headers42 · 47%
  • DMARC p=none (monitor only)23 · 26%
  • No MX record (domain does not receive mail)13 · 15%
  • Server/PHP version disclosed in headers12 · 13%
  • WordPress 7.1.3 version visible12 · 13%
  • HTTP does not redirect to HTTPS10 · 11%
  • No SPF record8 · 9%
  • Mixed content (http6 · 7%
SC-01

Grade distribution

10A · 12%
23B · 27%
37C · 44%
15D · 18%
0F · 0%

A 85+ · B 70+ · C 55+ · D 40+ · F under 40

08 · What to fix firstin order

8 changes that cover most of the gap

Every one of these is a DNS record, a header, or a setting in a platform the business already pays for. None of them need new software.

  1. Publish a DMARC record and move it to p=quarantine, then p=reject, once the SPF and DKIM sources are listed. Most providers document this in under a page.
  2. Make sure SPF ends in -all (or ~all while testing) and lists only the services that send as the domain. Delete the record for any domain that doesn't send mail and add a null MX.
  3. Turn on DKIM signing in the mail platform. Microsoft 365 and Google Workspace both leave it off until an admin enables it.
  4. Redirect HTTP to HTTPS and add an HSTS header. On WordPress that is a 2-line change in the web server config or a setting in the host's panel.
  5. Remove the version strings: the WordPress generator tag, the Server and X-Powered-By headers. None of them are needed for the site to work.
  6. Add the 4 basic headers (X-Content-Type-Options, X-Frame-Options or a frame-ancestors CSP, Referrer-Policy, Permissions-Policy). Cloudflare and most hosts can inject them without touching the site.
  7. Update PHP off 7.x and jQuery off 1.x, or move the site to a host that does it for you.
  8. Let expired or unused domains go properly: either keep renewing them with a null MX and SPF -all, or accept that the next registrant inherits the name.

Next step

Your own line from this data

Every business in the sample can have its own results, with the fix list for its platform, from the underlying dataset. Media and economic development offices can get the full regional breakdown, including the sector and municipality tables at finer grain, under the same no-names rule.

Book a scoping callOne-page summary (PDF)Media requestsGet in touch

09 · Method and limitsOctober 27, 2026

How the numbers were collected

  • Sample: 89 businesses listed in public chamber of commerce, BIA, economic development, and municipal directories for Cambridge, kept only when the directory itself published a website on the business's own domain. National chains, government, hospitals, school boards, and franchise corporate sites were excluded. One row per root domain.
  • DNS: A, NS, MX, TXT (SPF), _dmarc TXT, DKIM at the selectors each mail platform uses by default plus a short generic list, _mta-sts, _smtp._tls, default._bimi, and CAA, resolved over DNS-over-HTTPS with DNSSEC validation reported by the resolver.
  • Web: one request to http://domain/ following redirects, one to https://domain/ (falling back to www), response headers, certificate subject, issuer, and expiry as presented, negotiated TLS version, and a single TLS 1.1-capped handshake to see whether the server accepts it. Platform fingerprints come from the home page HTML only (generator tag, asset paths, well-known builder markers).
  • Browser render: each reachable site was also loaded once in a headless Chromium browser as a normal visitor, to read the rendered page (which resolves JavaScript-built sites a plain fetch cannot fingerprint), the trackers it runs, and the third-party origins it loads. One home-page view, no clicks, no form entry.
  • Hosting: the serving IP of the final HTTPS hostname was resolved over DNS, then its reverse DNS name and the announcing network (ASN and country) were read from Team Cymru's public DNS service. CDN and WAF signatures come from response header names and cookie names on the home page. One extra request per site fetched /.well-known/security.txt.
  • PHP2Shell exposure is read from the version string in X-Powered-By or Server headers only, compared against the fixed releases in the PHP advisory of October 21, 2026. No request was sent that touches either vulnerability. Distributions such as Debian and Ubuntu backport fixes without changing the version number, so an old-looking version is not proof of exposure, and a hidden version is not proof of safety.
  • Not done: no vulnerability scanning, no port scans, no login or admin pages, no crawling beyond the home page, no mail sent, no interaction with any form. Everything here is what a browser and a DNS resolver see on a first visit.
  • Limits: DKIM is checked at known selectors only, so a domain signing at a custom selector shows as not found. Fingerprints identify a platform from markers on one page and can miss heavily customized installs. Results are a point-in-time read on the date shown and sites change daily. Sector labels are approximate.
  • Scoring (100 points): email 40 (SPF present 10, SPF -all 5, DMARC present 10, DMARC quarantine or reject 10, DKIM found 5; domains with no MX are scored on the remaining 60), website 40 (valid HTTPS 15, HTTP to HTTPS redirect 5, HSTS 5, TLS 1.1 refused 5, X-Content-Type-Options 2, frame protection 3, Referrer-Policy 2, enforced CSP 3), platform 20 (no server version in headers 5, no CMS version in page 5, no jQuery 1.x 5, no mixed content 5). Grades: A 85+, B 70+, C 55+, D 40+, F below 40.
  • Validation and environment correction: the data was cross-checked against an independent direct-network re-scan of the same domains (1,167 records corrected, 273 confirmed). Two collection-environment artifacts were found and removed. Serving IP addresses that the collection proxy had returned as a placeholder were replaced with the real addresses resolved over DNS. Security headers that the original high-concurrency pass had missed on some responses were recovered by taking, for each site, the union of three careful measurements, since a scan can miss a header that is present but never reports one that is absent. Certificate issuers and site status were checked and found accurate as originally collected.
  • No business is named in this report. Each business can get its own line from the underlying data on request.

Author: Hans Study, CISSP, independent network and security consultant, Ontario, Canada. Published as part of the close of Cyber Security Awareness Month, October 2026. Companion reports: London-Middlesex, Sarnia-Lambton, Chatham-Kent, Kitchener-Waterloo, Brantford-Brant, Windsor-Essex. The combined numbers and the 5 fixes are on the series hub.