Skip to content

Commit a723a39

Browse files
committed
chore: release prep for v1.24.4
1 parent 21c52f6 commit a723a39

File tree

7 files changed

+199
-14
lines changed

7 files changed

+199
-14
lines changed

.github/workflows/build-and-publish.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,10 @@ jobs:
5858
- name: Install jq
5959
run: sudo apt-get install -y jq
6060

61+
- name: Run npm audit
62+
run: npm audit --audit-level=moderate
63+
continue-on-error: true
64+
6165
- name: Run JSDoc lint check
6266
id: jsdoc_lint
6367
continue-on-error: true

.github/workflows/probely-scan.yml

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
# .github/workflows/probely-scan.yml
2+
#
3+
# Copyright © 2025 Network Pro Strategies (Network Pro™)
4+
# SPDX-License-Identifier: CC-BY-4.0 OR GPL-3.0-or-later
5+
# This file is part of Network Pro
6+
7+
name: Weekly DAST Scan (Probely)
8+
9+
on:
10+
schedule:
11+
- cron: '0 9 * * 2' # Every Tuesday, 9 AM UTC
12+
workflow_dispatch:
13+
14+
jobs:
15+
dast-scan:
16+
runs-on: ubuntu-24.04
17+
permissions:
18+
contents: read
19+
actions: read
20+
id-token: none
21+
22+
env:
23+
PROBELY_API_KEY: ${{ secrets.PROBELY_API_KEY }}
24+
TARGET_ID: 3by8xa6kzArN
25+
API_BASE: https://api.probely.com/v2 # Always include /v2
26+
MAX_WAIT_MINUTES: 60 # configurable
27+
28+
steps:
29+
- name: Start Probely Scan
30+
id: start-scan
31+
run: |
32+
echo "🧪 Triggering Probely scan for target $TARGET_ID ..."
33+
response=$(curl -s -X POST "$API_BASE/targets/$TARGET_ID/scans/" \
34+
-H "Authorization: JWT $PROBELY_API_KEY" \
35+
-H "Content-Type: application/json" \
36+
-d '{}')
37+
38+
echo "Raw API response:"
39+
echo "$response" | jq .
40+
41+
scan_id=$(echo "$response" | jq -r '.id // empty')
42+
43+
if [ -z "$scan_id" ]; then
44+
echo "::error ::Failed to start scan — check API key, target ID, or base URL."
45+
exit 1
46+
fi
47+
48+
echo "scan_id=$scan_id" >> $GITHUB_ENV
49+
echo "✅ Scan started with ID: $scan_id"
50+
51+
- name: Wait for Scan Completion
52+
run: |
53+
echo "⏳ Waiting for scan $scan_id to complete..."
54+
elapsed=0
55+
while [ $elapsed -lt $((MAX_WAIT_MINUTES * 60)) ]; do
56+
status=$(curl -s "$API_BASE/scans/$scan_id/" \
57+
-H "Authorization: JWT $PROBELY_API_KEY" | jq -r '.status // empty')
58+
59+
echo "⏱️ Status: $status (elapsed $elapsed sec)"
60+
61+
if [ "$status" = "completed" ]; then
62+
echo "✅ Scan completed successfully."
63+
break
64+
elif [ "$status" = "failed" ]; then
65+
echo "::error ::Scan failed."
66+
exit 1
67+
fi
68+
69+
sleep 60
70+
elapsed=$((elapsed + 60))
71+
done
72+
73+
if [ "$status" != "completed" ]; then
74+
echo "::error ::Scan did not complete in time ($MAX_WAIT_MINUTES min timeout)."
75+
exit 1
76+
fi
77+
78+
- name: Download Probely HTML Report
79+
run: |
80+
echo "📥 Downloading report for scan $scan_id ..."
81+
curl -s "$API_BASE/scans/$scan_id/report/" \
82+
-H "Authorization: JWT $PROBELY_API_KEY" \
83+
-o probely-report.html
84+
85+
if [ ! -s probely-report.html ]; then
86+
echo "::error ::Report file is empty or missing."
87+
exit 1
88+
fi
89+
echo "✅ Report saved as probely-report.html"
90+
91+
- name: Upload report artifact
92+
uses: actions/upload-artifact@v5
93+
with:
94+
name: probely-report
95+
path: probely-report.html

