Skip to content

Commit 7034ce9

Browse files
authored
Merge pull request #35 from OWASP/restructure/v5-format
Restructure to TCASVS v5.0.0 (ASVS 5.0.0 format) + repo rename references
2 parents 2f2db99 + b68cfb6 commit 7034ce9

64 files changed

Lines changed: 4014 additions & 372 deletions

Some content is hidden

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

.gitattributes

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# Keep shell scripts and the Docker build LF so the container entrypoint works
2+
# regardless of the host platform's autocrlf setting.
3+
*.sh text eol=lf
4+
docker/run.sh text eol=lf
5+
Dockerfile text eol=lf
6+
Makefile text eol=lf
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
name: Bug Report
2+
description: Report an error or inconsistency in the standard
3+
labels: ["bug"]
4+
body:
5+
- type: markdown
6+
attributes:
7+
value: |
8+
Thanks for taking the time to report an issue with the TCASVS.
9+
- type: input
10+
id: location
11+
attributes:
12+
label: Location
13+
description: Which chapter, section, or requirement ID is affected?
14+
placeholder: "e.g., V3.2.1 or 0x12-V3-Data-Storage-and-Protection.md"
15+
validations:
16+
required: true
17+
- type: textarea
18+
id: description
19+
attributes:
20+
label: Description
21+
description: Describe the issue clearly.
22+
placeholder: What is wrong and what should it say instead?
23+
validations:
24+
required: true
25+
- type: dropdown
26+
id: type
27+
attributes:
28+
label: Issue type
29+
options:
30+
- Incorrect requirement text
31+
- Incorrect level assignment
32+
- Formatting/layout issue
33+
- Broken link
34+
- Other
35+
validations:
36+
required: true

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
blank_issues_enabled: true
2+
contact_links:
3+
- name: OWASP Slack
4+
url: https://owasp.slack.com
5+
about: Join the OWASP Slack workspace to discuss the TCASVS with the community
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
name: New Requirement Proposal
2+
description: Propose a new security requirement for inclusion in the TCASVS
3+
labels: ["enhancement", "new-requirement"]
4+
body:
5+
- type: markdown
6+
attributes:
7+
value: |
8+
Use this template to propose a new requirement. Please provide enough context for the working group to evaluate the proposal.
9+
- type: input
10+
id: chapter
11+
attributes:
12+
label: Target Chapter
13+
description: Which chapter should this requirement belong to?
14+
placeholder: "e.g., V3 Data Storage and Protection"
15+
validations:
16+
required: true
17+
- type: textarea
18+
id: requirement
19+
attributes:
20+
label: Proposed Requirement
21+
description: Write the requirement in TCASVS format (start with "Verify that...").
22+
placeholder: "Verify that the application..."
23+
validations:
24+
required: true
25+
- type: dropdown
26+
id: level
27+
attributes:
28+
label: Suggested Level
29+
description: At which verification level should this apply?
30+
options:
31+
- L1 (all applications)
32+
- L2 (sensitive data)
33+
- L3 (high security)
34+
validations:
35+
required: true
36+
- type: textarea
37+
id: rationale
38+
attributes:
39+
label: Rationale
40+
description: Why is this requirement needed? Reference attack scenarios or real-world incidents.
41+
validations:
42+
required: true
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
name: Build & Publish Document Builder Image
2+
3+
on:
4+
# Rebuild and publish when the image definition changes.
5+
push:
6+
branches:
7+
- main
8+
paths:
9+
- 'docker/**'
10+
# Allow manual rebuilds.
11+
workflow_dispatch: {}
12+
13+
jobs:
14+
build_and_push:
15+
runs-on: ubuntu-latest
16+
permissions:
17+
packages: write
18+
name: Build and publish
19+
steps:
20+
- name: Checkout repository
21+
uses: actions/checkout@v4
22+
23+
- name: Log in to GitHub Container Registry
24+
uses: docker/login-action@v3
25+
with:
26+
registry: ghcr.io
27+
username: ${{ github.actor }}
28+
password: ${{ secrets.GITHUB_TOKEN }}
29+
30+
- name: Build and publish Docker image
31+
run: |
32+
docker build ./docker --tag ghcr.io/owasp/tcasvs/documentbuilder:latest
33+
docker push ghcr.io/owasp/tcasvs/documentbuilder:latest

