← Back to scan
File as GitHub Issue repo: toeverything/AFFiNE

Push this scan report to toeverything/AFFiNE

Click the green button below to open GitHub’s new-issue form, pre-filled with the report title, summary table, top findings, and an embedded score-card image. No authentication needed — you review on GitHub before submitting. Repobility is credited as the scanner.

Embedded score card image

This image will render at the top of the issue body. Hosted on Repobility, refreshes automatically after re-scans.

Repobility score card

Issue title

Workflow uses `secrets.TEST_SERVER_CONFIG` on a `pull_request` trigger

Curate findings to include

Pick exactly which findings appear in the issue body. By default the top 5 are included. Uncheck noise, check what matters.

Top 5 (default)
Severity Rule Title File:line
CRIT SEC022 [SEC022] Database URL With Embedded Credential: A database connection URL contains an emb… .devcontainer/docker-compose.yml:13
CRIT DKC007 Compose service contains a literal secret environment value .devcontainer/docker-compose.yml:16
CRIT MINED116 [MINED116] Workflow uses `secrets.TEST_SERVER_CONFIG` on a `pull_request` trigger: This w… .github/workflows/build-test.yml:1084
CRIT MINED116 [MINED116] Workflow uses `secrets.CODECOV_TOKEN` on a `pull_request` trigger: This workfl… .github/workflows/build-test.yml:1020
CRIT MINED116 [MINED116] Workflow uses `secrets.TEST_SERVER_CONFIG` on a `pull_request` trigger: This w… .github/workflows/build-test.yml:1009
CRIT MINED116 [MINED116] Workflow uses `secrets.CODECOV_TOKEN` on a `pull_request` trigger: This workfl… .github/workflows/build-test.yml:792
CRIT MINED116 [MINED116] Workflow uses `secrets.CODECOV_TOKEN` on a `pull_request` trigger: This workfl… .github/workflows/build-test.yml:731
CRIT MINED116 [MINED116] Workflow uses `secrets.CODECOV_TOKEN` on a `pull_request` trigger: This workfl… .github/workflows/build-test.yml:652
CRIT MINED116 [MINED116] Workflow uses `secrets.CODECOV_TOKEN` on a `pull_request` trigger: This workfl… .github/workflows/build-test.yml:388
CRIT MINED129 [MINED129] Committed yarn npmAuthToken in .yarnrc.yml: `.yarnrc.yml` contains a yarn npmA… .yarnrc.yml:9
HIGH SEC083 [SEC083] JS: new RegExp() with non-literal: new RegExp(<variable>) — variable input can c… blocksuite/affine/shared/src/utils/stri…:25
HIGH SEC033 [SEC033] Prototype Pollution — unfiltered merge of user object: Merging user-controlled o… blocksuite/affine/blocks/surface/src/ut…:101
HIGH SEC027 [SEC027] XML External Entity (XXE) — Node.js xml parsers: Node.js XML parsers can expand … blocksuite/affine/shared/src/test-utils…:94
HIGH SEC027 [SEC027] XML External Entity (XXE) — Node.js xml parsers: Node.js XML parsers can expand … blocksuite/affine/blocks/root/src/edgel…:84
HIGH SEC027 [SEC027] XML External Entity (XXE) — Node.js xml parsers: Node.js XML parsers can expand … blocksuite/affine/blocks/embed/src/embe…:73
HIGH SEC128 [SEC128] Async function without await — fire-and-forget Promise (AI mistake): Async call … blocksuite/affine/blocks/embed-doc/src/…:34
HIGH SEC128 [SEC128] Async function without await — fire-and-forget Promise (AI mistake): Async call … blocksuite/affine/blocks/data-view/src/…:95
HIGH SEC128 [SEC128] Async function without await — fire-and-forget Promise (AI mistake): Async call … blocksuite/affine/blocks/code/src/markd…:55
HIGH SEC029 [SEC029] Server-Side Request Forgery (SSRF) — outbound HTTP from user input: Outbound HTT… blocksuite/affine/blocks/code/src/adapt…:61
HIGH SEC029 [SEC029] Server-Side Request Forgery (SSRF) — outbound HTTP from user input: Outbound HTT… blocksuite/affine/blocks/bookmark/src/c…:70
HIGH SEC029 [SEC029] Server-Side Request Forgery (SSRF) — outbound HTTP from user input: Outbound HTT… blocksuite/affine/blocks/bookmark/src/b…:107
HIGH SEC085 [SEC085] JS: child_process.exec with non-literal: child_process.exec with user-derived in… blocksuite/affine/blocks/callout/src/co…:47
HIGH SEC085 [SEC085] JS: child_process.exec with non-literal: child_process.exec with user-derived in… blocksuite/affine/blocks/bookmark/src/c…:47
HIGH SEC085 [SEC085] JS: child_process.exec with non-literal: child_process.exec with user-derived in… .github/actions/deploy/deploy.mjs:161
HIGH SEC040 [SEC040] innerHTML XSS — template literal with server-supplied data: Setting .innerHTML w… blocksuite/affine/shared/src/test-utils…:15
HIGH SEC040 [SEC040] innerHTML XSS — template literal with server-supplied data: Setting .innerHTML w… .github/actions/deploy/deploy.mjs:140
HIGH MINED134 [MINED134] Binary file `packages/frontend/apps/android/App/gradle/wrapper/gradle-wrapper.… packages/frontend/apps/android/App/grad…:1
HIGH MINED118 [MINED118] Dockerfile FROM `node:22-bookworm-slim` not pinned by digest: `FROM node:22-bo… .github/deployment/node/Dockerfile:20
HIGH MINED118 [MINED118] Dockerfile FROM `node:22-bookworm-slim` not pinned by digest: `FROM node:22-bo… .github/deployment/node/Dockerfile:2
HIGH MINED126 [MINED126] Workflow container/services image `manticoresearch/manticore:10.1.0` unpinned:… .github/workflows/build-test.yml:1144
HIGH MINED126 [MINED126] Workflow container/services image `mailhog/mailhog` unpinned: `container/servi… .github/workflows/build-test.yml:1139
HIGH MINED126 [MINED126] Workflow container/services image `pgvector/pgvector:pg16` unpinned: `containe… .github/workflows/build-test.yml:1124
HIGH MINED126 [MINED126] Workflow container/services image `manticoresearch/manticore:10.1.0` unpinned:… .github/workflows/build-test.yml:1061
HIGH MINED126 [MINED126] Workflow container/services image `pgvector/pgvector:pg16` unpinned: `containe… .github/workflows/build-test.yml:1046
HIGH MINED126 [MINED126] Workflow container/services image `manticoresearch/manticore:10.1.0` unpinned:… .github/workflows/build-test.yml:988
HIGH MINED126 [MINED126] Workflow container/services image `mailhog/mailhog` unpinned: `container/servi… .github/workflows/build-test.yml:983
HIGH MINED126 [MINED126] Workflow container/services image `pgvector/pgvector:pg16` unpinned: `containe… .github/workflows/build-test.yml:968
HIGH MINED126 [MINED126] Workflow container/services image `manticoresearch/manticore:10.1.0` unpinned:… .github/workflows/build-test.yml:764
HIGH MINED126 [MINED126] Workflow container/services image `pgvector/pgvector:pg16` unpinned: `containe… .github/workflows/build-test.yml:749
HIGH MINED126 [MINED126] Workflow container/services image `mailhog/mailhog` unpinned: `container/servi… .github/workflows/build-test.yml:686
HIGH MINED126 [MINED126] Workflow container/services image `pgvector/pgvector:pg16` unpinned: `containe… .github/workflows/build-test.yml:671
HIGH MINED126 [MINED126] Workflow container/services image `manticoresearch/manticore:10.1.0` unpinned:… .github/workflows/build-test.yml:620
HIGH MINED126 [MINED126] Workflow container/services image `mailhog/mailhog` unpinned: `container/servi… .github/workflows/build-test.yml:615
HIGH MINED126 [MINED126] Workflow container/services image `pgvector/pgvector:pg16` unpinned: `containe… .github/workflows/build-test.yml:600
HIGH MINED126 [MINED126] Workflow container/services image `manticoresearch/manticore:10.1.0` unpinned:… .github/workflows/copilot-test.yml:133
HIGH MINED126 [MINED126] Workflow container/services image `pgvector/pgvector:pg16` unpinned: `containe… .github/workflows/copilot-test.yml:118
HIGH MINED126 [MINED126] Workflow container/services image `manticoresearch/manticore:10.1.0` unpinned:… .github/workflows/copilot-test.yml:63
HIGH MINED126 [MINED126] Workflow container/services image `mailhog/mailhog` unpinned: `container/servi… .github/workflows/copilot-test.yml:58
HIGH MINED126 [MINED126] Workflow container/services image `pgvector/pgvector:pg16` unpinned: `containe… .github/workflows/copilot-test.yml:43
HIGH MINED115 [MINED115] Action `actions/download-artifact` pinned to mutable ref `@v4`: `uses: actions… .github/workflows/release-desktop.yml:477
HIGH MINED115 [MINED115] Action `actions/download-artifact` pinned to mutable ref `@v4`: `uses: actions… .github/workflows/release-desktop.yml:471
HIGH MINED115 [MINED115] Action `actions/download-artifact` pinned to mutable ref `@v4`: `uses: actions… .github/workflows/release-desktop.yml:465
HIGH MINED115 [MINED115] Action `actions/download-artifact` pinned to mutable ref `@v4`: `uses: actions… .github/workflows/release-desktop.yml:460
HIGH MINED115 [MINED115] Action `actions/checkout` pinned to mutable ref `@v6`: `uses: actions/checkout… .github/workflows/release-desktop.yml:458
HIGH MINED115 [MINED115] Action `actions/upload-artifact` pinned to mutable ref `@v4`: `uses: actions/u… .github/workflows/release-desktop.yml:418
HIGH MINED115 [MINED115] Action `actions/attest-build-provenance` pinned to mutable ref `@v4`: `uses: a… .github/workflows/release-desktop.yml:407
HIGH MINED115 [MINED115] Action `actions/download-artifact` pinned to mutable ref `@v4`: `uses: actions… .github/workflows/release-desktop.yml:368
HIGH MINED115 [MINED115] Action `actions/download-artifact` pinned to mutable ref `@v4`: `uses: actions… .github/workflows/release-desktop.yml:359
HIGH MINED115 [MINED115] Action `actions/upload-artifact` pinned to mutable ref `@v4`: `uses: actions/u… .github/workflows/release-desktop.yml:303
HIGH MINED115 [MINED115] Action `actions/download-artifact` pinned to mutable ref `@v4`: `uses: actions… .github/workflows/release-desktop.yml:254
HIGH MINED115 [MINED115] Action `actions/download-artifact` pinned to mutable ref `@v4`: `uses: actions… .github/workflows/release-desktop.yml:246
HIGH MINED115 [MINED115] Action `actions/checkout` pinned to mutable ref `@v6`: `uses: actions/checkout… .github/workflows/release-desktop.yml:231
HIGH MINED115 [MINED115] Action `actions/checkout` pinned to mutable ref `@v6`: `uses: actions/checkout… .github/workflows/release-desktop.yml:87
HIGH MINED115 [MINED115] Action `actions/upload-artifact` pinned to mutable ref `@v4`: `uses: actions/u… .github/workflows/release-desktop.yml:76
HIGH MINED115 [MINED115] Action `actions/checkout` pinned to mutable ref `@v6`: `uses: actions/checkout… .github/workflows/release-desktop.yml:56
HIGH MINED115 [MINED115] Action `benc-uk/workflow-dispatch` pinned to mutable ref `@v1`: `uses: benc-uk… .github/workflows/copilot-test-automati…:26
HIGH MINED115 [MINED115] Action `benc-uk/workflow-dispatch` pinned to mutable ref `@v1`: `uses: benc-uk… .github/workflows/copilot-test-automati…:21
HIGH MINED115 [MINED115] Action `actions/upload-artifact` pinned to mutable ref `@v4`: `uses: actions/u… .github/workflows/release-desktop-platf…:220
HIGH MINED115 [MINED115] Action `actions/upload-artifact` pinned to mutable ref `@v4`: `uses: actions/u… .github/workflows/release-desktop-platf…:199
HIGH MINED115 [MINED115] Action `actions/attest-build-provenance` pinned to mutable ref `@v4`: `uses: a… .github/workflows/release-desktop-platf…:187
HIGH MINED115 [MINED115] Action `actions/attest-build-provenance` pinned to mutable ref `@v4`: `uses: a… .github/workflows/release-desktop-platf…:180
HIGH MINED115 [MINED115] Action `apple-actions/import-codesign-certs` pinned to mutable ref `@v7`: `use… .github/workflows/release-desktop-platf…:104
HIGH MINED115 [MINED115] Action `actions/download-artifact` pinned to mutable ref `@v4`: `uses: actions… .github/workflows/release-desktop-platf…:93
HIGH MINED115 [MINED115] Action `actions/checkout` pinned to mutable ref `@v6`: `uses: actions/checkout… .github/workflows/release-desktop-platf…:72
HIGH JRN009 Secret-like setting is echoed into a password input value packages/frontend/core/src/desktop/dial…:287
HIGH JRN009 Secret-like setting is echoed into a password input value packages/frontend/admin/src/modules/set…:92
HIGH MINED113 [MINED113] Express POST /global/stop has no auth: Express route POST /global/stop declare… packages/frontend/media-capture-playgro…:1060
HIGH MINED113 [MINED113] Express POST /global/record has no auth: Express route POST /global/record dec… packages/frontend/media-capture-playgro…:1050
HIGH MINED113 [MINED113] Express POST /transcribe has no auth: Express route POST /transcribe declared … packages/frontend/media-capture-playgro…:971
HIGH MINED113 [MINED113] Express POST /recordings/:foldername/transcribe has no auth: Express route POS… packages/frontend/media-capture-playgro…:885
HIGH MINED113 [MINED113] Express POST /apps/:process_id/stop has no auth: Express route POST /apps/:pro… packages/frontend/media-capture-playgro…:878
HIGH MINED113 [MINED113] Express POST /apps/:process_id/record has no auth: Express route POST /apps/:p… packages/frontend/media-capture-playgro…:862
HIGH MINED113 [MINED113] Express DELETE /recordings/:foldername has no auth: Express route DELETE /reco… packages/frontend/media-capture-playgro…:793
HIGH JRN004 Consent is collected in UI without visible backend audit persistence packages/backend/server/src/core/permis…:279
MED SEC087 [SEC087] JS: weak Math.random for crypto: Math.random() is not cryptographically secure; … blocksuite/affine/blocks/surface/src/ut…:2
MED SEC045 [SEC045] eval()/exec() on stored or user-supplied data: eval() and exec() on data — even … blocksuite/affine/blocks/bookmark/src/c…:47
MED SEC041 [SEC041] Tabnabbing — target="_blank" without rel="noopener noreferrer": <a target="_blan… blocksuite/affine/blocks/embed/src/embe…:39
MED SEC041 [SEC041] Tabnabbing — target="_blank" without rel="noopener noreferrer": <a target="_blan… blocksuite/affine/blocks/embed/src/embe…:23
MED SEC041 [SEC041] Tabnabbing — target="_blank" without rel="noopener noreferrer": <a target="_blan… blocksuite/affine/blocks/bookmark/src/b…:113
MED AUC001 [AUC001] No Repobility access matrix policy found: The repository uses web/API frameworks…
MED DKR002 Compose service `redis` image has no explicit tag .docker/selfhost/compose.yml:46
MED DKR002 Compose service `redis` image has no explicit tag .devcontainer/docker-compose.yml:25
MED DKR018 Database dump or local database file is included in Docker build context .dockerignore
MED DKR001 Docker final stage has no non-root USER .github/deployment/node/Dockerfile:21
MED WEB003 Public web service has no security.txt .well-known/security.txt
MED DKC013 Database service has no persistent data volume .docker/selfhost/compose.yml:46
MED DKC013 Database service has no persistent data volume .devcontainer/docker-compose.yml:25
MED WEB015 Public web app has no Content Security Policy index.html
LOW SEC132 [SEC132] String concat where the language has interpolation (AI style drift): String buil… blocksuite/affine/shared/src/services/e…:123
LOW WEB001 Public web app has no robots.txt robots.txt
LOW WEB002 Public web app has no sitemap sitemap.xml
LOW DKC015 Database service has no healthcheck .devcontainer/docker-compose.yml:25
LOW DKC015 Database service has no healthcheck .devcontainer/docker-compose.yml:16
LOW DKR008 .dockerignore misses sensitive defaults .dockerignore
LOW WEB008 Public docs site has no llms.txt llms.txt
LOW DKC010 Compose service lacks no-new-privileges hardening .docker/selfhost/compose.yml:2
LOW DKC006 Compose service does not declare a runtime user .docker/selfhost/compose.yml:2
LOW WEB011 Public web app has no humans.txt humans.txt
INFO MINED047 [MINED047] Emoji In Source: Emoji ✅ ❌ 🚀 in code/comments — common AI output unless explic… blocksuite/affine/data-view/src/propert…:13
INFO MINED052 [MINED052] Ts Any Typed: : any used as type annotation. Defeats TypeScript type safety. blocksuite/affine/data-view/src/core/vi…:100
INFO MINED052 [MINED052] Ts Any Typed: : any used as type annotation. Defeats TypeScript type safety. blocksuite/affine/data-view/src/core/vi…:23
INFO MINED052 [MINED052] Ts Any Typed: : any used as type annotation. Defeats TypeScript type safety. blocksuite/affine/data-view/src/core/lo…:14
INFO MINED054 [MINED054] Ts As Any: Casting to any (as any) bypasses type checking entirely. blocksuite/affine/components/src/peek/p…:21
INFO MINED054 [MINED054] Ts As Any: Casting to any (as any) bypasses type checking entirely. blocksuite/affine/blocks/data-view/src/…:293
INFO MINED054 [MINED054] Ts As Any: Casting to any (as any) bypasses type checking entirely. blocksuite/affine/blocks/code/src/code-…:112
INFO MINED045 [MINED045] Ts Non Null Assertion: x! asserts not null - bypasses null checks - TypeError … blocksuite/affine/blocks/database/src/s…:53
INFO MINED045 [MINED045] Ts Non Null Assertion: x! asserts not null - bypasses null checks - TypeError … blocksuite/affine/blocks/database/src/p…:366
INFO MINED045 [MINED045] Ts Non Null Assertion: x! asserts not null - bypasses null checks - TypeError … blocksuite/affine/blocks/attachment/src…:15
INFO MINED044 [MINED044] Js Console Log Prod: console.log left in code. Should be replaced with logger … blocksuite/affine/blocks/attachment/src…:74
INFO MINED044 [MINED044] Js Console Log Prod: console.log left in code. Should be replaced with logger … blocksuite/affine/all/vitest.config.ts:36
INFO MINED044 [MINED044] Js Console Log Prod: console.log left in code. Should be replaced with logger … .github/actions/deploy/deploy.mjs:169
INFO MINED043 [MINED043] Http Not Https: Hardcoded http:// (not localhost) for endpoints that handle cr… blocksuite/affine/blocks/embed/src/embe…:4
INFO MINED043 [MINED043] Http Not Https: Hardcoded http:// (not localhost) for endpoints that handle cr… blocksuite/affine/blocks/embed/src/embe…:4
INFO MINED043 [MINED043] Http Not Https: Hardcoded http:// (not localhost) for endpoints that handle cr… .devcontainer/docker-compose.yml:15
INFO MINED055 [MINED055] Npm Install No Lockfile: Production image runs npm install (resolves new versi… .devcontainer/setup-user.sh:2
INFO MINED055 [MINED055] Npm Install No Lockfile: Production image runs npm install (resolves new versi… .devcontainer/build.sh:5
Reset to top 5 126 findings available (after auto-suppression of test files + won't-fix)

Issue body (markdown)

## Code-quality scan: `toeverything/AFFiNE`

**Score: 66/100 (B+)**  ·  126 findings  ·  scanned 2026-06-05 08:38 UTC  ·  779,759 LOC

| Severity | Count |
|---|---|
| CRITICAL | 10 |
| HIGH | 74 |
| MEDIUM | 14 |
| LOW | 10 |

📊 [Full filterable report](https://repobility.com/scan/afab7b39-e811-445c-b495-24ac5273d6de/)  ·  ![scorecard](https://repobility.com/scan/afab7b39-e811-445c-b495-24ac5273d6de/report.png?v=1780648710-s2)

### Top findings

1. **CRITICAL** `SEC022` — Database URL With Embedded Credential
   `.devcontainer/docker-compose.yml:13` · A07:2021 Identification & Authentication Failures
2. **CRITICAL** `DKC007` — Compose service contains a literal secret environment value
   `.devcontainer/docker-compose.yml:16`
3. **CRITICAL** `MINED116` — Workflow uses `secrets.TEST_SERVER_CONFIG` on a `pull_request` trigger
   `.github/workflows/build-test.yml:1084` · ✓ Repobility
4. **CRITICAL** `MINED116` — Workflow uses `secrets.CODECOV_TOKEN` on a `pull_request` trigger
   `.github/workflows/build-test.yml:1020` · ✓ Repobility
5. **CRITICAL** `MINED116` — Workflow uses `secrets.TEST_SERVER_CONFIG` on a `pull_request` trigger
   `.github/workflows/build-test.yml:1009` · ✓ Repobility

---

**Security note**: this issue is public. If any flagged finding is a real, exploitable vulnerability, please redirect to your `SECURITY.md` policy or open a [private security advisory](https://docs.github.com/en/code-security/security-advisories/guidance-on-reporting-and-writing-information-about-vulnerabilities/privately-reporting-a-security-vulnerability) instead. We're happy to close this and re-submit privately.

---

_Filed automatically. Close this issue if not useful — we won't refile. Full report: https://repobility.com/scan/afab7b39-e811-445c-b495-24ac5273d6de/_
Already filed
This repo publishes a SECURITY.md policy and the scan contains 17 Critical/High security finding(s). Public issue filing would violate coordinated disclosure. Submit privately via the project's security reporting channel.
Megaproject â high spam risk
Could not determine 'toeverything/AFFiNE' star count (GitHub API rate-limited or unreachable). When in doubt about repo size, prefer opening a focused PR or a discussion rather than an issue.
Already filed
63/141 findings (45%) on this scan are already flagged as test-file, won't-fix, or suppressed. The scan is too noisy to file as a single issue. Curate down to specific actionable findings, or address the FP source first.

The button opens GitHubâs new-issue page in a new tab. You will see the title + body pre-filled â review, edit if you want, then click GitHubâs "Submit new issue" button. Repobility never posts anything on your behalf.

For real security findings on big repos: use the project's SECURITY.md or private advisory flow instead of a public issue.