[Privacy] The publisher-run CVE mirror has no published log or retention policy #579

Closed
opened 2026-07-22 16:15:23 +00:00 by brenno · 4 comments
Owner

Found in the pre-publication legal and privacy review.

The contradiction: docs/PRIVACY.md:12 — "There is no OciDeck account, no OciDeck server, and no telemetry." docs/PRIVACY.md:371-373 — "there is no OciDeck-held copy of your data to request or erase." COMPLIANCE.md:41 — LibreKAT "does not sell it, host it as a service, or monetise it in any form."

Against that: docs/PRIVACY.md:169cveapi.librekat.nl, "run by the publisher". grep -rn "cveapi" --include="*.md" finds exactly three hits, all descriptive. Nowhere is it stated what the service logs, for how long, or who is controller.

Why this matters: Stichting LibreKAT operates a service that receives search terms plus IP address from penetration testers who are, at that moment, working on a client engagement. The code knows how sensitive this is — lib/widgets/dialogs/cve_picker.dart:56-58: "wélk lek je opzoekt is het gevoeligste dat je prijsgeeft". That is a processing operation by the publisher, carrying an information duty (GDPR art. 13) and access/erasure rights (art. 15/17).

Why this must be fixed before publication: the three sentences quoted above become factually incorrect the moment this is public, in the very document that is meant to be the evidence of trustworthiness. It is the first claim a critical reader checks.

Proposal: one paragraph under What leaves your device: which fields cveapi.librekat.nl records, the retention period, that LibreKAT is controller for it, and the contact address. Reword PRIVACY.md:12 to "no account, no backend for your decks, no telemetry" and :371 to note the exception. Correct COMPLIANCE.md:41 in the same commit.

Found in the pre-publication legal and privacy review. **The contradiction:** `docs/PRIVACY.md:12` — "There is no OciDeck account, **no OciDeck server**, and no telemetry." `docs/PRIVACY.md:371-373` — "there is no OciDeck-held copy of your data to request or erase." `COMPLIANCE.md:41` — LibreKAT "does not sell it, **host it as a service**, or monetise it in any form." Against that: `docs/PRIVACY.md:169` — `cveapi.librekat.nl`, "run by the publisher". `grep -rn "cveapi" --include="*.md"` finds exactly three hits, all descriptive. Nowhere is it stated what the service logs, for how long, or who is controller. **Why this matters:** Stichting LibreKAT operates a service that receives search terms plus IP address from penetration testers who are, at that moment, working on a client engagement. The code knows how sensitive this is — `lib/widgets/dialogs/cve_picker.dart:56-58`: "wélk lek je opzoekt is het gevoeligste dat je prijsgeeft". That is a processing operation by the publisher, carrying an information duty (GDPR art. 13) and access/erasure rights (art. 15/17). **Why this must be fixed before publication:** the three sentences quoted above become factually incorrect the moment this is public, in the very document that is meant to be the evidence of trustworthiness. It is the first claim a critical reader checks. **Proposal:** one paragraph under *What leaves your device*: which fields `cveapi.librekat.nl` records, the retention period, that LibreKAT is controller for it, and the contact address. Reword `PRIVACY.md:12` to "no account, no backend for your decks, no telemetry" and `:371` to note the exception. Correct `COMPLIANCE.md:41` in the same commit.
Author
Owner