.github/workflows/main.yml

Lines changed: 91 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,69 +1,136 @@
1-
name: Convert Markdown to PDF and Create Release
1+
name: Build and Release TCASVS
22

33
on:
44
push:
55
branches:
66
- main
7+
paths:
8+
- '5.0/**'
9+
- 'docker/**'
10+
- 'Makefile'
11+
pull_request:
12+
paths:
13+
- '5.0/**'
14+
- 'docker/**'
15+
- 'Makefile'
716

817
jobs:
918
build:
1019
runs-on: ubuntu-latest
20+
permissions:
21+
contents: write
22+
packages: write
1123

1224
steps:
1325
- name: Checkout repository
14-
uses: actions/checkout@v6
26+
uses: actions/checkout@v4
1527

16-
- name: Set up Pandoc and jq
17-
run: |
18-
sudo apt-get update
19-
sudo apt-get install -y pandoc texlive jq
28+
- name: Log in to GitHub Container Registry
29+
uses: docker/login-action@v3
30+
with:
31+
registry: ghcr.io
32+
username: ${{ github.actor }}
33+
password: ${{ secrets.GITHUB_TOKEN }}
34+
35+
- name: Build (or pull) the document builder image
36+
run: docker pull ghcr.io/owasp/tcasvs/documentbuilder:latest || docker build --pull --tag ghcr.io/owasp/tcasvs/documentbuilder:latest ./docker
37+
38+
- name: Verify requirements parse correctly
39+
run: make verify
40+
41+
- name: Build all exports
42+
run: make 5.0 FORMATS=all
2043

