Technical audit · 2026-05-06

kapo.ee

Internal Security Department

The website of a counterintelligence service, visited by informants, journalists, and people with sensitive data. Three American trackers are wired into the code and fire on every page navigation — but all are blocked by the CSP. No data got out. The only shield is a single line of security policy.

Timeline of the leak

+220–235 ms · on load
Three trackers (GTM, IBM Instana, Cloudflare Insights) initiate requests on every navigation between pages. All return status 0 — blocked by the CSP.
Consent banner
Absent — and none is needed. Zero Set-Cookie, zero consent requests. There is nothing to ask about: no data is transmitted anywhere.
Session total
No data left anywhere. This is one of the cleanest results in this series in terms of actual data transfer. But the architecture is built with the trackers ready to run.

Declared versus actual

Policy: data is not transferred to third parties (section 2.5) — заявлен
+ Google Tag Manager — GTM-5XSF9BX, wired into the code — не заявлен
+ IBM Instana — eum.instana.io, wired into the code — не заявлен
+ Cloudflare Insights — static.cloudflareinsights.com, wired into the code — не заявлен

Transfer timings

+220 ms eum.instana.io

IBM Instana — End User Monitoring (IBM Corporation, USA). Status 0

+221 ms static.cloudflareinsights.com

Cloudflare Insights — an analytics beacon. Status 0

+235 ms www.googletagmanager.com

Google Tag Manager, container GTM-5XSF9BX. Status 0

Detected trackers

Indicators of GDPR non-compliance

Context

Kaitsepolitseiamet (KaPo) is Estonia’s counterintelligence service: countering terrorism, protecting the constitutional order, countering foreign intelligence services. Informants, investigative journalists, and people with sensitive data about corruption and security threats come here. HAR from May 6, 2026: 167 requests, 5 domains.

What is done correctly — almost everything

All three external trackers are blocked by the CSP, all with status 0. There is no Google Fonts, no YouTube, no DoubleClick, no browser-update.org, no advertising networks. Zero Set-Cookie, zero consent requests — and none are needed, because there is nothing to ask about. In terms of actual data transfer, this is one of the cleanest results in the series: no data left anywhere.

What is wired into the code — and why it matters

All three trackers are blocked, but all three are wired into the site’s code — this is a fundamental distinction. The GTM container GTM-5XSF9BX, eum.instana.io (IBM Instana, performance monitoring from IBM, USA), and static.cloudflareinsights.com — three American services in the code of a counterintelligence agency’s site. The decision to integrate them was made. The CSP made a different decision — to block them. The requests fire in sync, eight times per session: +220 ms, +221 ms, +235 ms.

A contradiction with the policy

KaPo’s policy is written in detail and competently: it contains special grounds for restricting data subjects’ rights (julgeolekuasutuste seadus §21-1), which is justified for an intelligence service. But section 2.5 states that personal data is not disclosed or transferred to third parties, except where required by law. Meanwhile, GTM, IBM Instana, and Cloudflare Insights are wired into the code. If the CSP stopped working, data would flow to Google, IBM, and Cloudflare automatically on every visit — with no legal basis. The policy declares an absence of transfer; the code contains three tools for doing exactly that.

Conclusion

This is not a violation in the classic sense — no data got out. But it is a documented architectural vulnerability. The CSP is the only line of defense: if a developer updates the site and accidentally changes the security policy, all three trackers would start working instantly, because they are already wired in and waiting. On a commercial site, this is technical debt. On a counterintelligence agency’s site, it’s a systemic risk. Two opposing decisions coexist in the same code: “integrate” and “block.” For now, the second one wins. This time — it held. But trust is not architecture.

Evidence
Original (audit)
HAR file: ee/kapo-ee-2026-05-06.har
SHA-256: f324ba95f03267d5d233d2517bd2aa6de6fff16c5d4dedf123b3b3f07b3d70ef
Re-check snapshot
Awaiting changes
HAR files are stored on EU infrastructure (Proton Drive). SHA-256 is published for integrity verification.
IMPORTANT: before filing a complaint with the regulator, first contact the company directly and give it 30 days to respond. Without this step the regulator may reject the complaint. Details and a template letter to the company are in the Methodology.
Ready-to-send complaint letter

Where to file: Estonian Data Protection Inspectorate (AKI) — write to info@aki.ee

Important: AKI only handles submissions in Estonian. Translate the letter before sending.

To: Estonian Data Protection Inspectorate (AKI)
From: [Your name], [contact email]

1. Subject of the complaint
I am filing a complaint regarding the processing of my personal data by the website kapo.ee.

2. Circumstances
I visited the website kapo.ee and found indications that the processing of my personal data does not comply with the GDPR. The technical analysis published on gdpru.eu on 6 May 2026 (open methodology, reproducible measurements) documents the following indications:

1) Google Tag Manager, IBM Instana, and Cloudflare Insights are not declared as potential data recipients, despite being wired into the site's code.

2) The integrity and confidentiality principle: the code contains tools for transmitting data to three American corporations, contradicting the declared policy.

Full technical documentation is published at: https://gdpru.eu/en/audits/ee-kapo-ee/

3. Provisions violated
GDPR Art. 13(1)(e); GDPR Art. 5(1)(f)

4. Request
I request that you investigate the violations described and apply the measures provided for in Article 58(2) GDPR.

5. Attachments
The full evidence base — the HAR file, its SHA-256 checksum and the quotation from the site's privacy policy documenting the stated contradiction — is published and verifiable at the link in point 2 above.

[Date]                                    [Signature / name]