Skip to content

Commit df671d8

Browse files
author
Codex
committed
Resolve security advisor findings and harden CI
1 parent 0469005 commit df671d8

38 files changed

Lines changed: 1169 additions & 232 deletions

.env.example

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ CORS_ALLOWED_ORIGINS=
2727
ENABLE_ADMIN_MODE=false
2828

2929
# Service-role key — owner only, never share, never expose to browser
30+
SUPABASE_SECRET_KEY=
31+
# Legacy fallback only. Prefer SUPABASE_SECRET_KEY for server/admin operations.
3032
SUPABASE_SERVICE_ROLE_KEY=
3133

3234
# Admin unlock secret for /__admin/login

.github/dependabot.yml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
version: 2
2+
updates:
3+
- package-ecosystem: npm
4+
directory: /
5+
schedule:
6+
interval: weekly
7+
day: monday
8+
time: "06:00"
9+
timezone: Asia/Kolkata
10+
open-pull-requests-limit: 5
11+
groups:
12+
development-dependencies:
13+
dependency-type: development
14+
commit-message:
15+
prefix: deps
16+
17+
- package-ecosystem: github-actions
18+
directory: /
19+
schedule:
20+
interval: weekly
21+
day: monday
22+
time: "06:15"
23+
timezone: Asia/Kolkata
24+
open-pull-requests-limit: 5
25+
commit-message:
26+
prefix: ci

.github/workflows/auto-label.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515

1616
steps:
1717
- name: 🏷️ Apply labels based on file changes
18-
uses: actions/labeler@v5
18+
uses: actions/labeler@v6
1919
with:
2020
repo-token: ${{ secrets.GITHUB_TOKEN }}
2121
configuration-path: .github/labeler.yml

.github/workflows/ci.yml

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@ jobs:
2525

2626
steps:
2727
- name: ⬇️ Checkout
28-
uses: actions/checkout@v4
28+
uses: actions/checkout@v7
2929

3030
- name: 🟢 Setup Node.js ${{ matrix.node }}
31-
uses: actions/setup-node@v4
31+
uses: actions/setup-node@v6
3232
with:
3333
node-version: ${{ matrix.node }}
3434

@@ -202,6 +202,8 @@ jobs:
202202
community-patch-v4.sql
203203
sql/006_security_policy_cleanup.sql
204204
sql/007_comprehensive_sql_rls_hardening.sql
205+
sql/008_security_invoker_rpc_boundary.sql
206+
sql/009_remove_redundant_indexes.sql
205207
sql/backup_manifests.sql
206208
scripts/verify-sql-hardening.sql
207209
sql/verify-security.sql
@@ -241,7 +243,7 @@ jobs:
241243
echo "❌ .env is tracked; remove it before release"
242244
exit 1
243245
fi
244-
if git grep -nE 'SUPABASE_SERVICE_ROLE_KEY[[:space:]]*=[[:space:]]*eyJ|SUPABASE_ACCESS_TOKEN[[:space:]]*=[[:space:]]*sbp_|ADMIN_SECRET[[:space:]]*=[[:space:]]*[A-Za-z0-9_-]{24,}' -- \
246+
if git grep -nE 'SUPABASE_SECRET_KEY[[:space:]]*=[[:space:]]*sb_secret_[A-Za-z0-9_-]{16,}|SUPABASE_SERVICE_ROLE_KEY[[:space:]]*=[[:space:]]*eyJ|SUPABASE_ACCESS_TOKEN[[:space:]]*=[[:space:]]*sbp_|ADMIN_SECRET[[:space:]]*=[[:space:]]*[A-Za-z0-9_-]{24,}' -- \
245247
':!*.md' ':!.env.example' ':!public/assets/**'; then
246248
echo "❌ Hardcoded private secret detected!"
247249
exit 1
@@ -252,7 +254,7 @@ jobs:
252254
- name: 📋 Schema file stats
253255
run: |
254256
set -euo pipefail
255-
for f in isotope-complete.sql community-patch-v4.sql sql/006_security_policy_cleanup.sql sql/007_comprehensive_sql_rls_hardening.sql sql/backup_manifests.sql sql/verify-security.sql scripts/verify-sql-hardening.sql performance-patch.sql; do
257+
for f in isotope-complete.sql community-patch-v4.sql sql/006_security_policy_cleanup.sql sql/007_comprehensive_sql_rls_hardening.sql sql/008_security_invoker_rpc_boundary.sql sql/009_remove_redundant_indexes.sql sql/backup_manifests.sql sql/verify-security.sql scripts/verify-sql-hardening.sql performance-patch.sql; do
256258
if [ -f "$f" ]; then
257259
echo "=== $f ==="
258260
echo " Size : $(wc -c < "$f") bytes"
@@ -334,7 +336,7 @@ jobs:
334336
unzip -q "isotope-v${VERSION}-ci-test.zip" -d "$TMPDIR"
335337
echo "Verifying extracted release..."
336338
FAIL=0
337-
for f in server.mjs package.json setup.sh install-termux.sh bin/isotope .env.example public/sync/backup-normalizer.js public/sync/local-data-adapter.js server/backup-manager.mjs scripts/prove-new-browser-restore.mjs sql/backup_manifests.sql sql/007_comprehensive_sql_rls_hardening.sql scripts/verify-sql-hardening.sql docs/sync-system.md docs/storage-backup-system.md docs/supabase-connection-map.md; do
339+
for f in server.mjs package.json setup.sh install-termux.sh bin/isotope .env.example public/sync/backup-normalizer.js public/sync/local-data-adapter.js server/backup-manager.mjs scripts/prove-new-browser-restore.mjs sql/backup_manifests.sql sql/007_comprehensive_sql_rls_hardening.sql sql/008_security_invoker_rpc_boundary.sql sql/009_remove_redundant_indexes.sql scripts/verify-sql-hardening.sql docs/sync-system.md docs/storage-backup-system.md docs/supabase-connection-map.md; do
338340
if [ -f "$TMPDIR/$f" ]; then
339341
echo " ✅ $f"
340342
else
@@ -358,7 +360,7 @@ jobs:
358360
# ── Upload logs on failure ────────────────────────────────────────────────
359361
- name: 📤 Upload CI logs on failure
360362
if: failure()
361-
uses: actions/upload-artifact@v4
363+
uses: actions/upload-artifact@v7
362364
with:
363365
name: ci-logs-node${{ matrix.node }}-${{ github.run_id }}
364366
path: |

