Skip to content

Commit 8a7bde4

Browse files
feat(release): publish restructured security workspace
1 parent ee6fe9a commit 8a7bde4

86 files changed

Lines changed: 16250 additions & 8709 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.dockerignore

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@ __pycache__
1010
data/cves_*.json
1111
!data/cves_public.json
1212
!data/cves_public.provenance.json
13-
cves_full.json
14-
cves_cvss9.json
1513
evidence/
1614
update_cves.py
1715
*.log

.github/workflows/pages.yml

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
name: Pages
22

33
on:
4-
push:
4+
# Deploy only after CI has finished, so a red build never reaches production.
5+
workflow_run:
6+
workflows: [CI]
7+
types: [completed]
58
branches: [main]
69
workflow_dispatch:
710

@@ -16,12 +19,21 @@ concurrency:
1619

1720
jobs:
1821
deploy:
22+
# workflow_dispatch has no source run, so let manual deploys through.
23+
if: >-
24+
github.event_name == 'workflow_dispatch' ||
25+
github.event.workflow_run.conclusion == 'success'
1926
environment:
2027
name: github-pages
2128
url: ${{ steps.deployment.outputs.page_url }}
2229
runs-on: ubuntu-latest
2330
steps:
2431
- uses: actions/checkout@v7
32+
with:
33+
# workflow_run checks out the default branch tip by default, which can
34+
# already be a newer commit than the one CI validated. Pin to the exact
35+
# SHA that passed, otherwise the gate proves nothing.
36+
ref: ${{ github.event.workflow_run.head_sha || github.ref }}
2537
- uses: actions/upload-pages-artifact@v5
2638
with:
2739
path: .

.gitignore

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ Desktop.ini
1414
.grok/
1515
.cursor/
1616
.agent/
17+
.opencode/
1718

1819
# Python
1920
__pycache__/
@@ -41,6 +42,8 @@ playwright-report/
4142
*~
4243
*.orig
4344
*.rej
45+
tmp/
46+
tmp.count
4447

4548
# Local evidence / hunt logs (not product)
4649
evidence/
@@ -52,7 +55,7 @@ evidence/
5255
id_rsa*
5356
credentials.json
5457
secrets/
55-
update_cves.py
58+
5659

5760
# Optional local NVD cache
5861
.nvd_cache/
@@ -64,8 +67,6 @@ update_cves.py
6467
data/cves_*.json
6568
!data/cves_public.json
6669
!data/cves_public.provenance.json
67-
cves_full.json
68-
cves_cvss9.json
6970

7071
# Browser / local dumps
7172
localStorage*

CHANGELOG.md

Lines changed: 0 additions & 24 deletions
This file was deleted.

CONTRIBUTING.md

Lines changed: 0 additions & 15 deletions
This file was deleted.

DISCLAIMER.md

Lines changed: 0 additions & 15 deletions
This file was deleted.

Dockerfile

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,14 @@ FROM python:3.12-alpine
22

33
WORKDIR /app
44

5-
COPY serve.py index.html cover.jpg robots.txt sitemap.xml README.md README.ru.md DISCLAIMER.md ./
5+
COPY serve.py index.html robots.txt sitemap.xml README.md README.ru.md ./
66
COPY app/ app/
77
COPY css/ css/
88
COPY data/cves_public.json data/cves_public.provenance.json data/
99
COPY education/ education/
10-
COPY image/ image/
1110
COPY js/ js/
1211
COPY offline-cve/ offline-cve/
1312
COPY owasp-labs/ owasp-labs/
14-
COPY ru/ ru/
1513
COPY source/ source/
1614

1715
ENV ROOT_HOST=0.0.0.0 \

README.md

Lines changed: 108 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<div align="center">
22

3-
![RØOT cover](cover.jpg)
3+
![RØOT cover](source/cover.jpg)
44

55
# RØOT
66

@@ -35,9 +35,10 @@ cloud lab, analytics service, or live target.
3535
| OWASP API Security mini-labs | 10 |
3636
| Bilingual quiz questions | 500 |
3737
| Public CISA KEV/CVE List V5 records | 250 |
38-
| Security tool references | 359 |
38+
| Security tool references | 420 |
39+
| Security standards and methods | 50 |
3940
| Payload examples in 66 categories | 1,224 |
40-
| Attack-chain scenarios | 108 |
41+
| Attack-chain scenarios | 114 |
4142
| Command builders | 59 |
4243

4344
![RØOT product tour](image/root-demo.gif)
@@ -48,7 +49,7 @@ cloud lab, analytics service, or live target.
4849
- Complete safe Web and API challenge simulations with hints and scoring.
4950
- Compare vulnerable implementations with focused remediation examples.
5051
- Search a local public CVE snapshot by ID, vendor, product, or severity.
51-
- Work with payload references, attack chains, command builders, checklists,
52+
- Work with payload references, attack chains and command builders,
5253
SQL queries, and report templates.
5354
- Keep progress and notes in the browser and export them as JSON.
5455

