ShadowTrackr

RSS feed

Scoped API keys and signed webhooks: least privilege, built in

09 November 2026

Until now, an API key in ShadowTrackr could do everything your account could do. That is convenient, but it is not how you want to hand out access to a script, a SIEM or a colleague's dashboard. We added two things to fix that: API keys with a limited scope, and HMAC signatures on webhooks. Both help with the security measures that EU regulation asks of you.

Scoped API keys

When you create an API key, you now choose what it is allowed to do. A key for your reporting dashboard only needs to read. A key for a ticketing integration might only need to read findings. A key that can change settings or delete things is something very few integrations need.

Some examples of how this works in practice:

  • Read-only key for a BI tool or dashboard. If it leaks, nobody can change anything in your account.
  • One key per integration. If you stop using a tool, you revoke its key and nothing else breaks.
  • Narrow keys for contractors and partners, with only the access they need for the job.

Existing keys keep working as before. You can replace them with scoped keys when it suits you. The API documentation lists the available scopes.

Signed webhooks (HMAC)

An alert can call a webhook, but until now the receiving side had no way to know that the call really came from ShadowTrackr. Anyone who found your endpoint URL could send it fake alerts.

You can now turn on HMAC signing for a webhook. ShadowTrackr calculates a signature over the payload with a secret that only you and ShadowTrackr know, and sends it in a header with every call. Your endpoint calculates the same signature and compares. If it does not match, you throw the request away.

This gives you two things:

  • Authenticity. The message really comes from ShadowTrackr.
  • Integrity. The payload was not changed on the way.

The secret is stored encrypted and shown only once, like the custom header values. It works with all payload types, so it also covers JSON results, Splunk HEC and the rest. The documentation has a short verification example you can paste into your own code.

Why this fits EU regulation better

Regulation like NIS2, DORA and the GDPR does not tell you which header to use. It does expect you to show that you control who can access what, and that you protect your data in transit and know where it came from. These two options map onto that quite directly:

  • Least privilege. NIS2 asks for access control and risk-based security measures, and the GDPR asks for appropriate technical measures (Article 32). A key that can only do its one job is the simplest way to show this.
  • Smaller blast radius. If a key leaks, the damage is limited to its scope, and you revoke that one key. That makes incidents easier to contain and easier to report.
  • Supply chain and third parties. NIS2 and DORA both put weight on third-party risk. Giving a partner a narrow key instead of full access is a control you can explain to an auditor.
  • Integrity of security data. Alerts often trigger real actions: a ticket, a page to an on-call engineer, a firewall change. Signed webhooks make sure those actions are triggered by real alerts only.

To be clear, no feature makes you compliant on its own. What these two do is give you controls you can point to, instead of a shared key and an unauthenticated endpoint. ShadowTrackr is hosted in Germany and run by an EU company, so your data stays inside the EU while you do this.

What to do next

  1. Make a list of the places where you use a ShadowTrackr API key.
  2. Create a scoped key for each one, with the least access it needs, and revoke the old key.
  3. Turn on HMAC signing for your webhooks and add the verification to your receiving endpoint.

Spotting subdomain takeovers, and better alert webhooks

02 November 2026

Every domain collects old DNS records. A campaign site that was shut down, a test server that was never removed, a hosting account that expired. The record stays, and it keeps pointing at a server that is no longer yours. That is how subdomain takeovers happen. I added a report for this to ShadowTrackr, and I extended the webhook options so you can get the alerts in the tools you already use.

The Subdomain Takeover Report

The new report lists web addresses of yours that point to a server that is not set up for them. You can run it from the search bar with $subdomain_takeover_report. It also appears in the report library under the DNS category, where you can schedule it.

Each result is one of two things:

  • Possible takeover. The server shows someone else's live website for your name. Whoever runs that server could publish content under your domain.
  • Stale DNS record. Only a placeholder answers: a registrar's "reserved" page, a for-sale page, or the default page of a hosting company or web server. Nobody else's website is there, but the record serves no purpose and could still be taken over later.

Addresses that point to another domain of your own organisation are left out, because those are not findings. Possible takeovers are listed first. The fix is usually simple: remove the DNS record, or point the name back to a server you control.

The weekly PDF report now has a "Subdomain takeover" section too. It sits in the urgent part of the report, so you will see these findings without having to go looking for them.

More webhook options

An alert can call a webhook instead of sending an email. Choose Call webhook as the action and pick a payload:

  • Results as JSON, or No data (just a ping that the alert fired)
  • Microsoft Teams (Adaptive Card), Slack, Mattermost, Discord and Google Chat messages
  • PagerDuty, which creates an incident
  • Splunk HEC event, one event per result row

You can also add up to 10 custom headers to every call, for example an Authorization header to authenticate to the receiving tool. Header values are stored encrypted and shown masked after you save.

A good combination is an alert on $subdomain_takeover_report that posts to your security channel. The same applies to any other query.

One thing to know: ShadowTrackr verifies the TLS certificate of your endpoint, and there is no option to switch that off. A self-signed certificate is refused. This matters for self-managed Splunk, which ships with a self-signed certificate. The documentation has step-by-step instructions for each tool.

Find every PHP server affected by CVE-2026-109618 and CVE-2026-109619

21 October 2026

Find every PHP server affected by CVE-2026-109618 and CVE-2026-109619

Two new PHP vulnerabilities, CVE-2026-109618 and CVE-2026-109619, are out. There are also referred to as php2shell

Run this in ShadowTrackr to find all your php servers:

$software_overview_report software=php* last_seen>-7d

You get every host where PHP was detected in the last 7 days, across all your domains, subdomains and IPs, with the detected version for each.

  • software=php* matches every PHP version string.
  • last_seen>-7d drops decommissioned hosts, so you only see what's exposed now.

Patch internet-facing hosts first

Older posts >