.github/workflows/codeql.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ jobs:
2121

2222
steps:
2323
- name: ⬇️ Checkout
24-
uses: actions/checkout@v4
24+
uses: actions/checkout@v7
2525

2626
- name: 🔍 Initialize CodeQL
27-
uses: github/codeql-action/init@v3
27+
uses: github/codeql-action/init@v4
2828
with:
2929
languages: javascript-typescript
3030
# Config excludes public/ (154 minified React bundle files) and docs/
@@ -34,9 +34,9 @@ jobs:
3434
config-file: ./.github/codeql/codeql-config.yml
3535

3636
- name: 🏗️ Autobuild
37-
uses: github/codeql-action/autobuild@v3
37+
uses: github/codeql-action/autobuild@v4
3838

3939
- name: 📊 Perform CodeQL Analysis
40-
uses: github/codeql-action/analyze@v3
40+
uses: github/codeql-action/analyze@v4
4141
with:
4242
category: /language:javascript-typescript

.github/workflows/dependency-review.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@ jobs:
2020

2121
steps:
2222
- name: ⬇️ Checkout
23-
uses: actions/checkout@v4
23+
uses: actions/checkout@v7
2424

2525
- name: 🔒 Dependency Review
26-
uses: actions/dependency-review-action@v4
26+
uses: actions/dependency-review-action@v5
2727
with:
2828
fail-on-severity: high
2929
comment-summary-in-pr: always

.github/workflows/lighthouse.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@ jobs:
2222

2323
steps:
2424
- name: Checkout
25-
uses: actions/checkout@v4
25+
uses: actions/checkout@v7
2626

2727
- name: Setup Node.js
28-
uses: actions/setup-node@v4
28+
uses: actions/setup-node@v6
2929
with:
3030
node-version: '22'
3131
cache: npm
@@ -44,7 +44,7 @@ jobs:
4444

4545
- name: Upload Lighthouse reports
4646
if: always()
47-
uses: actions/upload-artifact@v4
47+
uses: actions/upload-artifact@v7
4848
with:
4949
name: lighthouse-reports
5050
path: |

.github/workflows/pages.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,13 @@ jobs:
2828
runs-on: ubuntu-latest
2929
steps:
3030
- name: Checkout
31-
uses: actions/checkout@v4
31+
uses: actions/checkout@v7
3232
- name: Setup Pages
33-
uses: actions/configure-pages@v4
33+
uses: actions/configure-pages@v6
3434
- name: Upload artifact
35-
uses: actions/upload-pages-artifact@v3
35+
uses: actions/upload-pages-artifact@v5
3636
with:
3737
path: './docs'
3838
- name: Deploy to GitHub Pages
3939
id: deployment
40-
uses: actions/deploy-pages@v4
40+
uses: actions/deploy-pages@v5

.github/workflows/regenerate-release.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ jobs:
2424

2525
steps:
2626
- name: ⬇️ Checkout
27-
uses: actions/checkout@v4
27+
uses: actions/checkout@v7
2828
with:
2929
fetch-depth: 0
3030

@@ -47,7 +47,7 @@ jobs:
4747
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
4848
4949
- name: 🟢 Setup Node.js
50-
uses: actions/setup-node@v4
50+
uses: actions/setup-node@v6
5151
with:
5252
node-version: '22'
5353

@@ -107,6 +107,8 @@ jobs:
107107
isotope-complete.sql
108108
sql/backup_manifests.sql
109109
sql/007_comprehensive_sql_rls_hardening.sql
110+
sql/008_security_invoker_rpc_boundary.sql
111+
sql/009_remove_redundant_indexes.sql
110112
scripts/verify-sql-hardening.sql
111113
docs/sync-system.md
112114
docs/storage-backup-system.md

.github/workflows/release.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ jobs:
2121

2222
steps:
2323
- name: ⬇️ Checkout
24-
uses: actions/checkout@v4
24+
uses: actions/checkout@v7
2525
with:
2626
fetch-depth: 0
2727

@@ -44,7 +44,7 @@ jobs:
4444
echo "version=${VERSION}" >> "$GITHUB_OUTPUT"
4545
4646
- name: 🟢 Setup Node.js
47-
uses: actions/setup-node@v4
47+
uses: actions/setup-node@v6
4848
with:
4949
node-version: '22'
5050

@@ -183,6 +183,8 @@ jobs:
183183
sql/backup_manifests.sql
184184
sql/006_security_policy_cleanup.sql
185185
sql/007_comprehensive_sql_rls_hardening.sql
186+
sql/008_security_invoker_rpc_boundary.sql
187+
sql/009_remove_redundant_indexes.sql
186188
scripts/verify-sql-hardening.sql
187189
docs/sync-system.md
188190
docs/storage-backup-system.md

0 commit comments

Comments
 (0)