CHANGELOG.md

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,42 @@ This project attempts to follow [Keep a Changelog](https://keepachangelog.com/en
2222

2323
---
2424

25+
## [1.24.4]
26+
27+
### Documentation
28+
29+
- Added a **Continuous Security & Dependency Checks** section to `README.md`, outlining the automated vulnerability and dependency analysis integrated into CI/CD workflows.
30+
31+
### Added
32+
33+
- Introduced **non-blocking** `npm audit` **step** in the `build-and-publish.yml` workflow to automatically detect known vulnerabilities during dependency installation.
34+
- Introduced **[Probely](https://probely.com/) Dynamic Application Security Testing (DAST)** integration via a new GitHub Actions workflow at `.github/workflows/probely-scan.yml`.
35+
- Executes **weekly automated scans** of the `audit.netwk.pro` environment every Tuesday at 09:00 UTC.
36+
- Authenticates securely using a scoped **API key** stored in GitHub Secrets (`PROBELY_API_KEY`).
37+
- Polls the Probely API for scan completion and retrieves the full **HTML vulnerability report**.
38+
- Uploads reports as workflow **artifacts** for maintainers to review.
39+
- Includes a 60-minute timeout and supports manual triggering via `workflow_dispatch`.
40+
- Configured for **read-only testing** against non-production environments to safely identify potential web and API vulnerabilities.
41+
- Future updates will introduce automated issue creation and alerting for high-severity findings.
42+
43+
### Changed
44+
45+
- Updated `static/robots.txt` to exclude redirect routes and sensitive/internal endpoints (e.g., `/api`, `/relay-*`, `/consultation`, `/contact`, `/status`, etc.) from automated crawlers and vulnerability scanners.
46+
- Bumped project version to `v1.24.4`.
47+
48+
### Security
49+
50+
- Enhanced continuous security coverage through the addition of **Probely DAST** for dynamic web and API vulnerability testing.
51+
- Maintained and improved **GitLeaks** secret scanning across pull requests and scheduled full-history scans.
52+
- Together, these workflows now provide full-spectrum coverage across **SAST** (static analysis) and **DAST** (dynamic analysis) layers within the CI/CD pipeline.
53+
54+
---
55+
2556
## [1.24.3]
2657

2758
### Changed
2859

29-
- Bumped project version to `v.1.24.3`.
60+
- Bumped project version to `v1.24.3`.
3061
- Updated `.github/workflows/secret-scan.yml` to utilize a unique `CODEQL_ACTION_ANALYSIS_KEY` to avoid conflicts with CodeQL.
3162
- Updated `static/robots.txt` to disallow crawling of the `/api` route.
3263

@@ -102,6 +133,12 @@ This project attempts to follow [Keep a Changelog](https://keepachangelog.com/en
102133
- `globals` `^16.4.0``^16.5.0`
103134
- `posthog-js` `^1.282.0``^1.284.0`
104135

136+
### Security
137+
138+
- Added **automated SAST scanning** via GitLeaks to prevent secrets and credentials from being committed.
139+
- Implemented **security event reporting** via GitHub’s Code Scanning interface (SARIF upload supported).
140+
- Configured **automated notifications** for detected leaks via GitHub Issues and optional ntfy alerts.
141+
105142
---
106143

107144
## [1.23.0] - 2025-10-30
@@ -1444,7 +1481,8 @@ This project attempts to follow [Keep a Changelog](https://keepachangelog.com/en
14441481

14451482
<!-- Link references -->
14461483

1447-
[Unreleased]: https://github.com/netwk-pro/netwk-pro.github.io/compare/v1.24.3...HEAD
1484+
[Unreleased]: https://github.com/netwk-pro/netwk-pro.github.io/compare/v1.24.4...HEAD
1485+
[1.24.4]: https://github.com/netwk-pro/netwk-pro.github.io/releases/tag/v1.24.4
14481486
[1.24.3]: https://github.com/netwk-pro/netwk-pro.github.io/releases/tag/v1.24.3
14491487
[1.24.2]: https://github.com/netwk-pro/netwk-pro.github.io/releases/tag/v1.24.2
14501488
[1.24.1]: https://github.com/netwk-pro/netwk-pro.github.io/releases/tag/v1.24.1

README.md

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ All infrastructure and data flows are designed with **maximum transparency, self
3636
- [Repository Structure](#structure)
3737
- [Getting Started](#getting-started)
3838
- [Configuration](#configuration)
39+
- [Security & Dependency Checks](#security)
3940
- [Service Worker Utilities](#sw-utilities)
4041
- [Debug Mode](#debug)
4142
- [CSP Report Handler](#cspreport)
@@ -190,8 +191,6 @@ To implement a strict nonce-based CSP in the future:
190191

191192
Note: Strict CSP adoption may require restructuring third-party integrations and deeper framework coordination.
192193

193-
> 💡 The `[headers]` block in `netlify.toml` has been deprecated — all headers are now set dynamically from within SvelteKit.
194-
195194
&nbsp;
196195

197196
### 🧭 `hooks.client.ts`
@@ -208,6 +207,27 @@ Client-side PWA logic (such as handling the `beforeinstallprompt` event, checkin
208207

209208
---
210209

210+
<section id="security">
211+
212+
## 🧩 Continuous Security & Dependency Checks
213+
214+
Network Pro&trade; automatically performs dependency and vulnerability checks as part of its CI/CD pipeline:
215+
216+
- **GitLeaks Secret Scanning** — detects potential secrets and credentials in commits, pull requests, and full-history scans.
217+
- **CodeQL Analysis** — runs static code scanning to detect code-level vulnerabilities.
218+
- **Probely DAST Scans** — executes weekly external scans on the audit deployment (`audit.netwk.pro`) to identify web application vulnerabilities.
219+
- **npm Audit** — runs during the build phase to detect known vulnerabilities in installed dependencies (`npm audit --audit-level=moderate`).
220+
- **Dependabot** — automatically monitors and updates outdated dependencies via pull requests.
221+
- **ESLint, Prettier, etc. (Local)** — enforces code quality and consistency during local development before commits.
222+
223+
Each tool is configured to run in a safe, non-production environment to ensure reliability and protect sensitive data.
224+
225+
</section>
226+
227+
<sub>[Back to top](#top)</sub>
228+
229+
---
230+
211231
<section id="sw-utilities">
212232

213233
## ⚙️ Service Worker Utilities

package-lock.json

Lines changed: 15 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@networkpro/web",
33
"private": false,
4-
"version": "1.24.3",
4+
"version": "1.24.4",
55
"description": "Locking Down Networks, Unlocking Confidence™ | Security, Networking, Privacy — Network Pro Strategies",
66
"keywords": [
77
"advisory",

static/robots.txt

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,34 @@ Disallow: /coverage/
1717
Disallow: /build/
1818
Disallow: /.lighthouseci/
1919

20-
# Disallow stub routes that redirect externally
20+
# --- Dynamic / redirect handlers
21+
Disallow: /relay-
22+
Disallow: /api/
23+
Disallow: /api/mock-csp
24+
25+
# --- Stub and form routes
2126
Disallow: /contact
2227
Disallow: /privacy-rights
2328
Disallow: /consultation
2429
Disallow: /links
2530
Disallow: /posts
31+
Disallow: /privacy-rights
2632

27-
# Disallow mock API endpoint
28-
Disallow: /api
29-
Disallow: /api/mock-csp
33+
# --- Error / system routes
34+
Disallow: /..404
35+
Disallow: /status
36+
37+
# --- Optional: service utilities or PWA
38+
Disallow: /service-worker
39+
Disallow: /service-worker.js
40+
Disallow: /service-worker.d.ts
41+
42+
# --- Futureproof catch-alls
43+
Disallow: /admin
44+
Disallow: /preview
45+
Disallow: /redirect
46+
Disallow: /mock-csp
47+
Disallow: /csp
3048

3149
# Allow everything else
3250
Allow: /

0 commit comments

Comments
 (0)