
nas: una CLI Python a dipendenze zero + server MCP per Synology DSM 7. Audit e correzione con un solo comando per la campagna ransomware C3RB3R / .L0CK3D; affidala al tuo agente AI.
Verifica un NAS Synology rispetto alla campagna ransomware C3RB3R / .L0CK3D con un solo comando, correggi ciò che rileva con un secondo comando e continua a eseguire DSM dal terminale in seguito.
Repository canonico, release e issue: https://gitlab.com/aa22396584/synology-nas-cli
nas è una CLI Python senza dipendenze (solo libreria standard, Python 3.8+, quindi funziona anche su DSM stesso) e un server MCP stdio per la Web API di Synology DSM 7: stato, integrità, log, pacchetti, volumi, Tailscale, aggiornamenti DSM, avvisi di integrità pianificati inviati a un webhook, e uno strumento di verifica e correzione degli incidenti sviluppato durante la campagna C3RB3R / .L0CK3D dell'ottobre 2026 contro i NAS Synology esposti a Internet (Synology-SA-24:20, SA-26:13, SA-26:14).
Non affiliato a Synology Inc. "Synology", "DSM" e "QuickConnect" sono marchi di Synology Inc.
nas incident fixIncolla uno dei due prompt in Claude Code, Codex, Cursor, Gemini CLI, OpenCode, Grok Bot o qualsiasi agente AI in grado di usare strumenti (configurazione di Grok Bot, competenze e routine di avvisi: docs/GROK-BOT.md):
Prompt in inglese:
Use https://github.com/akari-sora/synology-nas-cli to audit and fix my Synology NAS at https://192.0.2.10:5001. Follow docs/AGENT-RUNBOOK.md.
Prompt in cinese tradizionale:
使用 https://github.com/akari-sora/synology-nas-cli 檢查並修復我的 Synology NAS(位址:https://192.0.2.10:5001),照著 docs/AGENT-RUNBOOK.md 的步驟執行。
./bin/nas --version.nas setup: esegue nas setup --json --no-input ... per scrivere ~/.config/synology-nas-cli/config.json (modalità 0600), effettua l'accesso una volta per verificare le credenziali e fissa l'impronta SHA-256 del certificato TLS di DSM al primo utilizzo.nas doctor: esegue nas doctor --json per verificare configurazione, credenziali, raggiungibilità dell'origine, pin TLS, login, versione DSM rispetto a SA-26:13, stato della verifica in due passaggi, capacità amministrative e sfasamento dell'orologio.nas incident: esegue nas incident --json (e opzionalmente --probe --scan) per un audit in sola lettura di versione DSM, pacchetti vulnerabili, firewall, QuickConnect, regole UPnP del router, porte pubbliche, accessi esterni e falliti, AutoBlock, SMB1, admin predefinito, pianificazioni degli snapshot, la trappola del blocco WORM sui modelli non supportati, note di riscatto e tentativi di exploit di CVE-2024-10441.nas incident fix --dry-run --json --ransom-scan e mostra ogni modifica pianificata (before -> after), le esatte chiamate alle API Web di DSM e il corrispondente percorso nell'interfaccia web di DSM.nas incident fix --yes: applica il piano approvato nell'ordine (snapshot_worm → snapshots → packages → smb_min_protocol → quickconnect → router_port_forwarding → autoblock → admin_account → firewall, più gli opzionali --rotate-password e --upgrade), rilegge ogni impostazione per verificarla e riesegue l'audit.--deep e alert-deploy: esegue nas incident --deep --json (un collector root in sola lettura tramite Task Scheduler che controlla log accessibili solo a root, crontab, binari in /bin, account, chiavi SSH e /proc) e nas alert-deploy --json --test (monitoraggio di integrità e sicurezza ogni 10 minuti inviato a un webhook).https://192.0.2.10:5001, più un URL VPN/Tailscale se utilizzato).op://VAULT/ITEM/password, un comando per la password o il portachiavi del sistema operativo).192.0.2.0/24)./docker/.nas-cli-deploy, usato da --deep e alert-deploy).nas setup esce con 3 e "field": "otp", fornisci il codice a 6 cifre corrente; --trust-device memorizza il token del dispositivo fidato di DSM (0600) così i comandi successivi non richiedono un codice.nas incident fix --yes (e scegli se includere --rotate-password o --upgrade).Specifica completa dell'agente: docs/AGENT-RUNBOOK.md.
nas incident è in sola lettura. Ogni voce stampa PASS, WARN, FAIL o SKIP con un suggerimento su una riga (--json restituisce JSON strutturato; schema in schemas/incident.schema.json). Lo stato di uscita è 1 quando una qualsiasi voce è FAIL.