Security audit β 2026-06-07#43
Open
versila22 wants to merge 1 commit into
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pentest mini-report β versila22/lima-app β 2026-06-07
Probed URL: https://limaimpro.duckdns.org/
Stack: React 18 + Vite + ShadCN (PWA via vite-plugin-pwa) / bun / PWA=yes
Backend: FastAPI (Python) on Railway β separate deployment
Counts: Critical=0 High=1 Medium=2 Low=1 Info=1
Findings
backend/app/config.py:37,84-87src/lib/api.ts:50-59style-srcincludes'unsafe-inline'nginx.conf:18package.json(recharts β lodash β€4.17.22)package.jsondevDependenciesTop 3 fixes
FRONTEND_URL=https://limaimpro.duckdns.orgexplicitly in the Railway production environment, and remove the stale default fromconfig.py:37.SameSite=None; Securecookie with thePartitionedattribute for Safari instead of sessionStorage; if sessionStorage is kept, add a strict nonce-based CSP to prevent token exfiltration via XSS.'unsafe-inline'onstyle-srcwith a nonce or hash; Tailwind CSS supports a strict-dynamic approach since v3.4.Evidence (High only)
High β CORS default Lovable.app origin + allow_credentials
backend/app/config.py:37and:84-87FRONTEND_URL: str = "https://improv-cabaret-planner.lovable.app"βinject_frontend_url_into_corsalways appends this toCORS_ORIGINSallow_credentials=Trueinbackend/app/main.py:160FRONTEND_URL, any page hosted onimprov-cabaret-planner.lovable.app(a shared hosting platform) can make credentialed cross-origin requests to the production API and receive authenticated responses.FRONTEND_URL=https://limaimpro.duckdns.orgin Railway env; remove hardcoded lovable.app default from source.Verified safe
dangerouslySetInnerHTML,innerHTML=,eval(), orv-htmlsinks in frontend source/docsand/redocdisabled in productionNeeds server-side verification
FRONTEND_URLis explicitly set in Railway production env (not defaulting to lovable.app)Tools
ran=bun-audit, grep-secret-scan, openssl-tls-check; skipped=curl-DAST (egress proxy 403 host_not_allowed)
Generated by Claude Code