Security: containmentcache blijft geldig nadat een pad in een externe symlink verandert #1692

Closed
opened 2026-08-21 21:53:50 +00:00 by brenno · 0 comments
Owner

Kwetsbaarheid

isRenderPathContained cachet de eerste uitkomst permanent per resolved pad. Een ontbrekend/onoplosbaar pad wordt bewust als true opgeslagen. Als dat pad later ontstaat als symlink naar buiten de projectmap, of een bestaande symlink van doel wisselt, blijft de oude true gelden en wordt geen realpathcontrole meer uitgevoerd. De aanname dat symlinktopologie gedurende een sessie vaststaat wordt niet afgedwongen.

Reproductie

  1. Roep isRenderPathContained aan voor een nog ontbrekend pad binnen een testproject; de functie retourneert true en cachet dit.
  2. Maak op dat pad een symlink naar een testafbeelding buiten het project.
  3. Roep de functie opnieuw aan.
  4. Observeer dat true uit de cache komt hoewel de actuele realpath buiten de root ligt.

Verwacht

Een positieve beslissing mag niet over bestandsidentiteits-/topologiewijzigingen heen leven. Ontbrekende paden worden fail-closed behandeld of de cache wordt gekoppeld aan stat-identiteit en correct geïnvalideerd.

Technische oorzaak

lib/utils/project_path.dart:isRenderPathContained cachet alleen op resolved String. FileSystemException wordt ok=true en die waarde blijft staan; resetRenderContainedCache wordt alleen voor tests aangeboden.

Afbakening

Openbare plaatsing is door de opdrachtgever/repositorybeheerder expliciet geautoriseerd voor directe afhandeling.

Gevonden bij audit van commit d439638c6b.

## Kwetsbaarheid isRenderPathContained cachet de eerste uitkomst permanent per resolved pad. Een ontbrekend/onoplosbaar pad wordt bewust als true opgeslagen. Als dat pad later ontstaat als symlink naar buiten de projectmap, of een bestaande symlink van doel wisselt, blijft de oude true gelden en wordt geen realpathcontrole meer uitgevoerd. De aanname dat symlinktopologie gedurende een sessie vaststaat wordt niet afgedwongen. ## Reproductie 1. Roep isRenderPathContained aan voor een nog ontbrekend pad binnen een testproject; de functie retourneert true en cachet dit. 2. Maak op dat pad een symlink naar een testafbeelding buiten het project. 3. Roep de functie opnieuw aan. 4. Observeer dat true uit de cache komt hoewel de actuele realpath buiten de root ligt. ## Verwacht Een positieve beslissing mag niet over bestandsidentiteits-/topologiewijzigingen heen leven. Ontbrekende paden worden fail-closed behandeld of de cache wordt gekoppeld aan stat-identiteit en correct geïnvalideerd. ## Technische oorzaak lib/utils/project_path.dart:isRenderPathContained cachet alleen op resolved String. FileSystemException wordt ok=true en die waarde blijft staan; resetRenderContainedCache wordt alleen voor tests aangeboden. ## Afbakening Openbare plaatsing is door de opdrachtgever/repositorybeheerder expliciet geautoriseerd voor directe afhandeling. Gevonden bij audit van commit d439638c6bd1b519d68d87680cb022b7d5eddc85.
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#1692
No description provided.