DeepHat
Back to the ledger

completed · Tier 1 · 7 findings

whitehat-swarm-lab.burnersforwinter.workers.dev

Reviewed Sun, 25 Oct 2026 22:48:07 GMT. Email: skipped.

# Passive security review — whitehat-swarm-lab.burnersforwinter.workers.dev

Run: f45f6577-9a2b-4275-abfd-884489aabd8e  
Status: **completed**  
Reviewed: `whitehat-swarm-lab.burnersforwinter.workers.dev`, `www.whitehat-swarm-lab.burnersforwinter.workers.dev`  
Started: 2026-10-26T15:27:53.406Z  
Requests: 12 of 40 budgeted, at most 1/s  
Discovered pages: 0
Tier: 1

## Summary

**7** configuration issues: 1 high, 4 medium, 2 low.

## Checks

| Check | Host | Severity | Result |
| --- | --- | --- | --- |
| The site serves HTTPS | whitehat-swarm-lab.burnersforwinter.workers.dev, www.whitehat-swarm-lab.burnersforwinter.workers.dev | High | fail |
| HTTP Strict Transport Security | whitehat-swarm-lab.burnersforwinter.workers.dev, www.whitehat-swarm-lab.burnersforwinter.workers.dev | Medium | fail |
| Content Security Policy | whitehat-swarm-lab.burnersforwinter.workers.dev, www.whitehat-swarm-lab.burnersforwinter.workers.dev | Medium | fail |
| MIME type sniffing is disabled | whitehat-swarm-lab.burnersforwinter.workers.dev, www.whitehat-swarm-lab.burnersforwinter.workers.dev | Low | fail |
| Framing is restricted | whitehat-swarm-lab.burnersforwinter.workers.dev, www.whitehat-swarm-lab.burnersforwinter.workers.dev | Medium | fail |
| Referrer policy | whitehat-swarm-lab.burnersforwinter.workers.dev, www.whitehat-swarm-lab.burnersforwinter.workers.dev | Low | fail |
| Cookie attributes | whitehat-swarm-lab.burnersforwinter.workers.dev, www.whitehat-swarm-lab.burnersforwinter.workers.dev | Info | info |
| Server version disclosure | whitehat-swarm-lab.burnersforwinter.workers.dev, www.whitehat-swarm-lab.burnersforwinter.workers.dev | Info | pass |
| Cross-origin resource sharing | whitehat-swarm-lab.burnersforwinter.workers.dev, www.whitehat-swarm-lab.burnersforwinter.workers.dev | Info | pass |
| HTTP redirects to HTTPS | whitehat-swarm-lab.burnersforwinter.workers.dev | Medium | fail |
| Git metadata is not exposed | whitehat-swarm-lab.burnersforwinter.workers.dev, www.whitehat-swarm-lab.burnersforwinter.workers.dev | Info | pass |
| Environment file is not exposed | whitehat-swarm-lab.burnersforwinter.workers.dev, www.whitehat-swarm-lab.burnersforwinter.workers.dev | Info | pass |
| Server status page is not exposed | whitehat-swarm-lab.burnersforwinter.workers.dev, www.whitehat-swarm-lab.burnersforwinter.workers.dev | Info | pass |
| security.txt | whitehat-swarm-lab.burnersforwinter.workers.dev, www.whitehat-swarm-lab.burnersforwinter.workers.dev | Low | info |
| TLS certificate | whitehat-swarm-lab.burnersforwinter.workers.dev | Info | pass |

## Findings

### 1. The site serves HTTPS (High)

An HTTPS request to www.whitehat-swarm-lab.burnersforwinter.workers.dev failed: write EPROTO 80BDC819657F0000:error:0A000410:SSL routines:ssl3_read_bytes:ssl/tls alert handshake failure:../ssl/record/rec_layer_s3.c:918:SSL alert number 40


**Suggested fix.** Serve the site over HTTPS with a valid certificate and redirect HTTP traffic.

### 2. HTTP Strict Transport Security (Medium)

No Strict-Transport-Security header was returned.

**Suggested fix.** Add Strict-Transport-Security: max-age=31536000; includeSubDomains. Start with a short max-age while testing.

### 3. Content Security Policy (Medium)

No Content-Security-Policy header was returned.

**Suggested fix.** Start with Content-Security-Policy-Report-Only. Inventory external scripts and inline code, then test a site-specific policy before enforcing it.

### 4. Framing is restricted (Medium)

Neither X-Frame-Options nor a CSP frame-ancestors directive restricts framing.

**Suggested fix.** Send X-Frame-Options: SAMEORIGIN or a CSP frame-ancestors directive.

### 5. HTTP redirects to HTTPS (Medium)

A plain HTTP request returned 404 instead of an HTTPS redirect.

**Suggested fix.** Redirect every HTTP request to the HTTPS origin with a 301 or 308.

### 6. MIME type sniffing is disabled (Low)

No X-Content-Type-Options header was returned.

**Suggested fix.** Add X-Content-Type-Options: nosniff.

### 7. Referrer policy (Low)

No Referrer-Policy header was returned.

**Suggested fix.** Add Referrer-Policy: strict-origin-when-cross-origin.

## Patch

Configuration suggestions for staging review; see `patch/README.md` for placement and verification.

### _headers

```
# Review in staging. CSP is report-only and does not remediate the CSP finding.
/*
  Strict-Transport-Security: max-age=31536000; includeSubDomains
  Content-Security-Policy-Report-Only: default-src 'self'; object-src 'none'; base-uri 'self'; frame-ancestors 'none'; script-src 'self'
  X-Content-Type-Options: nosniff
  X-Frame-Options: SAMEORIGIN
  Referrer-Policy: strict-origin-when-cross-origin
```

### nginx.conf

```
# Review in staging. CSP is report-only; tailor it before enforcement.
# Add inside the server { } block, then reload nginx.
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header Content-Security-Policy-Report-Only "default-src 'self'; object-src 'none'; base-uri 'self'; frame-ancestors 'none'; script-src 'self'" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
```

### apache.conf

```
# Review in staging. CSP is report-only; tailor it before enforcement.
# Add inside the <VirtualHost> block or .htaccess, then reload Apache.
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Header always set Content-Security-Policy-Report-Only "default-src 'self'; object-src 'none'; base-uri 'self'; frame-ancestors 'none'; script-src 'self'"
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
```

## Requires site-specific review

- https-availability
- csp
- http-redirect

## Application findings (deep pass)

The deep pass completed with no confirmed application findings. This does not establish complete coverage or prove the site is secure.
## Basis and limits

The baseline is passive: GET and HEAD against public addresses only. DNS is resolved once and connections are pinned; the site stays inside its own registrable domain; redirects are reported, never followed; the rate and request budget are enforced.

Checks cover transport, response headers, cookie flags, version banners, CORS, the certificate, and a few well-known exposure paths.

## What this review did not do

No exploitation, login, form submission, credential use, file upload, or application-logic testing in the passive baseline. No finding is confirmed exploitable; exposures are recorded as directly observed. Nothing was changed on the server.

## Delivery

`owner-email.md` and `github-issue.md` are generated from these findings. Nothing is sent unless the `send` command runs.

Suggested patch

Review before applying.

# Review in staging. CSP is report-only and does not remediate the CSP finding.
/*
  Strict-Transport-Security: max-age=31536000; includeSubDomains
  Content-Security-Policy-Report-Only: default-src 'self'; object-src 'none'; base-uri 'self'; frame-ancestors 'none'; script-src 'self'
  X-Content-Type-Options: nosniff
  X-Frame-Options: SAMEORIGIN
  Referrer-Policy: strict-origin-when-cross-origin