From f8f9756687035c6bf64b5dbb010710f78e2676a6 Mon Sep 17 00:00:00 2001 From: CLU Date: Thu, 29 Oct 2026 17:19:01 -0500 Subject: [PATCH] feat: the Nextcloud stack on the board, above everything else Christian: 'Let's have every NextCloud thing come back as well-rated as it should be. It's deserving of the same level of scrutiny everybody else is.' Priority 20, above Slack and Kino, because this is the replacement we recommend to clients. If we will not grade our own recommendation, nothing else we publish is worth reading. 14 products: Server, Files, Talk, Mail, Calendar, Contacts, Photos, Notes, Deck, Office, Passwords, the spreed signaling stack, and both migration bridges (Dropbox, Google Drive). The migration apps matter most, because a migration tool that does not work makes the off-ramp a slogan. Nextcloud Server is the one to grade first. Every app score is conditioned on the platform underneath it, so grading the apps before the server would be measuring the second thing. None of these has a score yet, and none will get one until it has evidence. The recently-added attestation ladder and the reproducible-build cap both apply: Nextcloud is open source but has no reproducible build practice yet, so verifiability cannot exceed 3 on any of these today no matter how good the code is. --- deploy/bigtech-sucks-site-2026-10-29.tar.gz | Bin 0 -> 89515 bytes .../core/db/seed/0004-nextcloud-stack.sql | 78 ++++ packages/core/src/data/generated/catalog.json | 340 +++++++++++++++++- packages/core/src/data/generated/catalog.ts | 340 +++++++++++++++++- packages/web/public/catalog.json | 340 +++++++++++++++++- packages/web/public/oath.json | 8 +- 6 files changed, 1054 insertions(+), 52 deletions(-) create mode 100644 deploy/bigtech-sucks-site-2026-10-29.tar.gz create mode 100644 packages/core/db/seed/0004-nextcloud-stack.sql diff --git a/deploy/bigtech-sucks-site-2026-10-29.tar.gz b/deploy/bigtech-sucks-site-2026-10-29.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..a5e39d92518431a0ccbd3ad4df0c1fbea702a428 GIT binary patch literal 89515 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

