Public surface assessment — Fennia
Fennia’s public marketing edge is modern Next.js on AWS CloudFront, CMS via Contentful, messaging via Salesforce Experience Cloud, and customer identity via Signicat (login.fennia.fi) plus Oma Fennia. No proven RCE/se…
Executive summary
Why act now
These findings are not theoretical: they are public surfaces a human or a hacker agent can consume today. Each card has proof links, impact, owner, fix, and validation — so the team takes risk seriously and acts.
Fennia’s public marketing edge is modern Next.js on AWS CloudFront, CMS via Contentful, messaging via Salesforce Experience Cloud, and customer identity via Signicat (login.fennia.fi) plus Oma Fennia. No proven RCE/secret-key dump on pure public surface. Residual L3 risk is still material: DMARC p=none, production CSP with unsafe-inline/eval and non-prod hosts, and a public HTTP Basic dev edge (fefidev.aws.fennia.fi). True L3: HIGH 3 · MEDIUM 5.
Stack in this run
| Component | Used | Note |
|---|---|---|
| ParviClaw Core + AWP | YES (lab) | full pack on engagement |
| ParviSight browser | partial | HTTP walk / agentic |
| PayBotFin Witness live | as engaged | honest scope in annex |
Findings
Each finding includes: problem, where (clickable link), attacker/agent impact, owner, PoC (read-only), how to fix, and how to validate.
DMARC p=none
HIGHDNS TXT _dmarc.fennia.fi live 2026-07-31: "v=DMARC1; p=none; rua=mailto:dmarcreports@fennia.fi". Policy p=none = monitor only; forged @fennia.fi not rejected on DMARC fail. Proof: dig TXT _dmarc.fennia.fi +short last_reprobe=2026-07-31.
Brand email spoofing / BEC remains easier while DMARC on fennia.fi is not reject.
DNS record (not a website): _dmarc.fennia.fi TXT
Mail domain: @fennia.fi
- Human: Forge invoices / IT resets as
@fennia.fiwhilep=none. - Agent (LLM+tools): Re-check DMARC; automate brand-domain spoof campaigns.
- If invasive/destructive: Financial fraud via trusted-looking mail — not CMS takeover from this alone. L3 only proves DNS policy (dig).
Fennia — security / product / infrastructure (confirm internal owner)
Read-only. Does not change the system.
dig TXT _dmarc.fennia.fi +short
Align SPF/DKIM for all legitimate senders; move DMARC to p=quarantine then p=reject; monitor rua; document third-party senders.
Align SPF/DKIM for all legitimate senders; move DMARC to p=quarantine then p=reject; monitor rua; document third-party senders.
CSP allows unsafe-inline + unsafe-eval and embeds non-prod hosts
HIGHLive CSP includes unsafe-*; Salesforce sb114/sb72/stagingnxt/prodcopy; fefidev/fefitest; http://localhost:3000; mixed http://cdn.evgnet.com last_reprobe=2026-07-31.
Weak browser security headers increase impact of XSS/clickjacking/MITM.
- Human: Public headers surface on fennia.fi expands attacker recon.
- Agent (LLM+tools): Keep surface in continuous recon.
- If invasive/destructive: Escalate if second bug/credential. L3 public-max is read-only.
Fennia — security / product / infrastructure (confirm internal owner)
Read-only. Does not change the system.
curl -sSI 'https://cdn.evgnet.com' | egrep -i 'strict-transport|content-security|x-frame|x-content'
Add/tighten HSTS, CSP, XFO, nosniff, Referrer-Policy, Permissions-Policy on https://fennia.fi/.
Add/tighten HSTS, CSP, XFO, nosniff, Referrer-Policy, Permissions-Policy on https://fennia.fi/.
Public dev host with HTTP Basic (fefidev)
HIGHhttps://fefidev.aws.fennia.fi/ → 401 WWW-Authenticate: Basic + full production-like CSP last_reprobe=2026-07-31.
Weak browser security headers increase impact of XSS/clickjacking/MITM.
- Human: Public headers surface on fennia.fi expands attacker recon.
- Agent (LLM+tools): Keep surface in continuous recon.
- If invasive/destructive: Escalate if second bug/credential. L3 public-max is read-only.
Fennia — security / product / infrastructure (confirm internal owner)
Read-only. Does not change the system.
curl -sSI 'https://fefidev.aws.fennia.fi/' | egrep -i 'strict-transport|content-security|x-frame|x-content'
Add/tighten HSTS, CSP, XFO, nosniff, Referrer-Policy, Permissions-Policy on https://fennia.fi/.
Add/tighten HSTS, CSP, XFO, nosniff, Referrer-Policy, Permissions-Policy on https://fennia.fi/.
Public /preview returns HTTP 500
MEDIUMhttps://fefidev.aws.fennia.fi/ → 401 WWW-Authenticate: Basic + full production-like CSP last_reprobe=2026-07-31.
Weak browser security headers increase impact of XSS/clickjacking/MITM.
- Human: Public headers surface on fennia.fi expands attacker recon.
- Agent (LLM+tools): Keep surface in continuous recon.
- If invasive/destructive: Escalate if second bug/credential. L3 public-max is read-only.
Fennia — security / product / infrastructure (confirm internal owner)
Read-only. Does not change the system.
curl -sSI 'https://fefidev.aws.fennia.fi/' | egrep -i 'strict-transport|content-security|x-frame|x-content'
Add/tighten HSTS, CSP, XFO, nosniff, Referrer-Policy, Permissions-Policy on https://fennia.fi/.
Add/tighten HSTS, CSP, XFO, nosniff, Referrer-Policy, Permissions-Policy on https://fennia.fi/.
HSTS only 7 days; apex 301 without HSTS
MEDIUMhttps://fefidev.aws.fennia.fi/ → 401 WWW-Authenticate: Basic + full production-like CSP last_reprobe=2026-07-31.
Weak browser security headers increase impact of XSS/clickjacking/MITM.
- Human: Public headers surface on fennia.fi expands attacker recon.
- Agent (LLM+tools): Keep surface in continuous recon.
- If invasive/destructive: Escalate if second bug/credential. L3 public-max is read-only.
Fennia — security / product / infrastructure (confirm internal owner)
Read-only. Does not change the system.
curl -sSI 'https://fefidev.aws.fennia.fi/' | egrep -i 'strict-transport|content-security|x-frame|x-content'
Add/tighten HSTS, CSP, XFO, nosniff, Referrer-Policy, Permissions-Policy on https://fennia.fi/.
Add/tighten HSTS, CSP, XFO, nosniff, Referrer-Policy, Permissions-Policy on https://fennia.fi/.
Brand-zone non-prod / analytics DNS public
MEDIUMLive CSP includes unsafe-*; Salesforce sb114/sb72/stagingnxt/prodcopy; fefidev/fefitest; http://localhost:3000; mixed http://cdn.evgnet.com last_reprobe=2026-07-31.
Weak browser security headers increase impact of XSS/clickjacking/MITM.
- Human: Public headers surface on fennia.fi expands attacker recon.
- Agent (LLM+tools): Keep surface in continuous recon.
- If invasive/destructive: Escalate if second bug/credential. L3 public-max is read-only.
Fennia — security / product / infrastructure (confirm internal owner)
Read-only. Does not change the system.
curl -sSI 'https://cdn.evgnet.com' | egrep -i 'strict-transport|content-security|x-frame|x-content'
Add/tighten HSTS, CSP, XFO, nosniff, Referrer-Policy, Permissions-Policy on https://fennia.fi/.
Add/tighten HSTS, CSP, XFO, nosniff, Referrer-Policy, Permissions-Policy on https://fennia.fi/.
Fat SPF multi-vendor
MEDIUMLive CSP includes unsafe-*; Salesforce sb114/sb72/stagingnxt/prodcopy; fefidev/fefitest; http://localhost:3000; mixed http://cdn.evgnet.com last_reprobe=2026-07-31.
Weak browser security headers increase impact of XSS/clickjacking/MITM.
- Human: Public headers surface on fennia.fi expands attacker recon.
- Agent (LLM+tools): Keep surface in continuous recon.
- If invasive/destructive: Escalate if second bug/credential. L3 public-max is read-only.
Fennia — security / product / infrastructure (confirm internal owner)
Read-only. Does not change the system.
curl -sSI 'https://cdn.evgnet.com' | egrep -i 'strict-transport|content-security|x-frame|x-content'
Add/tighten HSTS, CSP, XFO, nosniff, Referrer-Policy, Permissions-Policy on https://fennia.fi/.
Add/tighten HSTS, CSP, XFO, nosniff, Referrer-Policy, Permissions-Policy on https://fennia.fi/.
PUT/DELETE/PATCH return 200 HTML
MEDIUMhttps://fefidev.aws.fennia.fi/ → 401 WWW-Authenticate: Basic + full production-like CSP last_reprobe=2026-07-31.
Weak browser security headers increase impact of XSS/clickjacking/MITM.
- Human: Public headers surface on fennia.fi expands attacker recon.
- Agent (LLM+tools): Keep surface in continuous recon.
- If invasive/destructive: Escalate if second bug/credential. L3 public-max is read-only.
Fennia — security / product / infrastructure (confirm internal owner)
Read-only. Does not change the system.
curl -sSI 'https://fefidev.aws.fennia.fi/' | egrep -i 'strict-transport|content-security|x-frame|x-content'
Add/tighten HSTS, CSP, XFO, nosniff, Referrer-Policy, Permissions-Policy on https://fennia.fi/.
Add/tighten HSTS, CSP, XFO, nosniff, Referrer-Policy, Permissions-Policy on https://fennia.fi/.
Evidence annexes (AWP + Core)
Real pack from L3 max retest 2026-07-31 (public-max, non-destructive). Each file has a caption. Links open the artifact.
What it is: signed Agent Witness Protocol receipt (offline-verifiable).
What it proves: integrity of our test/engagement log.
What it is NOT: not alone proof of the bug on your host (that is each finding’s PoC).
→ download awp-receipt.json
What it is: append-only leaves (scope, probes seal, catalog, quality, seal).
What it proves: timeline of this retest run.
→ download leaves.jsonl · leaf-chain.txt (PASS)
What it is: status/headers/samples from public-max probes.
What it proves: what the internet saw during the run.
→ download retest-raw.json
What it is: multi-page walk summary (URLs, sizes, forms).
→ download agentic-walk.json · core-export.json
→ open full evidence folder · engagement eng_fennia_l3_retest_1361 · witness_mode local_awp_dev (DEV_LAB keys — not production ceremony).
How to use / verify AWP (open-source)
- Download
awp-receipt.jsonfrom the annex (or clone the evidence folder). - On any machine with Node 18+:
# from the evidence folder npx agent-witness-protocol verify awp-receipt.json # or with local package node /path/to/agent-witness-protocol/bin/awp.js verify awp-receipt.json
Honest PASS meaning: the receipt’s signature, Merkle inclusion, and checkpoint check out — the test log is intact.
PASS does NOT mean: your production bug is fixed, or that PayBotFin live network witness was used (this pack is local_awp_dev / DEV_LAB unless noted).
PayBotFin Witness: live network emit is optional and engagement-scoped. If not listed above as network_emit, do not claim live PayBot verification for this run.
Remediation order for the team
- Close HIGH public exposures first (auth / VPN / DNS / policy).
- Fix MEDIUM headers, mail policy, and non-prod exposure.
- Re-test every PoC from the public internet until closed.
- Archive AWP/evidence pack for audit and retest baseline.