Gli agenti AI possono eseguire comandi shell sulla mia macchina. Nella maggior parte delle implementazioni la sicurezza si basa solo sulla buona volontà del modello di seguire le istruzioni di sistema, ma l'obbedienza di un modello non è la stessa cosa di un vincolo di sicurezza. Serviva un livello deterministico che decidesse quali comandi vengono davvero eseguiti, prima che arrivino alla shell.AI agents can run shell commands on my machine. In most implementations, security relies entirely on the model's willingness to follow system instructions, but model compliance is not the same thing as security enforcement. I needed a deterministic layer to decide which commands actually run, before they reach the shell.
Progetti / Security
AI Guardian Lab
Proteggere l'intelligenza artificiale, un layer alla volta.Securing artificial intelligence, layer by layer.
$ task: "analizza lo spazio disco" · comando: rm -rf /tmp [1/4] allowlist......... ok [2/4] pattern regex..... ok [3/4] coerenza intento.. FAIL (task=read, comando=delete) >> BLOCKED. Fail-closed: conflitto d'intento.
$ task: "analyze disk usage" · command: rm -rf /tmp [1/4] allowlist......... ok [2/4] regex pattern..... ok [3/4] intent match...... FAIL (task=read, command=delete) >> BLOCKED. Fail-closed: intent conflict.
La sfidaThe challenge
La soluzioneThe solution
Ho costruito una pipeline deterministica a 4 layer, fail-closed by design: se un layer ha un dubbio, il comando viene bloccato. L1 è l'allowlist dei binari ammessi. L2 è un motore regex anti-offuscamento. L3 confronta l'intento del task con l'azione del comando: task «analizza lo spazio disco» e comando «rm -rf /tmp» vengono bloccati per conflitto d'intento, anche se "rm" da solo sarebbe un binario ammesso. L4 è un controllo semantico via LLM, riservato ai casi ambigui che i layer deterministici non risolvono: mai la prima linea di difesa.I built a deterministic 4-layer pipeline, fail-closed by design: if a layer has doubt, the command is blocked. L1 is an allowlist of permitted binaries. L2 is an anti-obfuscation regex engine. L3 compares the task's intent with the command's action: task "analyze disk usage" and command "rm -rf /tmp" get blocked for intent conflict, even though "rm" alone would be an allowed binary. L4 is an LLM semantic check, reserved for ambiguous cases the deterministic layers can't resolve: never the first line of defense.
Tech Stack