
An Answer to Tannenbaum's Concern
How we secure AI-generated HTML presentations before they reach the client's browser
What Tannenbaum Raised
Tannenbaum warned that AI-generated HTML can expose hidden JavaScript, embedded prompts, API keys, and sensitive business logic.
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
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.
| Finding | Why general scanners miss it | Our Checker ID |
|---|---|---|
| Password 86999 in comment | 5-digit number, no secret pattern | SEC-01 |
| Password rty768 in JS | Short string in comparison | SEC-02 |
| Abacus tracking fetch() | Intentional analytics, not vuln | SEC-03 |
| CDN script without SRI | Supply-chain best practice | SEC-04 |
| Missing CSP on 73 files | Defense-in-depth gap | SEC-05 |
| YouTube tracking embeds | Privacy concern | SEC-06 |
| Leaked AI prompts | Content review, not SAST | SEC-07 |
| Unsafe target=_blank | HTML best practice | SEC-08 |
| Unversioned CDN script | Version pinning, not CVE | SEC-09 |
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 ScanCatches API keys, CVEs, SBOM.
2. Custom Pre-Publication Checker
9 HTML-Specific ChecksPasswords, tracking, SRI, CSP, prompts.
3. Git Hooks + GitHub Actions
Automated EnforcementPre-commit, pre-push, CI gate.
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)
Why Not Just Ask AI to Review Its Own HTML?
✗ 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-abc123every 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.
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
| ID | Tannenbaum mapping | General scanner | ID | Tannenbaum mapping | General scanner |
|---|---|---|---|---|---|
| SEC-01 | Secrets | May miss | SEC-06 | Privacy | May miss |
| SEC-02 | Business logic | May miss | SEC-07 | Content | May miss |
| SEC-03 | Network / tracking | May miss | SEC-08 | HTML safety | May miss |
| SEC-04 | SRI / supply chain | May miss | SEC-09 | Version pinning | May miss |
| SEC-05 | CSP | May miss |
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.
Tannenbaum's Checklist — Covered by the Pipeline
| # | Checklist item | Endor | Custom checker | CI/CD |
|---|---|---|---|---|
| 1 | SAST | PASS | PASS | Auto |
| 2 | HTML Validator | — | MANUAL | Review |
| 3 | Secrets Scanning | PASS | PASS | Auto |
| 4 | Privacy Scan | — | PASS | Auto |
| 5 | Business Logic | — | PASS | Auto |
| 6 | DAST | — | MANUAL | Review |
| 7 | Network Inspection | — | PASS | Auto |
| 8 | Content Review | — | PASS | Auto |
| 9 | SHA-256 | — | PASS | Auto |
7 of 9 automated · HTML validation and DAST remain explicit human-review activities.
What the HTML-Specific Review Found
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.
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.
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.
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

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.