Independent cybersecurity research projects by Eric Romang. Each project is self-contained with its own methodology, data, and findings.
Models and datasets are published on Hugging Face.
Last reviewed: 2026-08-07.
| Project | State | Last activity | Deliverable |
|---|---|---|---|
| VLAI-Leakage-Validation | Scoped, nothing measured | 2026-08-07 | Pending — five tracks defined, none started |
| Exploit-Hazard-Validation | Tracks complete, one item of work left | 2026-08-06 | Internal validation record — not sent to CIRCL (user decision) |
| CyberScale | Active — Phase 2 assessed, four costed options open | 2026-08-06 | MCP server + 4 published models |
| CNVD-Dataset-Validation | Complete, dormant | 2026-03-24 | Consolidated report; GitHub issue drafted, unfiled |
| LLM-Benchmark | Phase 1 + 2 complete, dormant | 2026-03-28 | 2 published Hugging Face corpora |
Each project carries a BACKLOG.md with live task state, open questions, decisions taken, and dropped items with their reason. The two dormant projects' backlogs were written retroactively on 2026-08-07 and say so — items that emerged mid-run and never reached a committed file are not recoverable.
Does train/test leakage inflate the reported accuracy of CIRCL's English severity classifier?
vulnerability-severity-classification-roberta-base reports accuracy 0.8186 / F1 macro 0.7510, trained on the 745,736-entry vulnerability-scores corpus. The same team's Chinese model was found four months earlier to carry 15.6% train/test leakage from duplicated descriptions, because the split was made on identifiers rather than on text — its reported 78.3% was really 76.6%.
id mixing CVE, GHSA and PYSEC. A GHSA advisory and its CVE are often the same vulnerability under two identifiers.Independent external validation of the local exploit hazard model (arXiv:2607.24618, Shaffer & Voicu) and of its first production implementation, vulnerability-lookup#530.
The model turns EPSS into a defender's own daily exploit hazard rate. The authors' internal sensitivity analysis is thorough, so this project does not re-run it — it tests external validity: whether the calibrated k = 0.605 is a property of exploitation timing or of CISA's federal curation, whether the hazard ranking beats the EPSS score it derives from, whether predicted event counts match observed ones, and how wrong the independence assumption is on real software.
k is unstable — it moves with catalog (0.52 curated / 0.72 observational), with snapshot date (0.684 → 0.576 over 19 months), and with the tail (dropping the longest 10% of TTEs moves it more than the entire replication gap). Ranking quality is monotone decreasing in k, so refitting k to your own catalogue degrades prioritisation, with nothing in the API signalling the trade. 99.5% of CVEs are never exploited rather than still waiting, which makes the mixture-cure model the right one and the naive censored fit an overcorrection.Multi-phase cyber severity assessment MCP server using fine-tuned ModernBERT classifiers.
Context-aware vulnerability severity scoring that goes beyond CVSS base scores. Combines three fine-tuned ModernBERT classifiers (vulnerability scorer, contextual severity, incident T/O classifiers) with NIS2 sector rules, a ChromaDB vulnerability knowledge store, and the EU Cyber Blueprint dual-scale incident classification matrix, all exposed via the Model Context Protocol (MCP).
Independent technical validation of CIRCL's CNVD dataset and MacBERT severity classification model.
When CIRCL published a 127,562-entry Chinese vulnerability dataset and a fine-tuned severity classifier on Hugging Face, I ran a multi-track review to test the claims. The validation covers dataset overlap with NVD/CVE (81% map to existing CVEs), model accuracy on unleaked data (76.6% vs reported 78.3%), systematic bias detection (keyword dependency, negation blindness), and dataset provenance analysis (CNVD publication rates declining from 94% to 4% post-RMSV regulations).
Research benchmark for evaluating geopolitical bias in locally deployed LLMs applied to cyber threat assessments.
Tests whether local language models exhibit actor-asymmetric framing when generating EU-relevant cyber threat landscape assessments. Seven models from six providers across three continents (US, China, EU) are evaluated on escalation framing, hedging modulation, certainty calibration, and rhetorical amplification. All experiments run fully offline via Ollama.
These projects report to be read by the maintainer of the thing under test. That sets the conventions:
All research uses Python 3.10+, runs on Apple Silicon, and is designed for full local reproducibility. No cloud APIs are required for core experiments. Claude Code (Anthropic) was used for code generation, analysis, and report drafting across all projects.
48 commits
Python
96.4%
Shell
3.2%
Independent cybersecurity research projects by Eric Romang. Each project is self-contained with its own methodology, data, and findings.
Models and datasets are published on Hugging Face.
Last reviewed: 2026-08-07.
| Project | State | Last activity | Deliverable |
|---|---|---|---|
| VLAI-Leakage-Validation | Scoped, nothing measured | 2026-08-07 | Pending — five tracks defined, none started |
| Exploit-Hazard-Validation | Tracks complete, one item of work left | 2026-08-06 | Internal validation record — not sent to CIRCL (user decision) |
| CyberScale | Active — Phase 2 assessed, four costed options open | 2026-08-06 | MCP server + 4 published models |
| CNVD-Dataset-Validation | Complete, dormant | 2026-03-24 | Consolidated report; GitHub issue drafted, unfiled |
| LLM-Benchmark | Phase 1 + 2 complete, dormant | 2026-03-28 | 2 published Hugging Face corpora |
Each project carries a BACKLOG.md with live task state, open questions, decisions taken, and dropped items with their reason. The two dormant projects' backlogs were written retroactively on 2026-08-07 and say so — items that emerged mid-run and never reached a committed file are not recoverable.
Does train/test leakage inflate the reported accuracy of CIRCL's English severity classifier?
vulnerability-severity-classification-roberta-base reports accuracy 0.8186 / F1 macro 0.7510, trained on the 745,736-entry vulnerability-scores corpus. The same team's Chinese model was found four months earlier to carry 15.6% train/test leakage from duplicated descriptions, because the split was made on identifiers rather than on text — its reported 78.3% was really 76.6%.
id mixing CVE, GHSA and PYSEC. A GHSA advisory and its CVE are often the same vulnerability under two identifiers.Independent external validation of the local exploit hazard model (arXiv:2607.24618, Shaffer & Voicu) and of its first production implementation, vulnerability-lookup#530.
The model turns EPSS into a defender's own daily exploit hazard rate. The authors' internal sensitivity analysis is thorough, so this project does not re-run it — it tests external validity: whether the calibrated k = 0.605 is a property of exploitation timing or of CISA's federal curation, whether the hazard ranking beats the EPSS score it derives from, whether predicted event counts match observed ones, and how wrong the independence assumption is on real software.
k is unstable — it moves with catalog (0.52 curated / 0.72 observational), with snapshot date (0.684 → 0.576 over 19 months), and with the tail (dropping the longest 10% of TTEs moves it more than the entire replication gap). Ranking quality is monotone decreasing in k, so refitting k to your own catalogue degrades prioritisation, with nothing in the API signalling the trade. 99.5% of CVEs are never exploited rather than still waiting, which makes the mixture-cure model the right one and the naive censored fit an overcorrection.Multi-phase cyber severity assessment MCP server using fine-tuned ModernBERT classifiers.
Context-aware vulnerability severity scoring that goes beyond CVSS base scores. Combines three fine-tuned ModernBERT classifiers (vulnerability scorer, contextual severity, incident T/O classifiers) with NIS2 sector rules, a ChromaDB vulnerability knowledge store, and the EU Cyber Blueprint dual-scale incident classification matrix, all exposed via the Model Context Protocol (MCP).
Independent technical validation of CIRCL's CNVD dataset and MacBERT severity classification model.
When CIRCL published a 127,562-entry Chinese vulnerability dataset and a fine-tuned severity classifier on Hugging Face, I ran a multi-track review to test the claims. The validation covers dataset overlap with NVD/CVE (81% map to existing CVEs), model accuracy on unleaked data (76.6% vs reported 78.3%), systematic bias detection (keyword dependency, negation blindness), and dataset provenance analysis (CNVD publication rates declining from 94% to 4% post-RMSV regulations).
Research benchmark for evaluating geopolitical bias in locally deployed LLMs applied to cyber threat assessments.
Tests whether local language models exhibit actor-asymmetric framing when generating EU-relevant cyber threat landscape assessments. Seven models from six providers across three continents (US, China, EU) are evaluated on escalation framing, hedging modulation, certainty calibration, and rhetorical amplification. All experiments run fully offline via Ollama.
These projects report to be read by the maintainer of the thing under test. That sets the conventions:
All research uses Python 3.10+, runs on Apple Silicon, and is designed for full local reproducibility. No cloud APIs are required for core experiments. Claude Code (Anthropic) was used for code generation, analysis, and report drafting across all projects.
48 commits
Python
96.4%
Shell
3.2%