(versione 1.0 — GYTE Secure Scripting Guidelines)
Questa checklist serve a garantire che ogni script Bash/Python del progetto GYTE rispetti le regole minime di sicurezza per prevenire attacchi tipici sulla supply chain (arg injection, exec imprevisti, leak di segreti, file malevoli, ecc.).
Ogni script deve avere:
#!/usr/bin/env bashset -euo pipefail- gestione
-h/--help - errori stampati su
stderr
Esempio:
#!/usr/bin/env bash
set -euo pipefail
if [[ "${1-}" == "-h" || "${1-}" == "--help" ]]; then
usage
exit 0
fi- deve iniziare con
http://ohttps:// - mai accettare URL che iniziano con
-(inietterebbero opzioni in yt-dlp)
-fprima di usarli- niente path traversal ciechi (
../../qualcosa→ ok, ma consapevole)
- rimuovere spazi:
var="${var//[[:space:]]/}"
MAI inoltrare opzioni che eseguono comandi:
--exec--exec-before-download--exec-after-download--postprocessor-args--run-postprocessor
Se presenti → errore e stop.
Gli script non devono mostrare:
- valori contenenti key,
- comandi completi che contengono token,
- contenuti di variabili come
OPENAI_API_KEY.
Corretto:
GYTE_AI_CMD = openai-wrapper (via env)
NON corretto:
GYTE_AI_CMD = openai-wrapper --api-key=sk-...
Quando opportuno (come in gyte-translate):
GYTE_AI_MAX_INPUT_BYTES→ previene input giganteschi da errori o abusi.
Ogni comando esterno deve essere verificato:
command -v yt-dlp >/dev/null || errore
command -v ffmpeg >/dev/null || warn- creare file solo volutamente (no autocreate in path sconosciuti)
- evitare sovrascritture non intenzionali:
→ uso di
mktempper output temporanei - rimuovere file temporanei anche in caso di errore
- niente stampa accidentale di API key
- cattura eccezioni sulle API
- validazione argomenti
- messaggi di errore chiari
- input da
stdinobbligatoriamente validato (strip()→ non vuoto)
Ogni nuovo script deve rispettare:
- NON accettare mai comandi arbitrari passati dall’utente da eseguire
- NON usare
eval - NON usare parsing fragile tipo
for f in $(ls)(sempre array, sempre quoting)
Ogni script deve:
- passare ShellCheck
- evitare SC2086, SC2046, SC2001, SC2162, SC2164
- non contenere pattern pericolosi come
curl | sh - non contenere download da domini hardcoded “morti”
Gli script GYTE seguono una filosofia semplice:
“Sicuri per default, flessibili solo dove serve, mai pericolosi per sbaglio.”
Se qualcosa può essere abusato, prima o poi lo sarà. Per questo la pipeline accetta solo script idempotenti, trasparenti e confinati.