@networkpro/web 1.24.2 → 1.24.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/build-and-publish.yml +4 -0
- package/.github/workflows/probely-scan.yml +95 -0
- package/.github/workflows/secret-scan.yml +2 -0
- package/CHANGELOG.md +54 -1
- package/README.md +22 -2
- package/package.json +1 -1
- package/static/robots.txt +23 -1
- /package/static/{7cbb39ce-750b-43da-83b8-8980e5554d4d.txt.txt → 7cbb39ce-750b-43da-83b8-8980e5554d4d.txt} +0 -0
|
@@ -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
|
|
@@ -19,6 +19,8 @@ jobs:
|
|
|
19
19
|
contents: read
|
|
20
20
|
security-events: write
|
|
21
21
|
issues: write
|
|
22
|
+
env:
|
|
23
|
+
CODEQL_ACTION_ANALYSIS_KEY: gitleaks
|
|
22
24
|
steps:
|
|
23
25
|
# ---------------------------------------------------------------------
|
|
24
26
|
# Checkout the full repo history (needed for Gitleaks to scan all commits)
|
package/CHANGELOG.md
CHANGED
|
@@ -22,6 +22,51 @@ This project attempts to follow [Keep a Changelog](https://keepachangelog.com/en
|
|
|
22
22
|
|
|
23
23
|
---
|
|
24
24
|
|
|
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
|
+
|
|
56
|
+
## [1.24.3]
|
|
57
|
+
|
|
58
|
+
### Changed
|
|
59
|
+
|
|
60
|
+
- Bumped project version to `v1.24.3`.
|
|
61
|
+
- Updated `.github/workflows/secret-scan.yml` to utilize a unique `CODEQL_ACTION_ANALYSIS_KEY` to avoid conflicts with CodeQL.
|
|
62
|
+
- Updated `static/robots.txt` to disallow crawling of the `/api` route.
|
|
63
|
+
|
|
64
|
+
### Fixed
|
|
65
|
+
|
|
66
|
+
- Corrected naming of `static/7cbb39ce-750b-43da-83b8-8980e5554d4d.txt`.
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
25
70
|
## [1.24.2]
|
|
26
71
|
|
|
27
72
|
### Added
|
|
@@ -88,6 +133,12 @@ This project attempts to follow [Keep a Changelog](https://keepachangelog.com/en
|
|
|
88
133
|
- `globals` `^16.4.0` → `^16.5.0`
|
|
89
134
|
- `posthog-js` `^1.282.0` → `^1.284.0`
|
|
90
135
|
|
|
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
|
+
|
|
91
142
|
---
|
|
92
143
|
|
|
93
144
|
## [1.23.0] - 2025-10-30
|
|
@@ -1430,7 +1481,9 @@ This project attempts to follow [Keep a Changelog](https://keepachangelog.com/en
|
|
|
1430
1481
|
|
|
1431
1482
|
<!-- Link references -->
|
|
1432
1483
|
|
|
1433
|
-
[Unreleased]: https://github.com/netwk-pro/netwk-pro.github.io/compare/v1.24.
|
|
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
|
|
1486
|
+
[1.24.3]: https://github.com/netwk-pro/netwk-pro.github.io/releases/tag/v1.24.3
|
|
1434
1487
|
[1.24.2]: https://github.com/netwk-pro/netwk-pro.github.io/releases/tag/v1.24.2
|
|
1435
1488
|
[1.24.1]: https://github.com/netwk-pro/netwk-pro.github.io/releases/tag/v1.24.1
|
|
1436
1489
|
[1.24.0]: https://github.com/netwk-pro/netwk-pro.github.io/releases/tag/v1.24.0
|
package/README.md
CHANGED
|
@@ -36,6 +36,7 @@ All infrastructure and data flows are designed with **maximum transparency, self
|
|
|
36
36
|
- [Repository Structure](#structure)
|
|
37
37
|
- [Getting Started](#getting-started)
|
|
38
38
|
- [Configuration](#configuration)
|
|
39
|
+
- [Security & Dependency Checks](#security)
|
|
39
40
|
- [Service Worker Utilities](#sw-utilities)
|
|
40
41
|
- [Debug Mode](#debug)
|
|
41
42
|
- [CSP Report Handler](#cspreport)
|
|
@@ -190,8 +191,6 @@ To implement a strict nonce-based CSP in the future:
|
|
|
190
191
|
|
|
191
192
|
Note: Strict CSP adoption may require restructuring third-party integrations and deeper framework coordination.
|
|
192
193
|
|
|
193
|
-
> 💡 The `[headers]` block in `netlify.toml` has been deprecated — all headers are now set dynamically from within SvelteKit.
|
|
194
|
-
|
|
195
194
|
|
|
196
195
|
|
|
197
196
|
### 🧭 `hooks.client.ts`
|
|
@@ -208,6 +207,27 @@ Client-side PWA logic (such as handling the `beforeinstallprompt` event, checkin
|
|
|
208
207
|
|
|
209
208
|
---
|
|
210
209
|
|
|
210
|
+
<section id="security">
|
|
211
|
+
|
|
212
|
+
## 🧩 Continuous Security & Dependency Checks
|
|
213
|
+
|
|
214
|
+
Network Pro™ 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
|
+
|
|
211
231
|
<section id="sw-utilities">
|
|
212
232
|
|
|
213
233
|
## ⚙️ Service Worker Utilities
|
package/package.json
CHANGED
package/static/robots.txt
CHANGED
|
@@ -17,12 +17,34 @@ Disallow: /coverage/
|
|
|
17
17
|
Disallow: /build/
|
|
18
18
|
Disallow: /.lighthouseci/
|
|
19
19
|
|
|
20
|
-
#
|
|
20
|
+
# --- Dynamic / redirect handlers
|
|
21
|
+
Disallow: /relay-
|
|
22
|
+
Disallow: /api/
|
|
23
|
+
Disallow: /api/mock-csp
|
|
24
|
+
|
|
25
|
+
# --- Stub and form routes
|
|
21
26
|
Disallow: /contact
|
|
22
27
|
Disallow: /privacy-rights
|
|
23
28
|
Disallow: /consultation
|
|
24
29
|
Disallow: /links
|
|
25
30
|
Disallow: /posts
|
|
31
|
+
Disallow: /privacy-rights
|
|
32
|
+
|
|
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
|
|
26
48
|
|
|
27
49
|
# Allow everything else
|
|
28
50
|
Allow: /
|
|
File without changes
|