Security: documentexport volgt afbeeldingssymlinks buiten de projectmap #1690
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck#1690
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Kwetsbaarheid
ImageService.readSlideImageBytes controleert alleen lexicale padinsluiting via resolveSlideAssetPath en leest daarna het opgeloste bestand direct. Een symlink binnen de projectmap die naar een bestand buiten het project wijst, passeert die controle. Documentexport gebruikt deze reader om afbeeldingen als data-URI in HTML/PDF te embedden; zo kunnen lokale bytes buiten het project in een export terechtkomen.
Dit is een andere sink dan de grafiekhydratatie uit #1640 en vereist een eigen correctie op de centrale afbeeldingsreader.
Reproductie
Verwacht
Een byte-reader die data naar export, AI of clipboard kan verplaatsen volgt uitsluitend een realpath dat aantoonbaar binnen de projectroot ligt. Een ontbrekende/onoplosbare realpath wordt geweigerd.
Technische oorzaak
lib/services/image_service.dart:readSlideImageBytes gebruikt resolveSlideAssetPath gevolgd door File(resolved).readAsBytes. Het gebruikt niet resolveContainedRealPath. De document-sink zit in lib/widgets/document_editor_screen.dart:_embedDocumentExportImage; deckexport gebruikt dezelfde reader.
Afbakening
Openbare plaatsing is door de opdrachtgever/repositorybeheerder expliciet geautoriseerd voor directe afhandeling.
Gevonden bij audit van commit
d439638c6b.