1%{`UHgx8cW1@e~9wOgj@MPC~&} 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

i$GpJXWUfI>85DH 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 Gcm)7(Nz{`7 literal 0 HcmV?d00001 diff --git a/packages/core/db/seed/0004-nextcloud-stack.sql b/packages/core/db/seed/0004-nextcloud-stack.sql new file mode 100644 index 0000000..8562940 --- /dev/null +++ b/packages/core/db/seed/0004-nextcloud-stack.sql @@ -0,0 +1,78 @@ +-- ===================================================================== +-- 0004 — the Nextcloud stack, 2026-10-29 +-- +-- Christian: "We should prioritize running all those NextCloud applications +-- through the processor. Let's have every NextCloud thing come back as +-- well-rated as it should be. It's deserving of the same level of scrutiny +-- everybody else is." +-- +-- Priority 20: above Slack and Kino, because this is the replacement we +-- recommend to clients. If we will not grade our own recommendation, nothing +-- else we publish is worth reading. +-- +-- NOTE THE ASYMMETRY WE EXPECT AND MUST NOT DESIGN AROUND: +-- Nextcloud scores on a dimension Signal can never win, because there is no +-- third-party server to subpoena. It will also likely score worse than Signal +-- on verifiability and incident surface. "As well-rated as it should be" is the +-- instruction. Not "as well-rated as we hope." +-- ===================================================================== + +INSERT OR IGNORE INTO product + (id, vendor_id, name, category_id, platform, source_url, license, + sovereign, boss, art_slot, monthly_cost, priority, notes) +VALUES + ('nextcloud-server', 'nextcloud-gmbh', 'Nextcloud Server', 'files', 'server', + 'https://github.com/nextcloud/server', 'AGPL-3.0', 1, 0, NULL, 0, 20, + 'The platform every other Nextcloud app sits on. Grade this first, because every app score is conditioned on it.'), + + ('nextcloud-files', 'nextcloud-gmbh', 'Nextcloud Files', 'files', 'web', + 'https://github.com/nextcloud/server', 'AGPL-3.0', 1, 0, NULL, 0, 20, + 'Replacement for Google Drive and Dropbox.'), + + ('nextcloud-talk', 'nextcloud-gmbh', 'Nextcloud Talk', 'messaging', 'web', + 'https://github.com/nextcloud/spreed', 'AGPL-3.0', 1, 0, NULL, 0, 20, + 'Replacement for Slack and Teams. Backed by the spreed signaling stack.'), + + ('nextcloud-mail', 'nextcloud-gmbh', 'Nextcloud Mail', 'email', 'web', + 'https://github.com/nextcloud/mail', 'AGPL-3.0', 1, 0, NULL, 0, 20, + 'Replacement for Gmail and Outlook.'), + + ('nextcloud-calendar', 'nextcloud-gmbh', 'Nextcloud Calendar', 'calendar', 'web', + 'https://github.com/nextcloud/calendar', 'AGPL-3.0', 1, 0, NULL, 0, 20, + 'Replacement for Google Calendar.'), + + ('nextcloud-contacts', 'nextcloud-gmbh', 'Nextcloud Contacts', 'calendar', 'web', + 'https://github.com/nextcloud/contacts', 'AGPL-3.0', 1, 0, NULL, 0, 20, + 'Replacement for Google Contacts and iCloud Contacts.'), + + ('nextcloud-photos', 'nextcloud-gmbh', 'Nextcloud Photos', 'photos', 'web', + 'https://github.com/nextcloud/photos', 'AGPL-3.0', 1, 0, NULL, 0, 20, + 'Replacement for Google Photos and iCloud Photos.'), + + ('nextcloud-notes', 'nextcloud-gmbh', 'Nextcloud Notes', 'notes', 'web', + 'https://github.com/nextcloud/notes', 'AGPL-3.0', 1, 0, NULL, 0, 20, + 'Replacement for Notion and Evernote for plain note capture.'), + + ('nextcloud-deck', 'nextcloud-gmbh', 'Nextcloud Deck', 'project', 'web', + 'https://github.com/nextcloud/deck', 'AGPL-3.0', 1, 0, NULL, 0, 20, + 'Replacement for Trello and Asana boards.'), + + ('nextcloud-office', 'nextcloud-gmbh', 'Nextcloud Office', 'productivity', 'web', + 'https://github.com/nextcloud/richdocuments', 'AGPL-3.0', 1, 0, NULL, 0, 20, + 'Collabora-backed document editing. Replacement for Google Workspace and Microsoft 365.'), + + ('nextcloud-passwords', 'nextcloud-gmbh', 'Nextcloud Passwords', 'passwords', 'web', + 'https://github.com/nextcloud/passwords', 'AGPL-3.0', 1, 0, NULL, 0, 20, + 'Replacement for LastPass and 1Password. Community app, not a core Nextcloud GmbH product.'), + + ('nextcloud-spreed-signaling', 'nextcloud-gmbh', 'Nextcloud Spreed Signaling (HPB)', 'messaging', 'server', + 'https://github.com/strukturag/nextcloud-spreed-signaling', 'AGPL-3.0', 1, 0, NULL, 0, 20, + 'The standalone high-performance backend for Talk. Appears in Mint Software Manager as nextcloud-speed-signaling, client and proxy. Written by Struktur AG.'), + + ('nextcloud-migrate-dropbox', 'nextcloud-gmbh', 'Nextcloud Dropbox Migration', 'files', 'web', + 'https://github.com/nextcloud/migration', 'AGPL-3.0', 1, 0, NULL, 0, 20, + 'The off-ramp bridge. Christian: "Then we can do the Dropbox app."'), + + ('nextcloud-migrate-gdrive', 'nextcloud-gmbh', 'Nextcloud Google Drive Migration', 'files', 'web', + 'https://github.com/nextcloud/migration', 'AGPL-3.0', 1, 0, NULL, 0, 20, + 'The off-ramp bridge. Christian: "and we can do the Google Drive app."'); diff --git a/packages/core/src/data/generated/catalog.json b/packages/core/src/data/generated/catalog.json index a3b185b..62ca7c2 100644 --- a/packages/core/src/data/generated/catalog.json +++ b/packages/core/src/data/generated/catalog.json @@ -1,5 +1,5 @@ { - "generated_at": "2026-10-29T21:22:40.574Z", + "generated_at": "2026-10-29T22:18:53.099Z", "method_version": "btr-0.1", "dimensions": [ { @@ -588,6 +588,50 @@ "headline": null, "assessed_on": null }, + { + "id": "nextcloud-calendar", + "name": "Nextcloud Calendar", + "platform": "web", + "category_id": "calendar", + "vendor_id": "nextcloud-gmbh", + "sovereign": 1, + "boss": 0, + "art_slot": null, + "monthly_cost": 0, + "vendor": "Nextcloud GmbH", + "entity_type": "private", + "jurisdiction": "DE", + "business_model": "subscription", + "weighted_total": null, + "grade": null, + "policy": null, + "infra": null, + "weakest_dimension": null, + "headline": null, + "assessed_on": null + }, + { + "id": "nextcloud-contacts", + "name": "Nextcloud Contacts", + "platform": "web", + "category_id": "calendar", + "vendor_id": "nextcloud-gmbh", + "sovereign": 1, + "boss": 0, + "art_slot": null, + "monthly_cost": 0, + "vendor": "Nextcloud GmbH", + "entity_type": "private", + "jurisdiction": "DE", + "business_model": "subscription", + "weighted_total": null, + "grade": null, + "policy": null, + "infra": null, + "weakest_dimension": null, + "headline": null, + "assessed_on": null + }, { "id": "salesforce", "name": "Salesforce", @@ -874,6 +918,28 @@ "headline": null, "assessed_on": null }, + { + "id": "nextcloud-mail", + "name": "Nextcloud Mail", + "platform": "web", + "category_id": "email", + "vendor_id": "nextcloud-gmbh", + "sovereign": 1, + "boss": 0, + "art_slot": null, + "monthly_cost": 0, + "vendor": "Nextcloud GmbH", + "entity_type": "private", + "jurisdiction": "DE", + "business_model": "subscription", + "weighted_total": null, + "grade": null, + "policy": null, + "infra": null, + "weakest_dimension": null, + "headline": null, + "assessed_on": null + }, { "id": "outlook", "name": "Outlook", @@ -1072,6 +1138,94 @@ "headline": null, "assessed_on": null }, + { + "id": "nextcloud-migrate-dropbox", + "name": "Nextcloud Dropbox Migration", + "platform": "web", + "category_id": "files", + "vendor_id": "nextcloud-gmbh", + "sovereign": 1, + "boss": 0, + "art_slot": null, + "monthly_cost": 0, + "vendor": "Nextcloud GmbH", + "entity_type": "private", + "jurisdiction": "DE", + "business_model": "subscription", + "weighted_total": null, + "grade": null, + "policy": null, + "infra": null, + "weakest_dimension": null, + "headline": null, + "assessed_on": null + }, + { + "id": "nextcloud-files", + "name": "Nextcloud Files", + "platform": "web", + "category_id": "files", + "vendor_id": "nextcloud-gmbh", + "sovereign": 1, + "boss": 0, + "art_slot": null, + "monthly_cost": 0, + "vendor": "Nextcloud GmbH", + "entity_type": "private", + "jurisdiction": "DE", + "business_model": "subscription", + "weighted_total": null, + "grade": null, + "policy": null, + "infra": null, + "weakest_dimension": null, + "headline": null, + "assessed_on": null + }, + { + "id": "nextcloud-migrate-gdrive", + "name": "Nextcloud Google Drive Migration", + "platform": "web", + "category_id": "files", + "vendor_id": "nextcloud-gmbh", + "sovereign": 1, + "boss": 0, + "art_slot": null, + "monthly_cost": 0, + "vendor": "Nextcloud GmbH", + "entity_type": "private", + "jurisdiction": "DE", + "business_model": "subscription", + "weighted_total": null, + "grade": null, + "policy": null, + "infra": null, + "weakest_dimension": null, + "headline": null, + "assessed_on": null + }, + { + "id": "nextcloud-server", + "name": "Nextcloud Server", + "platform": "server", + "category_id": "files", + "vendor_id": "nextcloud-gmbh", + "sovereign": 1, + "boss": 0, + "art_slot": null, + "monthly_cost": 0, + "vendor": "Nextcloud GmbH", + "entity_type": "private", + "jurisdiction": "DE", + "business_model": "subscription", + "weighted_total": null, + "grade": null, + "policy": null, + "infra": null, + "weakest_dimension": null, + "headline": null, + "assessed_on": null + }, { "id": "ocis", "name": "Ocis", @@ -1468,6 +1622,50 @@ "headline": null, "assessed_on": null }, + { + "id": "nextcloud-spreed-signaling", + "name": "Nextcloud Spreed Signaling (HPB)", + "platform": "server", + "category_id": "messaging", + "vendor_id": "nextcloud-gmbh", + "sovereign": 1, + "boss": 0, + "art_slot": null, + "monthly_cost": 0, + "vendor": "Nextcloud GmbH", + "entity_type": "private", + "jurisdiction": "DE", + "business_model": "subscription", + "weighted_total": null, + "grade": null, + "policy": null, + "infra": null, + "weakest_dimension": null, + "headline": null, + "assessed_on": null + }, + { + "id": "nextcloud-talk", + "name": "Nextcloud Talk", + "platform": "web", + "category_id": "messaging", + "vendor_id": "nextcloud-gmbh", + "sovereign": 1, + "boss": 0, + "art_slot": null, + "monthly_cost": 0, + "vendor": "Nextcloud GmbH", + "entity_type": "private", + "jurisdiction": "DE", + "business_model": "subscription", + "weighted_total": null, + "grade": null, + "policy": null, + "infra": null, + "weakest_dimension": null, + "headline": null, + "assessed_on": null + }, { "id": "parla", "name": "Parla", @@ -1666,6 +1864,28 @@ "headline": null, "assessed_on": null }, + { + "id": "nextcloud-notes", + "name": "Nextcloud Notes", + "platform": "web", + "category_id": "notes", + "vendor_id": "nextcloud-gmbh", + "sovereign": 1, + "boss": 0, + "art_slot": null, + "monthly_cost": 0, + "vendor": "Nextcloud GmbH", + "entity_type": "private", + "jurisdiction": "DE", + "business_model": "subscription", + "weighted_total": null, + "grade": null, + "policy": null, + "infra": null, + "weakest_dimension": null, + "headline": null, + "assessed_on": null + }, { "id": "notes", "name": "Notes", @@ -1996,6 +2216,28 @@ "headline": null, "assessed_on": null }, + { + "id": "nextcloud-passwords", + "name": "Nextcloud Passwords", + "platform": "web", + "category_id": "passwords", + "vendor_id": "nextcloud-gmbh", + "sovereign": 1, + "boss": 0, + "art_slot": null, + "monthly_cost": 0, + "vendor": "Nextcloud GmbH", + "entity_type": "private", + "jurisdiction": "DE", + "business_model": "subscription", + "weighted_total": null, + "grade": null, + "policy": null, + "infra": null, + "weakest_dimension": null, + "headline": null, + "assessed_on": null + }, { "id": "nitrokey-app2", "name": "Nitrokey App2", @@ -2282,6 +2524,28 @@ "headline": null, "assessed_on": null }, + { + "id": "nextcloud-photos", + "name": "Nextcloud Photos", + "platform": "web", + "category_id": "photos", + "vendor_id": "nextcloud-gmbh", + "sovereign": 1, + "boss": 0, + "art_slot": null, + "monthly_cost": 0, + "vendor": "Nextcloud GmbH", + "entity_type": "private", + "jurisdiction": "DE", + "business_model": "subscription", + "weighted_total": null, + "grade": null, + "policy": null, + "infra": null, + "weakest_dimension": null, + "headline": null, + "assessed_on": null + }, { "id": "photocollage", "name": "PhotoCollage", @@ -2480,6 +2744,28 @@ "headline": null, "assessed_on": null }, + { + "id": "nextcloud-office", + "name": "Nextcloud Office", + "platform": "web", + "category_id": "productivity", + "vendor_id": "nextcloud-gmbh", + "sovereign": 1, + "boss": 0, + "art_slot": null, + "monthly_cost": 0, + "vendor": "Nextcloud GmbH", + "entity_type": "private", + "jurisdiction": "DE", + "business_model": "subscription", + "weighted_total": null, + "grade": null, + "policy": null, + "infra": null, + "weakest_dimension": null, + "headline": null, + "assessed_on": null + }, { "id": "asana", "name": "Asana", @@ -2502,6 +2788,28 @@ "headline": null, "assessed_on": null }, + { + "id": "nextcloud-deck", + "name": "Nextcloud Deck", + "platform": "web", + "category_id": "project", + "vendor_id": "nextcloud-gmbh", + "sovereign": 1, + "boss": 0, + "art_slot": null, + "monthly_cost": 0, + "vendor": "Nextcloud GmbH", + "entity_type": "private", + "jurisdiction": "DE", + "business_model": "subscription", + "weighted_total": null, + "grade": null, + "policy": null, + "infra": null, + "weakest_dimension": null, + "headline": null, + "assessed_on": null + }, { "id": "trello", "name": "Trello", @@ -2851,7 +3159,7 @@ ], "evidence": [ { - "id": 44, + "id": 55, "assessment_id": "A-2026-10-29-SIGNAL-DESKTOP", "dimension_id": "local_data_exposure", "claim": "Attachments are stored unencrypted on the filesystem; the SQLCipher key is held by the OS keyring.", @@ -2862,7 +3170,7 @@ "observed_at": "2026-10-29T13:13:56-05:00" }, { - "id": 45, + "id": 56, "assessment_id": "A-2026-10-29-SIGNAL-DESKTOP", "dimension_id": "telemetry_egress", "claim": "Electron media permission defaults to false and audio is denied unless the user has enabled mediaPermissions.", @@ -2873,7 +3181,7 @@ "observed_at": "2026-10-29T13:13:56-05:00" }, { - "id": 46, + "id": 57, "assessment_id": "A-2026-10-29-SIGNAL-DESKTOP", "dimension_id": "telemetry_egress", "claim": "Zero analytics, tracker or crash-upload dependencies across 224 packages.", @@ -2884,7 +3192,7 @@ "observed_at": "2026-10-29T13:13:56-05:00" }, { - "id": 47, + "id": 58, "assessment_id": "A-2026-10-29-SIGNAL-DESKTOP", "dimension_id": "telemetry_egress", "claim": "Only two audio capture call sites exist and both are reachable only from an explicit UI action.", @@ -2895,7 +3203,7 @@ "observed_at": "2026-10-29T13:13:56-05:00" }, { - "id": 48, + "id": 59, "assessment_id": "A-2026-10-29-SIGNAL-DESKTOP", "dimension_id": "verifiability", "claim": "Signal states reproducible builds for macOS and Windows are not available, and the Linux build is experimental.", @@ -2906,7 +3214,7 @@ "observed_at": "2026-10-29T13:13:56-05:00" }, { - "id": 49, + "id": 60, "assessment_id": "A-2026-10-29-SIGNAL-DESKTOP", "dimension_id": "server_retention", "claim": "Grand jury subpoena response returned two timestamps and nothing else.", @@ -2917,7 +3225,7 @@ "observed_at": "2026-10-29T13:13:56-05:00" }, { - "id": 50, + "id": 61, "assessment_id": "A-2026-10-29-SIGNAL-DESKTOP", "dimension_id": "ownership_jurisdiction", "claim": "Signal Technology Foundation is a 501(c)(3) with EIN 82-4506840.", @@ -2928,7 +3236,7 @@ "observed_at": "2026-10-29T13:13:56-05:00" }, { - "id": 51, + "id": 62, "assessment_id": "A-2026-10-29-SIGNAL-DESKTOP", "dimension_id": "incident_record", "claim": "FBI and CISA PSA260626: Russian intelligence compromised individual Signal accounts via phishing and Backup Recovery Key theft, but NOT the encryption or the application itself.", @@ -2939,7 +3247,7 @@ "observed_at": "2026-10-29T15:26:00-05:00" }, { - "id": 52, + "id": 63, "assessment_id": "A-2026-10-29-SIGNAL-DESKTOP", "dimension_id": "incident_record", "claim": "Signal statement, 28 April 2026: \"Signal was not hacked, in that our encryption, infrastructure, and the integrity of the app code was not compromised.\" Additional linkage confirmations shipped 13 May 2026.", @@ -2950,7 +3258,7 @@ "observed_at": "2026-10-29T15:26:00-05:00" }, { - "id": 53, + "id": 64, "assessment_id": "A-2026-10-29-SIGNAL-DESKTOP", "dimension_id": "ownership_jurisdiction", "claim": "Open Technology Fund funded Open Whisper Systems $2,955,000 across 2013 to 2016, itemised on OTF own project page. This is the factual core under the \"US government funded Signal\" claim, and it is already reflected in the two points docked on this dimension.", @@ -2961,7 +3269,7 @@ "observed_at": "2026-10-29T15:26:00-05:00" }, { - "id": 54, + "id": 65, "assessment_id": "A-2026-10-29-SIGNAL-DESKTOP", "dimension_id": "user_control_exit", "claim": "Signal publicly committed to leaving the UK (2023, Online Safety Act) and Sweden (Feb 2025) rather than weaken encryption. A vendor that threatens to lose a market is behaving incompatibly with a secret backdoor.", @@ -2974,7 +3282,7 @@ ], "findings": [ { - "id": 21, + "id": 25, "assessment_id": "A-2026-10-29-SIGNAL-DESKTOP", "severity": "high", "title": "Received attachments are stored unencrypted on disk", @@ -2983,7 +3291,7 @@ "cve": "CVE-2023-24069" }, { - "id": 22, + "id": 26, "assessment_id": "A-2026-10-29-SIGNAL-DESKTOP", "severity": "medium", "title": "No verified reproducible build for the Linux package", @@ -2992,7 +3300,7 @@ "cve": null }, { - "id": 23, + "id": 27, "assessment_id": "A-2026-10-29-SIGNAL-DESKTOP", "severity": "medium", "title": "Local database key is held in the OS keyring", @@ -3001,7 +3309,7 @@ "cve": null }, { - "id": 24, + "id": 28, "assessment_id": "A-2026-10-29-SIGNAL-DESKTOP", "severity": "low", "title": "Registration requires a phone number", diff --git a/packages/core/src/data/generated/catalog.ts b/packages/core/src/data/generated/catalog.ts index 9041a4d..ea62744 100644 --- a/packages/core/src/data/generated/catalog.ts +++ b/packages/core/src/data/generated/catalog.ts @@ -39,7 +39,7 @@ export interface CatalogDimension { } export const catalog = { - "generated_at": "2026-10-29T21:22:40.574Z", + "generated_at": "2026-10-29T22:18:53.099Z", "method_version": "btr-0.1", "dimensions": [ { @@ -628,6 +628,50 @@ export const catalog = { "headline": null, "assessed_on": null }, + { + "id": "nextcloud-calendar", + "name": "Nextcloud Calendar", + "platform": "web", + "category_id": "calendar", + "vendor_id": "nextcloud-gmbh", + "sovereign": 1, + "boss": 0, + "art_slot": null, + "monthly_cost": 0, + "vendor": "Nextcloud GmbH", + "entity_type": "private", + "jurisdiction": "DE", + "business_model": "subscription", + "weighted_total": null, + "grade": null, + "policy": null, + "infra": null, + "weakest_dimension": null, + "headline": null, + "assessed_on": null + }, + { + "id": "nextcloud-contacts", + "name": "Nextcloud Contacts", + "platform": "web", + "category_id": "calendar", + "vendor_id": "nextcloud-gmbh", + "sovereign": 1, + "boss": 0, + "art_slot": null, + "monthly_cost": 0, + "vendor": "Nextcloud GmbH", + "entity_type": "private", + "jurisdiction": "DE", + "business_model": "subscription", + "weighted_total": null, + "grade": null, + "policy": null, + "infra": null, + "weakest_dimension": null, + "headline": null, + "assessed_on": null + }, { "id": "salesforce", "name": "Salesforce", @@ -914,6 +958,28 @@ export const catalog = { "headline": null, "assessed_on": null }, + { + "id": "nextcloud-mail", + "name": "Nextcloud Mail", + "platform": "web", + "category_id": "email", + "vendor_id": "nextcloud-gmbh", + "sovereign": 1, + "boss": 0, + "art_slot": null, + "monthly_cost": 0, + "vendor": "Nextcloud GmbH", + "entity_type": "private", + "jurisdiction": "DE", + "business_model": "subscription", + "weighted_total": null, + "grade": null, + "policy": null, + "infra": null, + "weakest_dimension": null, + "headline": null, + "assessed_on": null + }, { "id": "outlook", "name": "Outlook", @@ -1112,6 +1178,94 @@ export const catalog = { "headline": null, "assessed_on": null }, + { + "id": "nextcloud-migrate-dropbox", + "name": "Nextcloud Dropbox Migration", + "platform": "web", + "category_id": "files", + "vendor_id": "nextcloud-gmbh", + "sovereign": 1, + "boss": 0, + "art_slot": null, + "monthly_cost": 0, + "vendor": "Nextcloud GmbH", + "entity_type": "private", + "jurisdiction": "DE", + "business_model": "subscription", + "weighted_total": null, + "grade": null, + "policy": null, + "infra": null, + "weakest_dimension": null, + "headline": null, + "assessed_on": null + }, + { + "id": "nextcloud-files", + "name": "Nextcloud Files", + "platform": "web", + "category_id": "files", + "vendor_id": "nextcloud-gmbh", + "sovereign": 1, + "boss": 0, + "art_slot": null, + "monthly_cost": 0, + "vendor": "Nextcloud GmbH", + "entity_type": "private", + "jurisdiction": "DE", + "business_model": "subscription", + "weighted_total": null, + "grade": null, + "policy": null, + "infra": null, + "weakest_dimension": null, + "headline": null, + "assessed_on": null + }, + { + "id": "nextcloud-migrate-gdrive", + "name": "Nextcloud Google Drive Migration", + "platform": "web", + "category_id": "files", + "vendor_id": "nextcloud-gmbh", + "sovereign": 1, + "boss": 0, + "art_slot": null, + "monthly_cost": 0, + "vendor": "Nextcloud GmbH", + "entity_type": "private", + "jurisdiction": "DE", + "business_model": "subscription", + "weighted_total": null, + "grade": null, + "policy": null, + "infra": null, + "weakest_dimension": null, + "headline": null, + "assessed_on": null + }, + { + "id": "nextcloud-server", + "name": "Nextcloud Server", + "platform": "server", + "category_id": "files", + "vendor_id": "nextcloud-gmbh", + "sovereign": 1, + "boss": 0, + "art_slot": null, + "monthly_cost": 0, + "vendor": "Nextcloud GmbH", + "entity_type": "private", + "jurisdiction": "DE", + "business_model": "subscription", + "weighted_total": null, + "grade": null, + "policy": null, + "infra": null, + "weakest_dimension": null, + "headline": null, + "assessed_on": null + }, { "id": "ocis", "name": "Ocis", @@ -1508,6 +1662,50 @@ export const catalog = { "headline": null, "assessed_on": null }, + { + "id": "nextcloud-spreed-signaling", + "name": "Nextcloud Spreed Signaling (HPB)", + "platform": "server", + "category_id": "messaging", + "vendor_id": "nextcloud-gmbh", + "sovereign": 1, + "boss": 0, + "art_slot": null, + "monthly_cost": 0, + "vendor": "Nextcloud GmbH", + "entity_type": "private", + "jurisdiction": "DE", + "business_model": "subscription", + "weighted_total": null, + "grade": null, + "policy": null, + "infra": null, + "weakest_dimension": null, + "headline": null, + "assessed_on": null + }, + { + "id": "nextcloud-talk", + "name": "Nextcloud Talk", + "platform": "web", + "category_id": "messaging", + "vendor_id": "nextcloud-gmbh", + "sovereign": 1, + "boss": 0, + "art_slot": null, + "monthly_cost": 0, + "vendor": "Nextcloud GmbH", + "entity_type": "private", + "jurisdiction": "DE", + "business_model": "subscription", + "weighted_total": null, + "grade": null, + "policy": null, + "infra": null, + "weakest_dimension": null, + "headline": null, + "assessed_on": null + }, { "id": "parla", "name": "Parla", @@ -1706,6 +1904,28 @@ export const catalog = { "headline": null, "assessed_on": null }, + { + "id": "nextcloud-notes", + "name": "Nextcloud Notes", + "platform": "web", + "category_id": "notes", + "vendor_id": "nextcloud-gmbh", + "sovereign": 1, + "boss": 0, + "art_slot": null, + "monthly_cost": 0, + "vendor": "Nextcloud GmbH", + "entity_type": "private", + "jurisdiction": "DE", + "business_model": "subscription", + "weighted_total": null, + "grade": null, + "policy": null, + "infra": null, + "weakest_dimension": null, + "headline": null, + "assessed_on": null + }, { "id": "notes", "name": "Notes", @@ -2036,6 +2256,28 @@ export const catalog = { "headline": null, "assessed_on": null }, + { + "id": "nextcloud-passwords", + "name": "Nextcloud Passwords", + "platform": "web", + "category_id": "passwords", + "vendor_id": "nextcloud-gmbh", + "sovereign": 1, + "boss": 0, + "art_slot": null, + "monthly_cost": 0, + "vendor": "Nextcloud GmbH", + "entity_type": "private", + "jurisdiction": "DE", + "business_model": "subscription", + "weighted_total": null, + "grade": null, + "policy": null, + "infra": null, + "weakest_dimension": null, + "headline": null, + "assessed_on": null + }, { "id": "nitrokey-app2", "name": "Nitrokey App2", @@ -2322,6 +2564,28 @@ export const catalog = { "headline": null, "assessed_on": null }, + { + "id": "nextcloud-photos", + "name": "Nextcloud Photos", + "platform": "web", + "category_id": "photos", + "vendor_id": "nextcloud-gmbh", + "sovereign": 1, + "boss": 0, + "art_slot": null, + "monthly_cost": 0, + "vendor": "Nextcloud GmbH", + "entity_type": "private", + "jurisdiction": "DE", + "business_model": "subscription", + "weighted_total": null, + "grade": null, + "policy": null, + "infra": null, + "weakest_dimension": null, + "headline": null, + "assessed_on": null + }, { "id": "photocollage", "name": "PhotoCollage", @@ -2520,6 +2784,28 @@ export const catalog = { "headline": null, "assessed_on": null }, + { + "id": "nextcloud-office", + "name": "Nextcloud Office", + "platform": "web", + "category_id": "productivity", + "vendor_id": "nextcloud-gmbh", + "sovereign": 1, + "boss": 0, + "art_slot": null, + "monthly_cost": 0, + "vendor": "Nextcloud GmbH", + "entity_type": "private", + "jurisdiction": "DE", + "business_model": "subscription", + "weighted_total": null, + "grade": null, + "policy": null, + "infra": null, + "weakest_dimension": null, + "headline": null, + "assessed_on": null + }, { "id": "asana", "name": "Asana", @@ -2542,6 +2828,28 @@ export const catalog = { "headline": null, "assessed_on": null }, + { + "id": "nextcloud-deck", + "name": "Nextcloud Deck", + "platform": "web", + "category_id": "project", + "vendor_id": "nextcloud-gmbh", + "sovereign": 1, + "boss": 0, + "art_slot": null, + "monthly_cost": 0, + "vendor": "Nextcloud GmbH", + "entity_type": "private", + "jurisdiction": "DE", + "business_model": "subscription", + "weighted_total": null, + "grade": null, + "policy": null, + "infra": null, + "weakest_dimension": null, + "headline": null, + "assessed_on": null + }, { "id": "trello", "name": "Trello", @@ -2891,7 +3199,7 @@ export const catalog = { ], "evidence": [ { - "id": 44, + "id": 55, "assessment_id": "A-2026-10-29-SIGNAL-DESKTOP", "dimension_id": "local_data_exposure", "claim": "Attachments are stored unencrypted on the filesystem; the SQLCipher key is held by the OS keyring.", @@ -2902,7 +3210,7 @@ export const catalog = { "observed_at": "2026-10-29T13:13:56-05:00" }, { - "id": 45, + "id": 56, "assessment_id": "A-2026-10-29-SIGNAL-DESKTOP", "dimension_id": "telemetry_egress", "claim": "Electron media permission defaults to false and audio is denied unless the user has enabled mediaPermissions.", @@ -2913,7 +3221,7 @@ export const catalog = { "observed_at": "2026-10-29T13:13:56-05:00" }, { - "id": 46, + "id": 57, "assessment_id": "A-2026-10-29-SIGNAL-DESKTOP", "dimension_id": "telemetry_egress", "claim": "Zero analytics, tracker or crash-upload dependencies across 224 packages.", @@ -2924,7 +3232,7 @@ export const catalog = { "observed_at": "2026-10-29T13:13:56-05:00" }, { - "id": 47, + "id": 58, "assessment_id": "A-2026-10-29-SIGNAL-DESKTOP", "dimension_id": "telemetry_egress", "claim": "Only two audio capture call sites exist and both are reachable only from an explicit UI action.", @@ -2935,7 +3243,7 @@ export const catalog = { "observed_at": "2026-10-29T13:13:56-05:00" }, { - "id": 48, + "id": 59, "assessment_id": "A-2026-10-29-SIGNAL-DESKTOP", "dimension_id": "verifiability", "claim": "Signal states reproducible builds for macOS and Windows are not available, and the Linux build is experimental.", @@ -2946,7 +3254,7 @@ export const catalog = { "observed_at": "2026-10-29T13:13:56-05:00" }, { - "id": 49, + "id": 60, "assessment_id": "A-2026-10-29-SIGNAL-DESKTOP", "dimension_id": "server_retention", "claim": "Grand jury subpoena response returned two timestamps and nothing else.", @@ -2957,7 +3265,7 @@ export const catalog = { "observed_at": "2026-10-29T13:13:56-05:00" }, { - "id": 50, + "id": 61, "assessment_id": "A-2026-10-29-SIGNAL-DESKTOP", "dimension_id": "ownership_jurisdiction", "claim": "Signal Technology Foundation is a 501(c)(3) with EIN 82-4506840.", @@ -2968,7 +3276,7 @@ export const catalog = { "observed_at": "2026-10-29T13:13:56-05:00" }, { - "id": 51, + "id": 62, "assessment_id": "A-2026-10-29-SIGNAL-DESKTOP", "dimension_id": "incident_record", "claim": "FBI and CISA PSA260626: Russian intelligence compromised individual Signal accounts via phishing and Backup Recovery Key theft, but NOT the encryption or the application itself.", @@ -2979,7 +3287,7 @@ export const catalog = { "observed_at": "2026-10-29T15:26:00-05:00" }, { - "id": 52, + "id": 63, "assessment_id": "A-2026-10-29-SIGNAL-DESKTOP", "dimension_id": "incident_record", "claim": "Signal statement, 28 April 2026: \"Signal was not hacked, in that our encryption, infrastructure, and the integrity of the app code was not compromised.\" Additional linkage confirmations shipped 13 May 2026.", @@ -2990,7 +3298,7 @@ export const catalog = { "observed_at": "2026-10-29T15:26:00-05:00" }, { - "id": 53, + "id": 64, "assessment_id": "A-2026-10-29-SIGNAL-DESKTOP", "dimension_id": "ownership_jurisdiction", "claim": "Open Technology Fund funded Open Whisper Systems $2,955,000 across 2013 to 2016, itemised on OTF own project page. This is the factual core under the \"US government funded Signal\" claim, and it is already reflected in the two points docked on this dimension.", @@ -3001,7 +3309,7 @@ export const catalog = { "observed_at": "2026-10-29T15:26:00-05:00" }, { - "id": 54, + "id": 65, "assessment_id": "A-2026-10-29-SIGNAL-DESKTOP", "dimension_id": "user_control_exit", "claim": "Signal publicly committed to leaving the UK (2023, Online Safety Act) and Sweden (Feb 2025) rather than weaken encryption. A vendor that threatens to lose a market is behaving incompatibly with a secret backdoor.", @@ -3014,7 +3322,7 @@ export const catalog = { ], "findings": [ { - "id": 21, + "id": 25, "assessment_id": "A-2026-10-29-SIGNAL-DESKTOP", "severity": "high", "title": "Received attachments are stored unencrypted on disk", @@ -3023,7 +3331,7 @@ export const catalog = { "cve": "CVE-2023-24069" }, { - "id": 22, + "id": 26, "assessment_id": "A-2026-10-29-SIGNAL-DESKTOP", "severity": "medium", "title": "No verified reproducible build for the Linux package", @@ -3032,7 +3340,7 @@ export const catalog = { "cve": null }, { - "id": 23, + "id": 27, "assessment_id": "A-2026-10-29-SIGNAL-DESKTOP", "severity": "medium", "title": "Local database key is held in the OS keyring", @@ -3041,7 +3349,7 @@ export const catalog = { "cve": null }, { - "id": 24, + "id": 28, "assessment_id": "A-2026-10-29-SIGNAL-DESKTOP", "severity": "low", "title": "Registration requires a phone number", diff --git a/packages/web/public/catalog.json b/packages/web/public/catalog.json index a3b185b..62ca7c2 100644 --- a/packages/web/public/catalog.json +++ b/packages/web/public/catalog.json @@ -1,5 +1,5 @@ { - "generated_at": "2026-10-29T21:22:40.574Z", + "generated_at": "2026-10-29T22:18:53.099Z", "method_version": "btr-0.1", "dimensions": [ { @@ -588,6 +588,50 @@ "headline": null, "assessed_on": null }, + { + "id": "nextcloud-calendar", + "name": "Nextcloud Calendar", + "platform": "web", + "category_id": "calendar", + "vendor_id": "nextcloud-gmbh", + "sovereign": 1, + "boss": 0, + "art_slot": null, + "monthly_cost": 0, + "vendor": "Nextcloud GmbH", + "entity_type": "private", + "jurisdiction": "DE", + "business_model": "subscription", + "weighted_total": null, + "grade": null, + "policy": null, + "infra": null, + "weakest_dimension": null, + "headline": null, + "assessed_on": null + }, + { + "id": "nextcloud-contacts", + "name": "Nextcloud Contacts", + "platform": "web", + "category_id": "calendar", + "vendor_id": "nextcloud-gmbh", + "sovereign": 1, + "boss": 0, + "art_slot": null, + "monthly_cost": 0, + "vendor": "Nextcloud GmbH", + "entity_type": "private", + "jurisdiction": "DE", + "business_model": "subscription", + "weighted_total": null, + "grade": null, + "policy": null, + "infra": null, + "weakest_dimension": null, + "headline": null, + "assessed_on": null + }, { "id": "salesforce", "name": "Salesforce", @@ -874,6 +918,28 @@ "headline": null, "assessed_on": null }, + { + "id": "nextcloud-mail", + "name": "Nextcloud Mail", + "platform": "web", + "category_id": "email", + "vendor_id": "nextcloud-gmbh", + "sovereign": 1, + "boss": 0, + "art_slot": null, + "monthly_cost": 0, + "vendor": "Nextcloud GmbH", + "entity_type": "private", + "jurisdiction": "DE", + "business_model": "subscription", + "weighted_total": null, + "grade": null, + "policy": null, + "infra": null, + "weakest_dimension": null, + "headline": null, + "assessed_on": null + }, { "id": "outlook", "name": "Outlook", @@ -1072,6 +1138,94 @@ "headline": null, "assessed_on": null }, + { + "id": "nextcloud-migrate-dropbox", + "name": "Nextcloud Dropbox Migration", + "platform": "web", + "category_id": "files", + "vendor_id": "nextcloud-gmbh", + "sovereign": 1, + "boss": 0, + "art_slot": null, + "monthly_cost": 0, + "vendor": "Nextcloud GmbH", + "entity_type": "private", + "jurisdiction": "DE", + "business_model": "subscription", + "weighted_total": null, + "grade": null, + "policy": null, + "infra": null, + "weakest_dimension": null, + "headline": null, + "assessed_on": null + }, + { + "id": "nextcloud-files", + "name": "Nextcloud Files", + "platform": "web", + "category_id": "files", + "vendor_id": "nextcloud-gmbh", + "sovereign": 1, + "boss": 0, + "art_slot": null, + "monthly_cost": 0, + "vendor": "Nextcloud GmbH", + "entity_type": "private", + "jurisdiction": "DE", + "business_model": "subscription", + "weighted_total": null, + "grade": null, + "policy": null, + "infra": null, + "weakest_dimension": null, + "headline": null, + "assessed_on": null + }, + { + "id": "nextcloud-migrate-gdrive", + "name": "Nextcloud Google Drive Migration", + "platform": "web", + "category_id": "files", + "vendor_id": "nextcloud-gmbh", + "sovereign": 1, + "boss": 0, + "art_slot": null, + "monthly_cost": 0, + "vendor": "Nextcloud GmbH", + "entity_type": "private", + "jurisdiction": "DE", + "business_model": "subscription", + "weighted_total": null, + "grade": null, + "policy": null, + "infra": null, + "weakest_dimension": null, + "headline": null, + "assessed_on": null + }, + { + "id": "nextcloud-server", + "name": "Nextcloud Server", + "platform": "server", + "category_id": "files", + "vendor_id": "nextcloud-gmbh", + "sovereign": 1, + "boss": 0, + "art_slot": null, + "monthly_cost": 0, + "vendor": "Nextcloud GmbH", + "entity_type": "private", + "jurisdiction": "DE", + "business_model": "subscription", + "weighted_total": null, + "grade": null, + "policy": null, + "infra": null, + "weakest_dimension": null, + "headline": null, + "assessed_on": null + }, { "id": "ocis", "name": "Ocis", @@ -1468,6 +1622,50 @@ "headline": null, "assessed_on": null }, + { + "id": "nextcloud-spreed-signaling", + "name": "Nextcloud Spreed Signaling (HPB)", + "platform": "server", + "category_id": "messaging", + "vendor_id": "nextcloud-gmbh", + "sovereign": 1, + "boss": 0, + "art_slot": null, + "monthly_cost": 0, + "vendor": "Nextcloud GmbH", + "entity_type": "private", + "jurisdiction": "DE", + "business_model": "subscription", + "weighted_total": null, + "grade": null, + "policy": null, + "infra": null, + "weakest_dimension": null, + "headline": null, + "assessed_on": null + }, + { + "id": "nextcloud-talk", + "name": "Nextcloud Talk", + "platform": "web", + "category_id": "messaging", + "vendor_id": "nextcloud-gmbh", + "sovereign": 1, + "boss": 0, + "art_slot": null, + "monthly_cost": 0, + "vendor": "Nextcloud GmbH", + "entity_type": "private", + "jurisdiction": "DE", + "business_model": "subscription", + "weighted_total": null, + "grade": null, + "policy": null, + "infra": null, + "weakest_dimension": null, + "headline": null, + "assessed_on": null + }, { "id": "parla", "name": "Parla", @@ -1666,6 +1864,28 @@ "headline": null, "assessed_on": null }, + { + "id": "nextcloud-notes", + "name": "Nextcloud Notes", + "platform": "web", + "category_id": "notes", + "vendor_id": "nextcloud-gmbh", + "sovereign": 1, + "boss": 0, + "art_slot": null, + "monthly_cost": 0, + "vendor": "Nextcloud GmbH", + "entity_type": "private", + "jurisdiction": "DE", + "business_model": "subscription", + "weighted_total": null, + "grade": null, + "policy": null, + "infra": null, + "weakest_dimension": null, + "headline": null, + "assessed_on": null + }, { "id": "notes", "name": "Notes", @@ -1996,6 +2216,28 @@ "headline": null, "assessed_on": null }, + { + "id": "nextcloud-passwords", + "name": "Nextcloud Passwords", + "platform": "web", + "category_id": "passwords", + "vendor_id": "nextcloud-gmbh", + "sovereign": 1, + "boss": 0, + "art_slot": null, + "monthly_cost": 0, + "vendor": "Nextcloud GmbH", + "entity_type": "private", + "jurisdiction": "DE", + "business_model": "subscription", + "weighted_total": null, + "grade": null, + "policy": null, + "infra": null, + "weakest_dimension": null, + "headline": null, + "assessed_on": null + }, { "id": "nitrokey-app2", "name": "Nitrokey App2", @@ -2282,6 +2524,28 @@ "headline": null, "assessed_on": null }, + { + "id": "nextcloud-photos", + "name": "Nextcloud Photos", + "platform": "web", + "category_id": "photos", + "vendor_id": "nextcloud-gmbh", + "sovereign": 1, + "boss": 0, + "art_slot": null, + "monthly_cost": 0, + "vendor": "Nextcloud GmbH", + "entity_type": "private", + "jurisdiction": "DE", + "business_model": "subscription", + "weighted_total": null, + "grade": null, + "policy": null, + "infra": null, + "weakest_dimension": null, + "headline": null, + "assessed_on": null + }, { "id": "photocollage", "name": "PhotoCollage", @@ -2480,6 +2744,28 @@ "headline": null, "assessed_on": null }, + { + "id": "nextcloud-office", + "name": "Nextcloud Office", + "platform": "web", + "category_id": "productivity", + "vendor_id": "nextcloud-gmbh", + "sovereign": 1, + "boss": 0, + "art_slot": null, + "monthly_cost": 0, + "vendor": "Nextcloud GmbH", + "entity_type": "private", + "jurisdiction": "DE", + "business_model": "subscription", + "weighted_total": null, + "grade": null, + "policy": null, + "infra": null, + "weakest_dimension": null, + "headline": null, + "assessed_on": null + }, { "id": "asana", "name": "Asana", @@ -2502,6 +2788,28 @@ "headline": null, "assessed_on": null }, + { + "id": "nextcloud-deck", + "name": "Nextcloud Deck", + "platform": "web", + "category_id": "project", + "vendor_id": "nextcloud-gmbh", + "sovereign": 1, + "boss": 0, + "art_slot": null, + "monthly_cost": 0, + "vendor": "Nextcloud GmbH", + "entity_type": "private", + "jurisdiction": "DE", + "business_model": "subscription", + "weighted_total": null, + "grade": null, + "policy": null, + "infra": null, + "weakest_dimension": null, + "headline": null, + "assessed_on": null + }, { "id": "trello", "name": "Trello", @@ -2851,7 +3159,7 @@ ], "evidence": [ { - "id": 44, + "id": 55, "assessment_id": "A-2026-10-29-SIGNAL-DESKTOP", "dimension_id": "local_data_exposure", "claim": "Attachments are stored unencrypted on the filesystem; the SQLCipher key is held by the OS keyring.", @@ -2862,7 +3170,7 @@ "observed_at": "2026-10-29T13:13:56-05:00" }, { - "id": 45, + "id": 56, "assessment_id": "A-2026-10-29-SIGNAL-DESKTOP", "dimension_id": "telemetry_egress", "claim": "Electron media permission defaults to false and audio is denied unless the user has enabled mediaPermissions.", @@ -2873,7 +3181,7 @@ "observed_at": "2026-10-29T13:13:56-05:00" }, { - "id": 46, + "id": 57, "assessment_id": "A-2026-10-29-SIGNAL-DESKTOP", "dimension_id": "telemetry_egress", "claim": "Zero analytics, tracker or crash-upload dependencies across 224 packages.", @@ -2884,7 +3192,7 @@ "observed_at": "2026-10-29T13:13:56-05:00" }, { - "id": 47, + "id": 58, "assessment_id": "A-2026-10-29-SIGNAL-DESKTOP", "dimension_id": "telemetry_egress", "claim": "Only two audio capture call sites exist and both are reachable only from an explicit UI action.", @@ -2895,7 +3203,7 @@ "observed_at": "2026-10-29T13:13:56-05:00" }, { - "id": 48, + "id": 59, "assessment_id": "A-2026-10-29-SIGNAL-DESKTOP", "dimension_id": "verifiability", "claim": "Signal states reproducible builds for macOS and Windows are not available, and the Linux build is experimental.", @@ -2906,7 +3214,7 @@ "observed_at": "2026-10-29T13:13:56-05:00" }, { - "id": 49, + "id": 60, "assessment_id": "A-2026-10-29-SIGNAL-DESKTOP", "dimension_id": "server_retention", "claim": "Grand jury subpoena response returned two timestamps and nothing else.", @@ -2917,7 +3225,7 @@ "observed_at": "2026-10-29T13:13:56-05:00" }, { - "id": 50, + "id": 61, "assessment_id": "A-2026-10-29-SIGNAL-DESKTOP", "dimension_id": "ownership_jurisdiction", "claim": "Signal Technology Foundation is a 501(c)(3) with EIN 82-4506840.", @@ -2928,7 +3236,7 @@ "observed_at": "2026-10-29T13:13:56-05:00" }, { - "id": 51, + "id": 62, "assessment_id": "A-2026-10-29-SIGNAL-DESKTOP", "dimension_id": "incident_record", "claim": "FBI and CISA PSA260626: Russian intelligence compromised individual Signal accounts via phishing and Backup Recovery Key theft, but NOT the encryption or the application itself.", @@ -2939,7 +3247,7 @@ "observed_at": "2026-10-29T15:26:00-05:00" }, { - "id": 52, + "id": 63, "assessment_id": "A-2026-10-29-SIGNAL-DESKTOP", "dimension_id": "incident_record", "claim": "Signal statement, 28 April 2026: \"Signal was not hacked, in that our encryption, infrastructure, and the integrity of the app code was not compromised.\" Additional linkage confirmations shipped 13 May 2026.", @@ -2950,7 +3258,7 @@ "observed_at": "2026-10-29T15:26:00-05:00" }, { - "id": 53, + "id": 64, "assessment_id": "A-2026-10-29-SIGNAL-DESKTOP", "dimension_id": "ownership_jurisdiction", "claim": "Open Technology Fund funded Open Whisper Systems $2,955,000 across 2013 to 2016, itemised on OTF own project page. This is the factual core under the \"US government funded Signal\" claim, and it is already reflected in the two points docked on this dimension.", @@ -2961,7 +3269,7 @@ "observed_at": "2026-10-29T15:26:00-05:00" }, { - "id": 54, + "id": 65, "assessment_id": "A-2026-10-29-SIGNAL-DESKTOP", "dimension_id": "user_control_exit", "claim": "Signal publicly committed to leaving the UK (2023, Online Safety Act) and Sweden (Feb 2025) rather than weaken encryption. A vendor that threatens to lose a market is behaving incompatibly with a secret backdoor.", @@ -2974,7 +3282,7 @@ ], "findings": [ { - "id": 21, + "id": 25, "assessment_id": "A-2026-10-29-SIGNAL-DESKTOP", "severity": "high", "title": "Received attachments are stored unencrypted on disk", @@ -2983,7 +3291,7 @@ "cve": "CVE-2023-24069" }, { - "id": 22, + "id": 26, "assessment_id": "A-2026-10-29-SIGNAL-DESKTOP", "severity": "medium", "title": "No verified reproducible build for the Linux package", @@ -2992,7 +3300,7 @@ "cve": null }, { - "id": 23, + "id": 27, "assessment_id": "A-2026-10-29-SIGNAL-DESKTOP", "severity": "medium", "title": "Local database key is held in the OS keyring", @@ -3001,7 +3309,7 @@ "cve": null }, { - "id": 24, + "id": 28, "assessment_id": "A-2026-10-29-SIGNAL-DESKTOP", "severity": "low", "title": "Registration requires a phone number", diff --git a/packages/web/public/oath.json b/packages/web/public/oath.json index 1ecba6e..3263e77 100644 --- a/packages/web/public/oath.json +++ b/packages/web/public/oath.json @@ -1,10 +1,10 @@ { - "digest": "fcc6032021e38bef4c5d2122c640a82cd5d066b3a8e9b7b378b0f31f2133e51c", + "digest": "1993b8de020ef8807e3e7499d9d45b429df9963b90182823ddc6e02b0ccd031c", "algorithm": "sha256", "file": "catalog.json", - "byte_length": 82952, - "rebuilt_at": "2026-10-29T21:22:40.576Z", + "byte_length": 91034, + "rebuilt_at": "2026-10-29T22:18:53.103Z", "method_version": "btr-0.1", - "products": 123, + "products": 137, "assessed": 1 } \ No newline at end of file