Runtime cache does not enforce Project directory permissions and ownership
I maintainer di solito rispondono entro 1 giorno
@pheus ci sta già lavorando.
Dal 6/11/2026.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 52/100
Direzione di ricerca
Start by reading netbox_scripts/runtime/cache.py, especially _ensure_private_root() and materialize_revision(), then inspect the storage code used by store.write_revision(). Reproduce the reported umask and permissive-directory cases and check the Project, staging, and lock file modes and ownership. Done means new directories and lock files have private permissions, unsafe existing Project directories are rejected, and a verified published revision cannot be replaced.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Plugin Version
v0.0.1
NetBox Version
v4.7.1
Python Version
3.12
Steps to Reproduce
Using one account in NetBox's Django shell (python manage.py shell):
- Prepare a valid revision containing
example.pyand write it to anInMemoryStorageusingnetbox_scripts.storage.store.write_revision(). - Create a temporary cache root and set its permissions to
0755withchmod(). - Set the process umask to
0002and callnetbox_scripts.runtime.cache.materialize_revision()with that root. Restore the previous umask in afinallyblock. - Inspect
<root>/<storage_key>/and its.<digest>.lockfile. - Create a second cache root with permissions
01777. Inside it, create<storage_key>/and set its permissions to0777. - Materialize the same revision using the second root.
Expected Behavior
New Project and staging directories are created with private permissions.
Before using an existing Project directory, the plugin checks that it belongs to the NetBox account or root and rejects permissions that let other accounts modify its contents.
The published revision remains protected from replacement after verification.
Observed Behavior
In the first case, the Project directory is created with permissions 0775 and the lock file with 0664. Project and staging directory creation follows the process umask.
In the second case, materialization succeeds inside the existing 0777 Project directory.
Source inspection shows that _ensure_private_root() checks the cache root and its ancestors, but the Project directory is accepted through mkdir(exist_ok=True) without checking its owner or permissions.
When another local account can traverse the cache path, writable Project directories allow it to replace the published revision directory despite the revision's read-only permissions.
The default cache root, when created by the plugin with permissions 0700, prevents other accounts from reaching these directories. The exposure requires a cache location that other accounts can traverse.
- Lingua principale
- Python
- Stelle
- 8
- Fork
- 0
- Merge medio
- 11h 22m
- PR unite (30g)
- 40
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di netbox-community/netbox-scripts
-
app: scripts Bucket: Improve status: backlog type: documentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
netbox-community/netbox-scripts#80 ·
I maintainer di solito rispondono entro 1 giorno
-
app: scripts Bucket: KTLO severity: low status: backlog type: bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
netbox-community/netbox-scripts#76 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
Raise the minimum NetBox version to v4.7.5Forse già presa @pheus l’ha presa 1 giorno fa. Apertaapp: scripts Bucket: KTLO status: backlog type: housekeeping
netbox-community/netbox-scripts#123 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
A committed run is reported as unfinished when its events cannot be queuedForse già presa @pheus l’ha presa 1 giorno fa. Apertaapp: scripts Bucket: KTLO severity: low status: accepted type: bug
netbox-community/netbox-scripts#122 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
Failed post-commit callback reports committed changes as reverted and drops eventsForse già presa @pheus l’ha presa 1 giorno fa. Apertaapp: scripts Bucket: KTLO severity: low status: accepted type: bug
netbox-community/netbox-scripts#121 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di netbox-community/netbox-scripts
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
pylint-dev/pylint#11791 ·
I maintainer di solito rispondono entro 1 giorno
-
Rasterio granule reads never retry, so one 503 (Service Unavailable) fails the whole requestForse già presa @chuckwondo l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
developmentseed/titiler-cmr#305 ·
I maintainer di solito rispondono entro 1 giorno
-
community enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
I maintainer di solito rispondono entro 1 giorno