ESL Security Response · Updated August 2026

An Answer to Tannenbaum's Concern

How we secure AI-generated HTML presentations before they reach the client's browser

9Security checks
3Defense layers
74+Files protected
The Concern

What Tannenbaum Raised

“Everything sent to the customer's browser is visible!”Amit Tannenbaum, Data Analyst Team Lead, LinkedIn post · July 2026

Tannenbaum warned that AI-generated HTML can expose hidden JavaScript, embedded prompts, API keys, and sensitive business logic.

01 SAST
02 HTML Validator
03 Secrets Scanning
04 Privacy Scan
05 Business Logic
06 DAST
07 Network Inspection
08 Content Review
09 SHA-256
Our Response

We Ran the Assessment on Ourselves

Using the Claude Mythos Security workflow, we assessed 74 AI-generated HTML presentations at zuwasi.github.io/Public-html-pages.

✓ What We Did NOT Find

  • No leaked AI prompts
  • No real API keys
  • No data exfiltration
  • No malicious JS
  • No eval()
  • No prompt injection

⚠ What We DID Find

  • 2 ERROR — plaintext passwords
  • 7 WARN — tracking, SRI, YouTube
  • 325 INFO — missing CSP, unsafe links
  • Cosmetic password gates
  • CDN without integrity
  • Visitor metadata sent
The Gap

General-Purpose Scanners Are Not Enough

In the original 74-file assessment, dependency, secrets, and SAST scans found no application vulnerabilities. The HTML-specific review still found the content and privacy issues below.

FindingWhy general scanners miss itOur Checker ID
Password 86999 in comment5-digit number, no secret patternSEC-01
Password rty768 in JSShort string in comparisonSEC-02
Abacus tracking fetch()Intentional analytics, not vulnSEC-03
CDN script without SRISupply-chain best practiceSEC-04
Missing CSP on 73 filesDefense-in-depth gapSEC-05
YouTube tracking embedsPrivacy concernSEC-06
Leaked AI promptsContent review, not SASTSEC-07
Unsafe target=_blankHTML best practiceSEC-08
Unversioned CDN scriptVersion pinning, not CVESEC-09
The Solution

A 3-Layer Defense Pipeline

Endor catches what it can, our custom checker catches the rest, and git hooks + CI enforce both.

1. Endor Labs

Dependency & Known-Secret Scan

Catches API keys, CVEs, SBOM.

2. Custom Pre-Publication Checker

9 HTML-Specific Checks

Passwords, tracking, SRI, CSP, prompts.

3. Git Hooks + GitHub Actions

Automated Enforcement

Pre-commit, pre-push, CI gate.

Layer 1

Endor Labs — The Foundation

✓ What Endor Catches

  • Real API keys (sk-*, AKIA*, ghp_*)
  • Dependency CVEs (npm, pip, maven)
  • Known secret formats (AWS, GitHub, private keys)

✗ What Endor Misses

  • Short passwords (86999, rty768 — no entropy match)
  • Intentional tracking (analytics fetch ≠ vulnerability)
  • Content-level issues (missing CSP, leaked prompts, SRI)
THE BLIND SPOT

Why Not Just Ask AI to Review Its Own HTML?

"If Claude generated the HTML, asking Claude to review it is like asking a developer to review their own code — same blind spots in both roles."The Self-Attribution Problem

✗ AI Reviewing AI

  • Shared blind spots — AI doesn't flag what it doesn't consider dangerous
  • Pattern reinforcement — "That's just context I wrote"
  • False confidence — "I reviewed it, it's clean"
  • Adversarial risk — prompt injection can fool the reviewer too

✓ Pure Regex Scanner

  • No AI bias — doesn't "think", just matches strings
  • No context reasoning — flags sk-proj-abc123 every time
  • Caught what AI missed — password 86999, prompt leakage, tracking
  • Zero LLM tokens — runs in milliseconds, not minutes

Diverse tools catch what each other miss. That's defense in depth.

Layer 2

The Pre-Publication Checker

A dependency-free Python CLI and local browser GUI perform nine deterministic HTML-specific checks.

python -m pip install "git+https://github.com/zuwasi/html-report-security-checker.git@6d21c5c"
html-security-checker report.html
html-security-checker reports/ --fail-on-warning
html-security-checker --gui
IDTannenbaum mappingGeneral scannerIDTannenbaum mappingGeneral scanner
SEC-01SecretsMay missSEC-06PrivacyMay miss
SEC-02Business logicMay missSEC-07ContentMay miss
SEC-03Network / trackingMay missSEC-08HTML safetyMay miss
SEC-04SRI / supply chainMay missSEC-09Version pinningMay miss
SEC-05CSPMay miss
Layer 3

Automated Enforcement

Three enforcement points. No manual step required.

Pre-Commit Hook

Runs on git commit, scans staged .html files, stays fast, blocks on error.

Pre-Push Hook

Runs on git push, full repository scan with -FailOnWarning, blocks on warning.

GitHub Actions CI

Runs on PR/push to main, blocks merge, and generates the SHA-256 manifest.

Result

Tannenbaum's Checklist — Covered by the Pipeline

#Checklist itemEndorCustom checkerCI/CD
1SASTPASSPASSAuto
2HTML ValidatorMANUALReview
3Secrets ScanningPASSPASSAuto
4Privacy ScanPASSAuto
5Business LogicPASSAuto
6DASTMANUALReview
7Network InspectionPASSAuto
8Content ReviewPASSAuto
9SHA-256PASSAuto

7 of 9 automated · HTML validation and DAST remain explicit human-review activities.

Verification

What the HTML-Specific Review Found

2ERRORS
7WARNINGS
325INFO

Key point

All 334 content, privacy, and browser-safety findings required the HTML-specific layer. This complements—not replaces—SAST, secrets, dependency, and CVE scanning.

Tannenbaum Item #9

SHA-256 Artifact Integrity

CI generates a manifest automatically on every push to main.

# SHA256-MANIFEST.txt
73e4c9...  ./index.html
a510bd...  ./answer-to-tannenbaum-concern.html
19d0a7...  ./security-review/index.html

How it works

The security-check.yml workflow computes SHA-256 for every HTML file and uploads the manifest as a GitHub artifact retained for 90 days.

Practical

How to Use the Pipeline

1. Install

git clone https://github.com/zuwasi/html-report-security-checker.git
cd html-report-security-checker
python -m pip install .

2. Scan

html-security-checker report.html
html-security-checker reports/ --fail-on-warning
html-security-checker --gui

3. Enforce

./install.sh
git add report.html
git commit
git push

Hooks and CI prevent unsafe reports from being published accidentally.

August 2026 Hardening Update

We Reassessed the Checker Itself

Application

  • 51 automated tests passed
  • Zero runtime dependencies
  • Wheel build and Bandit scan passed

Local GUI

  • Same-origin POST enforcement
  • JSON-only API requests
  • Cross-site file writes blocked

Git & CI

  • Hooks no longer import from an untrusted repo root
  • Bash hooks forced to LF line endings
  • Workflow permissions reduced

CVE Review

  • CVE-2024-42471 fixed in download-artifact 4.1.3+
  • Exact v4.3.0 commit pinned
  • All GitHub Actions pinned by SHA
The Answer

Tannenbaum Was Right — Build a Safety Gate

Defense in depth

Dependency + CVE scanning
  → Deterministic HTML checks
  → Git hooks + CI
  → Human review
  → Publish with evidence

Use it. Improve it. Challenge it.

HTML Report Security Checker is MIT licensed. Contributions, new detection rules, false-positive reports, stars, and practical feedback are welcome.

← Swipe to navigate →