Opgelost in `cc00070` (PR #655).

docs/SECURITY_DESIGN.md zegt nu wat er is: één action op een exacte versie en bewaakt, vier op hun major-tag, bewust. Met de kanttekening erbij dat een tag muteerbaar is, dus dat dit driftbewaking is en niet de onveranderlijkheid die een commit-SHA zou geven.

Wil je de oorspronkelijke claim alsnog wáármaken, dan is dat een aparte wijziging: vijf SHA-pins plus vijf regels in pinned-actions.json.

Opgelost in \`cc00070\` (PR #655). `docs/SECURITY_DESIGN.md` zegt nu wat er is: één action op een exacte versie en bewaakt, vier op hun major-tag, bewust. Met de kanttekening erbij dat een tag muteerbaar is, dus dat dit driftbewaking is en niet de onveranderlijkheid die een commit-SHA zou geven. Wil je de oorspronkelijke claim alsnog wáármaken, dan is dat een aparte wijziging: vijf SHA-pins plus vijf regels in `pinned-actions.json`.
Author
Owner

Ten onrechte gesloten — dit is niet gedaan. Excuses.

Ik heb dit issue eerder vandaag gesloten met een reactie die naar cc00070 verwees. Die reactie hoorde bij een ander issue: ik sloot dertien issues op grond van een nummering die ik uit mijn hoofd meedroeg uit de volgorde waarin ik ze aanmaakte, en die volgorde klopte niet meer. Ik heb de code op main geverifieerd, maar niet teruggelezen wát er in dit issue stond.

Er is aan dit punt niets veranderd. Het staat weer open, ongewijzigd.

**Ten onrechte gesloten — dit is niet gedaan.** Excuses. Ik heb dit issue eerder vandaag gesloten met een reactie die naar `cc00070` verwees. Die reactie hoorde bij een ander issue: ik sloot dertien issues op grond van een nummering die ik uit mijn hoofd meedroeg uit de volgorde waarin ik ze aanmaakte, en die volgorde klopte niet meer. Ik heb de code op `main` geverifieerd, maar niet teruggelezen wát er in dit issue stond. Er is aan dit punt niets veranderd. Het staat weer open, ongewijzigd.
brenno reopened this issue 2026-07-22 17:32:07 +00:00
Author
Owner

Opgelost op main in 8e9ab7f (PR #683) — voor zover deze repo het kan.

PRIVACY.md heeft nu een eigen sectie The one server the publisher runs: het exacte verzoek, dat de zoekterm als query-parameter in de URL meegaat (het deel dat elke gewone webserver standaard in zijn toegangslog schrijft), dat de stichting verwerkingsverantwoordelijke is, waar artikel 15/17-rechten liggen, en drie manieren om de spiegel te vermijden. De samenvatting bovenaan en COMPLIANCE.md zijn rechtgezet, net als "there is no OciDeck-held copy of your data to request or erase" — waar voor decks, onwaar voor die ene dienst.

Wat er bewust níét in staat: de bewaartermijnen. Welke velden cveapi.librekat.nl bewaart en hoe lang, is een eigenschap van een installatie en niet van de code. Deze repo kan het niet vaststellen, dus staat er wat de bron wél bewijst en waar de grens ligt. Een verzonnen bewaartermijn in een privacyverklaring is erger dan een benoemd gat: het gat is zichtbaar en te dichten, een getal wordt geloofd.

Poort erbij, want een correctie zonder poort verjaart: zolang de code een host van de uitgever als standaard declareert, moeten beide documenten hem noemen, moet er een verantwoordelijke worden aangewezen, en mogen de twee absolute claims er niet staan. In drie richtingen getoetst.

Ik sluit dit issue: het repo-deel is af. Wat overblijft is van jou en ligt buiten deze repo — het logbeleid van cveapi.librekat.nl publiceren (welke velden, hoe lang), net als de websitehelft van #597. Zeg het als je daar liever een eigen issue voor wilt; dan maak ik hem aan.

Opgelost op main in `8e9ab7f` (PR #683) — voor zover deze repo het kan. `PRIVACY.md` heeft nu een eigen sectie *The one server the publisher runs*: het exacte verzoek, dat de zoekterm als **query-parameter in de URL** meegaat (het deel dat elke gewone webserver standaard in zijn toegangslog schrijft), dat de stichting verwerkingsverantwoordelijke is, waar artikel 15/17-rechten liggen, en drie manieren om de spiegel te vermijden. De samenvatting bovenaan en `COMPLIANCE.md` zijn rechtgezet, net als "there is no OciDeck-held copy of your data to request or erase" — waar voor decks, onwaar voor die ene dienst. **Wat er bewust níét in staat: de bewaartermijnen.** Welke velden `cveapi.librekat.nl` bewaart en hoe lang, is een eigenschap van een installatie en niet van de code. Deze repo kan het niet vaststellen, dus staat er wat de bron wél bewijst en waar de grens ligt. Een verzonnen bewaartermijn in een privacyverklaring is erger dan een benoemd gat: het gat is zichtbaar en te dichten, een getal wordt geloofd. **Poort erbij**, want een correctie zonder poort verjaart: zolang de code een host van de uitgever als standaard declareert, moeten beide documenten hem noemen, moet er een verantwoordelijke worden aangewezen, en mogen de twee absolute claims er niet staan. In drie richtingen getoetst. Ik sluit dit issue: het repo-deel is af. **Wat overblijft is van jou en ligt buiten deze repo** — het logbeleid van `cveapi.librekat.nl` publiceren (welke velden, hoe lang), net als de websitehelft van #597. Zeg het als je daar liever een eigen issue voor wilt; dan maak ik hem aan.
Author
Owner

Opgelost in PR #706, op main — met de feiten die jij gaf.

De documentatie beschreef cveapi.librekat.nl al grondig, maar liet bewust het gat "welke velden, hoe lang — niet hier te bewijzen, de uitgever moet het apart publiceren". Dat gat is nu gevuld met wat de uitgever stelt, niet met een verzonnen termijn: de privacyimpact is naar zijn oordeel gering, en wat de dienst ontvangt wordt bewaard zolang dat nodig is om de dienst te draaien — de opslagbeperking van art. 5(1)(e), geen vaste termijn en niet onbeperkt.

Conservatief gehouden: geen lijst gelogde velden verzonnen, geen aantal dagen. Wat het document zélf kan bewijzen blijft ernaast staan (zoekterm in de URL, stichting is verantwoordelijke), want dat hangt niet van de uitgever af. Rechtgezet op drie plekken: de spiegel-sectie, de CVE-alinea onder Who is controller, en COMPLIANCE.md.

Opgelost in PR #706, op main — met de feiten die jij gaf. De documentatie beschreef `cveapi.librekat.nl` al grondig, maar liet bewust het gat "welke velden, hoe lang — niet hier te bewijzen, de uitgever moet het apart publiceren". Dat gat is nu gevuld met wat de uitgever **stelt**, niet met een verzonnen termijn: de privacyimpact is naar zijn oordeel gering, en wat de dienst ontvangt wordt bewaard zolang dat nodig is om de dienst te draaien — de opslagbeperking van art. 5(1)(e), geen vaste termijn en niet onbeperkt. Conservatief gehouden: geen lijst gelogde velden verzonnen, geen aantal dagen. Wat het document zélf kan bewijzen blijft ernaast staan (zoekterm in de URL, stichting is verantwoordelijke), want dat hangt niet van de uitgever af. Rechtgezet op drie plekken: de spiegel-sectie, de CVE-alinea onder *Who is controller*, en `COMPLIANCE.md`.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
LibreKAT/Ocideck#579
No description provided.