Security Audits

AdPriva has not published a third-party security audit, and it does not run a bug bounty programme. This page lists the security testing that runs today and the design choices that limit what an attacker could reach.

Testing on every change

  • Each code repository (API, ingest server, anchor worker, scoring service, explorer, console, tag and WordPress plugin) runs its tests in GitHub Actions on every change.
  • The Go services also run static analysis: golangci-lint in the API and the ingest server, go vet in the explorer.
  • The Anchor.sol contract has a Foundry test suite, including fuzz tests that run 10,000 times in CI.
  • The API has tests that put marker values in a proof’s private fields (IP address, user agent, page URL, referrer, site, nonce) and fail if any marker shows up in a public response.

Design choices that limit exposure

  • The tag holds no secret. There is no key in the browser to steal. The server signs every proof.
  • The tag sends no cookies. Its requests are made with credentials turned off, and it sets no cookies or browser storage.
  • The public record is minimal. Public lookups return a proof’s id, status, score, verdict and anchor references, and nothing that names a publisher, site, page or visitor.
  • Only hashes go on-chain. Horizen receives a batch’s Merkle root, never event data. Batches anchored before 2026-09-28 also sent zkVerify a zero-knowledge proof, again with no event data.
  • Raw IP addresses and user agents expire. They are emptied from proof records after 30 days (current production setting).

Reporting a security problem

Email hello@adpriva.com.