@@ -61,7 +62,7 @@ Requirements: Python 3.10+ and a modern browser.
6162
```bash
6263
git clone https://github.com/madnessbrainsbl/ROOT.git
6364
cd ROOT
64-
python serve.py
65+
python3 serve.py # Windows: python serve.py
6566
```
6667

6768
Open <http://127.0.0.1:8080/> for the product page or
@@ -85,7 +86,7 @@ where available.
8586

8687
- Sources and SHA-256: [`data/cves_public.provenance.json`](data/cves_public.provenance.json)
8788
- Reproducible builder: [`scripts/build_cve_seed.py`](scripts/build_cve_seed.py)
88-
- Third-party terms: [`THIRD_PARTY.md`](THIRD_PARTY.md)
89+
- Third-party notices and source terms: see below.
8990

9091
Maintainers can rebuild the snapshot explicitly:
9192

@@ -97,13 +98,20 @@ The application never downloads data on startup and exposes no update or
9798
credential endpoint. On Python it queries SQLite; on GitHub Pages it falls back
9899
to the same tracked JSON seed.
99100

101+
Local `python3 serve.py` automatically uses ignored `data/cves_NNN.json` chunks
102+
when present and caches their fingerprint in SQLite. The temporary SQLite build
103+
uses the system temp directory, avoiding shared-folder locking issues. Set
104+
`ROOT_CVE_MODE=public` to force the 250-record public seed; GitHub Pages and
105+
Docker use that public dataset by default.
106+
100107
![Searchable public CVE snapshot](image/cve-catalog.jpg)
101108

102109
## Architecture
103110