21-
- name: Fetch the latest release
44+
- name: Upload build artifacts
45+
uses: actions/upload-artifact@v4
46+
with:
47+
name: tcasvs-5.0.0-outputs
48+
path: 5.0/dist/
49+
50+
- name: Fetch the latest release tag
2251
id: fetch_latest_release
52+
if: github.event_name == 'push'
2353
run: |
2454
LATEST_TAG=$(curl -s https://api.github.com/repos/${{ github.repository }}/releases/latest | jq -r .tag_name)
2555
if [ -z "$LATEST_TAG" ] || [ "$LATEST_TAG" == "null" ]; then
26-
LATEST_TAG="v0.4.0"
27-
fi
28-
# using this to fake/bump versions to v1.0
29-
if [ "$LATEST_TAG" == "v0.4.0" ]; then
30-
LATEST_TAG="v1.0"
56+
LATEST_TAG="v5.0.0"
3157
fi
3258
echo "LATEST_TAG=$LATEST_TAG" >> $GITHUB_ENV
3359
3460
- name: Increment version
3561
id: increment_version
62+
if: github.event_name == 'push'
3663
run: |
3764
LATEST_TAG=${{ env.LATEST_TAG }}
38-
echo "Latest tag: $LATEST_TAG"
3965
LATEST_VERSION=${LATEST_TAG#v}
40-
IFS='.' read -r major minor <<< "$LATEST_VERSION"
41-
NEW_VERSION="$major.$((minor + 1))"
66+
IFS='.' read -r major minor patch <<< "$LATEST_VERSION"
67+
NEW_VERSION="$major.$minor.$((patch + 1))"
4268
NEW_TAG="v$NEW_VERSION"
43-
echo "New version: $NEW_TAG"
4469
echo "NEW_TAG=$NEW_TAG" >> $GITHUB_ENV
4570
46-
- name: Concatenate and Convert Markdown to PDF
47-
run: |
48-
pandoc document/1.0/*.md -o TASVS-${{ env.NEW_TAG }}.pdf -V geometry:margin=2cm
49-
5071
- name: Create GitHub Release
5172
id: create_release
73+
if: github.event_name == 'push'
5274
uses: actions/create-release@v1
5375
env:
5476
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
5577
with:
5678
tag_name: ${{ env.NEW_TAG }}
57-
release_name: Release ${{ env.NEW_TAG }}
79+
release_name: TCASVS ${{ env.NEW_TAG }}
5880
draft: false
5981
prerelease: false
6082

61-
- name: Upload PDF to Release
83+
- name: Upload PDF
84+
if: github.event_name == 'push'
6285
uses: actions/upload-release-asset@v1
6386
env:
6487
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
6588
with:
6689
upload_url: ${{ steps.create_release.outputs.upload_url }}
67-
asset_path: ./TASVS-${{ env.NEW_TAG }}.pdf
68-
asset_name: TASVS-${{ env.NEW_TAG }}.pdf
90+
asset_path: ./5.0/dist/OWASP_Thick_Client_Application_Security_Verification_Standard_5.0.0_en.pdf
91+
asset_name: TCASVS-${{ env.NEW_TAG }}.pdf
6992
asset_content_type: application/pdf
93+
94+
- name: Upload DOCX
95+
if: github.event_name == 'push'
96+
uses: actions/upload-release-asset@v1
97+
env:
98+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
99+
with:
100+
upload_url: ${{ steps.create_release.outputs.upload_url }}
101+
asset_path: ./5.0/dist/OWASP_Thick_Client_Application_Security_Verification_Standard_5.0.0_en.docx
102+
asset_name: TCASVS-${{ env.NEW_TAG }}.docx
103+
asset_content_type: application/vnd.openxmlformats-officedocument.wordprocessingml.document
104+
105+
- name: Upload JSON
106+
if: github.event_name == 'push'
107+
uses: actions/upload-release-asset@v1
108+
env:
109+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
110+
with:
111+
upload_url: ${{ steps.create_release.outputs.upload_url }}
112+
asset_path: ./5.0/dist/OWASP_Thick_Client_Application_Security_Verification_Standard_5.0.0_en.json
113+
asset_name: TCASVS-${{ env.NEW_TAG }}.json
114+
asset_content_type: application/json
115+
116+
- name: Upload CSV
117+
if: github.event_name == 'push'
118+
uses: actions/upload-release-asset@v1
119+
env:
120+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
121+
with:
122+
upload_url: ${{ steps.create_release.outputs.upload_url }}
123+
asset_path: ./5.0/dist/OWASP_Thick_Client_Application_Security_Verification_Standard_5.0.0_en.csv
124+
asset_name: TCASVS-${{ env.NEW_TAG }}.csv
125+
asset_content_type: text/csv
126+
127+
- name: Upload CycloneDX
128+
if: github.event_name == 'push'
129+
uses: actions/upload-release-asset@v1
130+
env:
131+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
132+
with:
133+
upload_url: ${{ steps.create_release.outputs.upload_url }}
134+
asset_path: ./5.0/dist/OWASP_Thick_Client_Application_Security_Verification_Standard_5.0.0_en.cdx.json
135+
asset_name: TCASVS-${{ env.NEW_TAG }}.cdx.json
136+
asset_content_type: application/json

.gitignore

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
11
/Gemfile
22
/Gemfile.lock
33
/favicon.ico
4-
_site/
4+
_site/
5+
__pycache__/
6+
*.pyc
7+
8+
# Generated build artifacts
9+
*/build/
10+
*/dist/

.markdownlint.jsonc

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
{
2+
"default": true,
3+
"MD013": {
4+
"line_length": 500,
5+
"tables": false
6+
},
7+
"MD024": {
8+
"siblings_only": true
9+
},
10+
"MD033": {
11+
"allowed_elements": [
12+
"a",
13+
"img",
14+
"div",
15+
"b",
16+
"sup",
17+
"u",
18+
"br"
19+
]
20+
},
21+
"MD041": false
22+
}

0 commit comments

Comments
 (0)