@openclaw/fs-safe voor beveiligingsgevoelige lokale bestandsbewerkingen: tot een hoofdmap begrensd lezen/schrijven, atomair vervangen, archieven uitpakken, tijdelijke werkruimten, JSON-status en verwerking van geheime bestanden.
Het is een beveiligingsmechanisme in de bibliotheek voor vertrouwde OpenClaw-code die niet-vertrouwde padnamen ontvangt, geen sandbox. Bestandssysteemmachtigingen van de host, OS-gebruikers, containers en het agent-/toolbeleid bepalen nog steeds de werkelijke impact.
Standaard: geen Python-helper
OpenClaw schakelt de POSIX Python-helper van fs-safe standaard uit:- de Gateway mag geen permanente Python-sidecar starten, tenzij een beheerder daar expliciet voor kiest;
- de meeste installaties hebben de extra beveiliging tegen wijzigingen van bovenliggende mappen niet nodig;
- door Python uit te schakelen, blijft het runtimegedrag voorspelbaar in desktop-, Docker-, CI- en gebundelde app-omgevingen.
FS_SAFE_PYTHON_MODE en FS_SAFE_PYTHON.
Gebruik require (niet auto) wanneer de helper deel uitmaakt van je beveiligingsmodel; auto valt stilzwijgend terug op uitsluitend Node-gebaseerd gedrag als de helper niet kan starten.
Wat zonder Python beschermd blijft
Als de helper is uitgeschakeld, profiteert OpenClaw nog steeds van de uitsluitend Node-gebaseerde beveiligingsmechanismen van fs-safe:- weigert ontsnappingen via relatieve paden (
..), absolute paden en padscheidingstekens waar alleen losse namen zijn toegestaan; - voert bewerkingen uit via een vertrouwde hoofdmaphandle in plaats van ad-hoccontroles met
path.resolve(...).startsWith(...); - weigert patronen met symbolische en harde koppelingen voor API’s waarvoor dat beleid geldt;
- opent bestanden met identiteitscontroles wanneer de API bestandsinhoud retourneert of verwerkt;
- schrijft status-/configuratiebestanden via een atomair tijdelijk bestand in dezelfde map, gevolgd door hernoemen;
- handhaaft bytelimieten voor leesbewerkingen en het uitpakken van archieven;
- past privébestandsmodi toe op geheime en statusbestanden waar de API die vereist.
Wat Python toevoegt
Op POSIX houdt de optionele helper één permanent Python-proces actief en gebruikt die aan bestandsdescriptoren gerelateerde bestandssysteembewerkingen voor wijzigingen van bovenliggende mappen: hernoemen, verwijderen, mappen aanmaken, status opvragen/mappen weergeven en sommige schrijfpaden. Dit verkleint racevensters voor dezelfde UID waarin een ander proces een bovenliggende map verwisselt tussen validatie en wijziging — extra gelaagde beveiliging op hosts waar niet-vertrouwde lokale processen dezelfde mappen kunnen wijzigen waarin OpenClaw werkt. Als je implementatie dit risico loopt en Python gegarandeerd beschikbaar is, stel je het volgende in:Richtlijnen voor plugins en kerncode
- Bestandstoegang voor plugins moet via de helpers van
openclaw/plugin-sdk/*verlopen, niet rechtstreeks viafs, wanneer een pad afkomstig is uit een bericht, modeluitvoer, configuratie of plugininvoer. - Kerncode moet de fs-safe-wrappers onder
src/infra/*gebruiken, zodat het procesbeleid van OpenClaw consistent wordt toegepast. - Voor het uitpakken van archieven moeten de fs-safe-archiefhelpers worden gebruikt met expliciete limieten voor grootte, aantal items, koppelingen en bestemming.
- Voor geheimen moeten de geheimhelpers van OpenClaw of de helpers van fs-safe voor geheimen/privéstatus worden gebruikt; implementeer niet zelf moduscontroles rond
fs.writeFile. - Vertrouw voor isolatie tegen vijandige lokale gebruikers niet alleen op fs-safe. Voer afzonderlijke Gateways uit onder afzonderlijke OS-gebruikers/hosts of gebruik sandboxing.