Grafiekhydratatie in documenten volgt symlinks de projectmap uit #1640

Closed
opened 2026-08-21 11:59:00 +00:00 by brenno · 0 comments
Owner

Wat er misgaat

hydrateDocumentChartData lost source: op met resolveProjectRelative (lexicaal: geen ../, geen absoluut pad). Daarna File.readAsString zonder symlink-realpath. Een data/chart.json die als symlink naar buiten de projectmap wijst, wordt bij export ingelezen en inline in de geëxporteerde body gevouwen — vóór OciWacht.

Afbeeldingen op hetzelfde documentpad gebruiken wél isRenderPathContained / resolveContainedRealPath. De commentaar in de hydratatie zegt „dezelfde insluitingsbewaking als de dia-hydratatie”; die dia-hydratatie heeft hetzelfde lexicale gat, maar het document-exportpad is de plek waar de bytes de deur uit gaan.

Waar het zit

lib/services/document_chart_hydration.dart (_inlineBlock).
Vergelijk lib/utils/project_path.dart (isRenderPathContained).

Aanvalschets

Een onvertrouwd documentpakket met images//data/ waarin data/x.json/etc/passwd (of een sleutelbos-bestand). Openen, exporteren (volledig of geredigeerd): de doelinhoud zit in de grafiekspec van de uitvoer.

Wat het met het formaat doet

De export is niet meer alleen projectinhoud; bytes van buiten de boom reizen mee in het .md/HTML/PDF.

Regressie

Test met een symlink onder een tijdelijke projectmap; hydrateDocumentChartData moet null/ongewijzigd blijven, net als een ../-pad.

## Wat er misgaat `hydrateDocumentChartData` lost `source:` op met `resolveProjectRelative` (lexicaal: geen `../`, geen absoluut pad). Daarna `File.readAsString` **zonder** symlink-realpath. Een `data/chart.json` die als symlink naar buiten de projectmap wijst, wordt bij export ingelezen en **inline in de geëxporteerde body** gevouwen — vóór OciWacht. Afbeeldingen op hetzelfde documentpad gebruiken wél `isRenderPathContained` / `resolveContainedRealPath`. De commentaar in de hydratatie zegt „dezelfde insluitingsbewaking als de dia-hydratatie”; die dia-hydratatie heeft hetzelfde lexicale gat, maar het document-exportpad is de plek waar de bytes de deur uit gaan. ## Waar het zit `lib/services/document_chart_hydration.dart` (`_inlineBlock`). Vergelijk `lib/utils/project_path.dart` (`isRenderPathContained`). ## Aanvalschets Een onvertrouwd documentpakket met `images/`/`data/` waarin `data/x.json` → `/etc/passwd` (of een sleutelbos-bestand). Openen, exporteren (volledig of geredigeerd): de doelinhoud zit in de grafiekspec van de uitvoer. ## Wat het met het formaat doet De export is niet meer alleen projectinhoud; bytes van buiten de boom reizen mee in het `.md`/HTML/PDF. ## Regressie Test met een symlink onder een tijdelijke projectmap; `hydrateDocumentChartData` moet `null`/ongewijzigd blijven, net als een `../`-pad.
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#1640
No description provided.