104111
```text
105112
Browser (Vanilla JS)
106-
├── Web / API / LLM learning tracks
113+
├── Unified OWASP workspace: Web / API / LLM / ASVS
114+
├── SDLC security frameworks: STRIDE / SSDF / SLSA / CWE / CVSS / CIS
107115
├── CTF simulations, quizzes, tools, payloads, and reports
108116
├── sql.js knowledge workspace + browser progress
109117
└── GET /api/cves → Python stdlib server → SQLite
@@ -129,11 +137,96 @@ GET /api/cves/{CVE-ID}
129137
- Browser progress is local to the current browser profile.
130138
- Important CVE decisions must be verified against primary vendor advisories.
131139

132-
## Contributing and responsible use
133-
134-
Read [CONTRIBUTING.md](CONTRIBUTING.md), [SECURITY.md](SECURITY.md), and
135-
[DISCLAIMER.md](DISCLAIMER.md) before submitting code or security content.
136-
Use the material only on systems you own or are explicitly authorized to test.
137-
138-
Apache-2.0 licensed. Third-party attributions are preserved in
139-
[THIRD_PARTY.md](THIRD_PARTY.md) and [`licenses/`](licenses/).
140+
## Responsible use
141+
142+
RØOT is for learning and for testing systems you own or are explicitly
143+
authorized to assess. Do not use its examples, payloads, simulations, or command
144+
references to access, disrupt, alter, or extract data from another system.
145+
Follow applicable law, contracts, program rules, and coordinated-disclosure
146+
requirements.
147+
148+
The bundled CVE snapshot is a study aid, not live threat intelligence. Confirm
149+
important details against the referenced CVE record, CISA entry, and vendor
150+
advisory before making an operational decision.
151+
152+
## Reporting a vulnerability
153+
154+
Report a suspected RØOT vulnerability privately through GitHub's **Report a
155+
vulnerability** form when available. Otherwise, open an issue with a
156+
non-sensitive summary and request a private contact channel. Include the
157+
affected version, reproduction steps, impact, and a minimal proof of concept;
158+
never include credentials, personal data, or unauthorized target data.
159+
160+
The bundled labs are intentionally vulnerable. Their behavior is not a security
161+
issue unless it escapes the local simulation boundary.
162+
163+
## Contributing
164+
165+
Keep changes focused, avoid new production dependencies without agreement, and
166+
include the smallest relevant test. Content contributions must cite their
167+
sources and licenses; do not submit proprietary material, secrets, live target
168+
data, paid training content, or payload collections without compatible
169+
attribution. Contributions are distributed under Apache-2.0.
170+
171+
## Release notes
172+
173+
**0.1.0, 2026-07-22:** added bilingual landing pages, shareable routes, public
174+
CISA KEV/CVE List V5 seed data, the read-only CVE API, Docker support, and
175+
release CI. Removed proprietary CVE synchronization, credential handling, and
176+
startup downloads.
177+
178+
Apache-2.0 licensed without warranty. License texts are in [`licenses/`](licenses/).
179+
180+
## Third-party notices
181+
182+
RØOT is licensed under Apache-2.0. The following bundled material remains
183+
subject to its own license or source terms.
184+
185+
| Component or data | License / terms | Use in RØOT |
186+
|---|---|---|
187+
| [sql.js](https://github.com/sql-js/sql.js) | MIT | `js/vendor/sql-wasm.js` and `js/vendor/sql-wasm.wasm` power the browser SQL workspace. The license is in `licenses/sql.js-LICENSE.txt`. |
188+
| [PayloadsAllTheThings](https://github.com/swisskyrepo/PayloadsAllTheThings) | MIT | The payload reference library contains adapted examples. Attribution and the license are in `licenses/PayloadsAllTheThings-LICENSE.txt`. |
189+
| [OWASP ASVS 5.0.0](https://github.com/OWASP/ASVS/tree/v5.0.0) | CC BY-SA 4.0 | The ASVS overview uses official version, level, and chapter information. RØOT summaries are educational; official documents remain authoritative. |
190+
| Space Grotesk, JetBrains Mono, Orbitron, VT323 | SIL Open Font License 1.1 | Locally hosted web fonts. The license is in `licenses/fonts-OFL-1.1.txt`. |
191+
| [CISA KEV](https://github.com/cisagov/kev-data) | U.S. government/public data; see source notices | Supplies the bundled Known Exploited Vulnerabilities selection. |
192+
| [CVE List V5](https://github.com/CVEProject/cvelistV5) | See CVE Program terms and repository notices | Supplies published CNA descriptions, affected products, CWE, and CVSS fields where available. |
193+
194+
The precise CVE seed sources, generation time, record count, and SHA-256 are
195+
recorded in `data/cves_public.provenance.json`. Regenerate it with
196+
`python scripts/build_cve_seed.py --limit 250`.
197+
198+
### Standards and educational references
199+
200+
- [OWASP Top 10](https://owasp.org/www-project-top-ten/)
201+
- [OWASP API Security Top 10](https://owasp.org/API-Security/)
202+
- [OWASP Top 10 for LLM Applications](https://owasp.org/www-project-top-10-for-large-language-model-applications/)
203+
- [OWASP Application Security Verification Standard](https://owasp.org/www-project-application-security-verification-standard/)
204+
- [OWASP Software Assurance Maturity Model](https://owasp.org/www-project-samm/)
205+
- [OWASP Web Security Testing Guide](https://owasp.org/www-project-web-security-testing-guide/)
206+
- [OWASP Mobile Application Security](https://mas.owasp.org/)
207+
- [OWASP LLM Security Verification Standard](https://owasp.org/www-project-llm-verification-standard/)
208+
- [OWASP Threat Modeling](https://owasp.org/www-project-threat-modeling/)
209+
- [NIST Secure Software Development Framework, SP 800-218](https://csrc.nist.gov/pubs/sp/800/218/final)
210+
- [NIST Cybersecurity Framework 2.0](https://www.nist.gov/cyberframework)
211+
- [SLSA specification 1.2](https://slsa.dev/spec/v1.2/)
212+
- [Common Weakness Enumeration](https://cwe.mitre.org/)
213+
- [Common Attack Pattern Enumeration and Classification](https://capec.mitre.org/)
214+
- [MITRE ATT&CK](https://attack.mitre.org/)
215+
- [MITRE D3FEND](https://d3fend.mitre.org/)
216+
- [Common Vulnerability Scoring System 4.0](https://www.first.org/cvss/v4.0/)
217+
- [Exploit Prediction Scoring System](https://www.first.org/epss/)
218+
- [CISA SSVC](https://www.cisa.gov/resources-tools/resources/stakeholder-specific-vulnerability-categorization-ssvc)
219+
- [CISA Known Exploited Vulnerabilities](https://www.cisa.gov/known-exploited-vulnerabilities-catalog)
220+
- [CIS Benchmarks](https://www.cisecurity.org/cis-benchmarks)
221+
222+
Names, identifiers, and marks identify their respective public standards and
223+
catalogs. They do not imply endorsement of RØOT by OWASP, NIST, MITRE, CISA,
224+
the CVE Program, FIRST, the Linux Foundation, or the Center for Internet
225+
Security. RØOT summaries are educational; linked primary sources are
226+
authoritative.
227+
228+
RØOT's application code, bilingual explanations, UI, simulated lab flows,
229+
attack-chain organization, and report templates are distributed under the
230+
project license unless a notice above says otherwise. Artwork and screenshots
231+
in `source/` and `image/` are covered by the project license unless noted in
232+
the file itself.

0 commit comments

Comments
 (0)