KrawlifySEO Crawler & Audit
  1. Home
  2. Security

Security

How to report something, and what you should know before you deploy.

Reporting a vulnerability

Email [email protected] with enough detail to reproduce the issue: affected component and version, the steps, and what an attacker gains. A proof of concept helps; a video instead of steps does not.

Please report privately first and give a reasonable window before disclosing publicly. You will get an acknowledgement, and an honest answer about whether and when it will be fixed.

This is a small project. There is no bug bounty programme and no payment — saying so plainly is fairer than leaving you to guess. Credit in the changelog is offered if you want it.

Scope

In scope: the Krawlify app (krawlify-app), the browser extension and relay (krawlify-relay), the Krawlify Agent skill (krawlify-skill), the published container images and npm package, and this website.

Please report privately rather than opening a public issue on any of those repositories.

Out of scope: findings that depend on a compromised machine or a browser the attacker already controls; missing hardening headers with no demonstrated impact; automated scanner output without a working exploit; social engineering; denial of service by volume; and anything requiring an installation the operator deliberately misconfigured.

Do not test against infrastructure that is not yours. Everything here is self-hostable — stand up your own instance and attack that.

Security properties worth knowing

The token is a credential

The extension generates a 256-bit token and the relay accepts it as both identity and authorisation. Anything holding that token can drive your browser and read whatever the crawl reads. Treat it like a password:

  • Use an https:// relay address for any relay that is not on your own machine, so the token is not sent in the clear.
  • Use Renew Token on the options page if it may have leaked — the old one stops working immediately.
  • The relay has no token of its own and keeps no list of valid ones, so there is no central store to breach; equally, there is nothing to revoke centrally.

The relay binds to loopback by default

Out of the box the relay listens on 127.0.0.1:9333. Exposing it more widely is a deliberate act, and if you do it you should also set --tls-cert/--tls-key, restrict --allow-host and --allow-origin, and use --trust-proxy only behind a proxy you actually control.

Failures are deliberately uninformative

No token and an unknown token produce indistinguishable responses, so the relay cannot be used to test whether a token is valid. This is intentional; do not "fix" it in a fork.

The blast radius is the crawler's tabs

An attacker holding a token can open tabs and drive them in your profile — which, since it is your signed-in profile, may reach authenticated pages. They cannot read tabs you opened, your history, bookmarks or saved passwords, because the extension never requests the permissions that would allow it. Cookies are reachable only if you granted the optional permission.

Chrome tells you

While the extension is attached, Chrome shows its "started debugging this browser" notification. It cannot be suppressed, and its presence when you did not start a crawl is a signal worth acting on.

This website

krawlify.com is static, serves no user content, runs no server-side code, and loads nothing from a third party. It is delivered with a content security policy that forbids external connections, framing and form submission, along with X-Content-Type-Options, Referrer-Policy and X-Frame-Options.

A machine-readable version of this contact information is at /.well-known/security.txt.