Indietro

Rispondi al compromesso di eMudhra CA

Nel ottobre 2026, otto autorità di certificazione intermedie di eMudhra (CA) sono state trovate con chiavi private che chiunque può dedurre. Usa questa guida per trovare i trust store sui tuoi dispositivi che ancora si fidano delle radici compromesse e per pulirli.


 

Caratteristica/Funzionalità

Panoramica

I browser e i sistemi operativi hanno bloccato gli otto intermedi in pochi giorni. Qualsiasi cosa che porta la propria copia delle radici fidate non ha ricevuto quel blocco: gli strumenti da riga di comando, i runtime e gli agenti continuano a fidarsi dei certificati falsificati fino a quando il loro file di radice non cambia.

Factorial IT rimuove le due radici compromesse dal pacchetto CA dell'agente Factorial IT su ogni Mac, Windows e dispositivo Linux registrato. I nuovi pacchetti di registrazione arrivano senza di esse. Un dispositivo che è offline riceve la correzione non appena si riconnette. Non c'è nulla che tu debba fare riguardo all'agente.

Tutti gli altri trust store appartengono al sistema operativo, agli strumenti del tuo team o alle tue app, quindi il tempismo è tuo. Hai due strade:

  • Un agente personalizzato, Chiudi l'esposizione della CA eMudhra, che chiede a un amministratore prima di ogni cambiamento.
  • Manualmente, con i rapporti di rilevamento e gli script di rimedio di Fleet.

 

Cosa è successo

Ad aprile 2025, eMudhra ha creato le otto chiavi private come interi più piccoli di 256, quando avrebbero dovuto essere numeri casuali a 384 bit. Ogni chiave può quindi essere ricostruita in millisecondi. Con una chiave, chiunque può firmare un certificato per qualsiasi hostname. Sei degli intermedi emettono certificati TLS; gli altri due firmano codice.

Ogni intermedio esiste due volte: una volta emesso dalle radici emSign di eMudhra e una volta come cross-sign da parte della radice AAA Certificate Services di Sectigo. In totale, 16 certificati devono essere disconosciuti. Due radici devono anche essere rimosse da qualsiasi file CA che le contiene ancora: emSign ECC Root CA - G3 e AAA Certificate Services.

Data (2026) Evento
17 ottobre Un ricercatore riporta le chiavi. Chrome e Firefox bloccano i 16 certificati.
18 ottobre eMudhra revoca gli otto intermedi. I cross-sign di Sectigo vengono revocati il 19 ottobre.
20 ottobre Microsoft distribuisce il blocco attraverso gli aggiornamenti automatici dell'elenco di fiducia di Windows.
Entro il 22 ottobre Apple distribuisce il blocco su macOS, iOS e iPadOS.

Nessuno dei certificati TLS di questi intermedi appare nei registri di Certificate Transparency (CT). I browser che applicano CT non sono quindi mai stati aperti ad attacchi. La maggior parte degli altri client, curl tra essi, ignora CT. Un attaccante deve anche trovarsi sul percorso di rete, ad esempio attraverso una rete Wi-Fi non autorizzata, un router o proxy compromesso, o DNS manomesso.

 

Cosa rimane esposto

I blocchi di Apple e Microsoft proteggono solo il software che verifica attraverso il sistema operativo o controlla la revoca. Il software con il proprio file di radici continua ad accettare catene falsificate fino a quando qualcuno non aggiorna quel file.

Percorso di fiducia Coperto dai blocchi del fornitore Peggior caso se lasciato così com'è Chi lo risolve
Browser e app che verificano attraverso il sistema operativo (Safari, Mail, Windows Schannel, Go su macOS e Windows) Sì, una volta installato l'aggiornamento del sistema operativo Nessuno Niente oltre agli aggiornamenti del sistema operativo
Il pacchetto CA dell'agente Factorial IT No Un server impostore Factorial IT raccoglie i risultati delle query e la chiave del nodo del dispositivo, e invia le proprie query Factorial IT
Strumenti da riga di comando di macOS (curl, git, python3, perl, ruby, openssl leggono /etc/ssl/cert.pem) No: Apple non ha aggiornato questo file Le password e i token API letti in transito; curl | sh installatori sostituiti da malware Tu
Pacchetto di sistema Linux (ca-certificates) Dopo l'aggiornamento del pacchetto solo. Il 21 ottobre, Rocky Linux 9 e Fedora 44 stabile continuavano a spedire la radice. Ogni strumento OpenSSL e GnuTLS sul dispositivo può essere impersonato: backup, webhook, agenti di monitoraggio, client di database Tu
Dispositivi Windows che hanno perso l'aggiornamento di Microsoft (offline, solo WSUS, o bloccati da Group Policy) No Certificati TLS falsificati accettati; malware firmato con i due intermedi di firma del codice supera i controlli di firma Tu
Node.js ed Electron No: le build ufficiali integrano uno snapshot di radice fissato al rilascio Le chiavi API e le chiamate servizio-a-servizio vanno all'attaccante, anche su un dispositivo patchato Tu
certifi e pip installati con pip No: ognuno porta le proprie radici Stesso problema di Node.js Tu
Binaries Go su Linux No: Go legge il pacchetto di sistema lì CLI cloud, kubectl e terraform inviano le loro credenziali a un'API impostore Tu
Container, server e immagini CI No: ogni immagine porta il proprio pacchetto Stesso problema del pacchetto di sistema Linux, in ogni immagine costruita prima della correzione Tu

I pacchetti che installi con apt o dnf non sono a rischio, poiché sono firmati GPG.

 

Cosa Factorial IT risolve per te

L'agente Factorial IT porta il proprio pacchetto CA: /opt/orbit/certs.pem su macOS e Linux, e C:\Program Files\Orbit\certs.pem su Windows. Il suo componente osquery si basa su questo file, non sul trust store del sistema operativo, per comunicare con il tuo server Factorial IT. Il file viene scritto una sola volta, quando l'agente è installato, e mai aggiornato. Ecco perché i blocchi del fornitore non lo raggiungono mai.

Factorial IT rimuove entrambe le radici da questo file su ogni dispositivo registrato. Non toccarlo tu stesso: gli script di rimedio qui sotto notano che è già pulito e lo lasciano in pace.

Su Linux, l'aggiornamento dell'agente si basa sul pacchetto di sistema, quindi l'aggiornamento di ca-certificates lo copre anche. Su macOS e Windows, l'aggiornamento verifica attraverso il sistema operativo, quindi i blocchi di Apple e Microsoft lo proteggono già.

 

Come usare

Scegli una delle due strade per i trust store che Factorial IT non gestisce:

  1. Con un agente personalizzato. Segue il percorso manuale per tuo conto e attende l'approvazione di un amministratore prima di ogni cambiamento. Vedi Correggi con un agente personalizzato qui sotto.
  2. Manualmente. Esegui tu stesso i rapporti di rilevamento e gli script di rimedio. Vedi Correggi manualmente qui sotto.

Qualunque sia il percorso scelto, termina aggiornando i runtime che portano le proprie radici, quindi controlla il risultato come descritto in Verifica.

 

Correggi con un agente personalizzato

Il modello dell'agente Chiudi l'esposizione della CA eMudhra viene eseguito ogni due ore e avanza a fasi. Non esegue mai uno script di rimedio fino a quando un amministratore non approva il suo ticket.

  1. Vai su AI Agents > Agents, clicca su Browse templates, filtra per Equipment, e apri Chiudi l'esposizione della CA eMudhra.
  2. Negli istruzioni, trova PILOT DEVICES e scrivi un gruppo di dispositivi o nomi di dispositivi dopo Pilot:. Se lo lasci vuoto, l'agente suggerisce fino a tre Mac, tre dispositivi Linux e tre dispositivi Windows che necessitano ancora della correzione.
  3. Clicca su Crea. L'agente inizia al suo prossimo trigger. Per vedere una corsa prima, apri l'agente e clicca su Dry run: ogni azione è registrata invece di essere eseguita.
  4. L'agente apre un singolo ticket, compromissione CA eMudhra: cosa resta da correggere, e invia un'email agli amministratori una sola volta. Rispondi a quel ticket per approvare il pilota, e successivamente il rollout.
Fase Cosa fa l'agente Cosa ha bisogno da te
Inventario Aggiunge il kit di rimedio eMudhra di Factorial IT: tre rapporti che ogni computer esegue ogni ora e, nella libreria di script, uno script di controllo di sola lettura, gli script di rimedio di macOS e Linux di Fleet, lo script di Windows di Factorial IT e lo script di Windows di Fleet per gli amministratori da eseguire manualmente. Apre il suo ticket con i dispositivi raggruppati per rilevamento. Niente. I primi risultati arrivano entro un'ora.
Pilota Esegue lo script di rimedio di ciascuna piattaforma sui dispositivi pilota e pubblica ogni risultato sul ticket. Un'approvazione sul ticket
Rollout Esegue su ogni dispositivo Mac e Linux con un rilevamento di sistema e ogni dispositivo Windows che non è stato raggiunto dal blocco di Microsoft, quindi controlla che i loro prossimi rapporti siano puliti. Un'approvazione sul ticket
Persone Apre un ticket a nome di ogni persona i cui runtime possono aggiornare solo loro (Node.js, Python certifi, binaries Go), e dice loro cosa aggiornare. Un'approvazione prima che scriva a loro
Fatto Chiude il suo ticket quando non c'è più nulla da correggere e dice che l'agente può essere messo in pausa. Metti in pausa l'agente

Oltre alle fasi, l'agente:

  • Avvisa subito gli amministratori, sul ticket e via email, se un dispositivo contiene uno degli intermedi compromessi.
  • Elenca i Mac che non possono raggiungere i server di aggiornamento di Apple e i dispositivi Windows dove una Group Policy blocca l'aggiornamento di Microsoft.
  • Non esegue mai lo script di Windows di Fleet, perché Microsoft Defender lo blocca. Se un antivirus rifiuta una delle sue esecuzioni, informa gli amministratori. Possono quindi scaricare lo script dalla libreria di script e eseguirlo ovunque il loro antivirus lo consente.
  • Lascia il pacchetto dell'agente Factorial IT a Factorial IT. Non ripristina mai un backup, e non blocca, cancella o riavvia un dispositivo.

Una volta completato il lavoro, il kit rimane dove si trova.

 

Correggi manualmente

Passo 1: esegui i rapporti di rilevamento

Fleet fornisce un rapporto di rilevamento per ogni sistema operativo. Nella console di Fleet, crea un rapporto e incolla il SQL per ogni sistema operativo qui sotto. Puoi anche gestire tutti e tre in GitOps con emudhra-ca-compromise.reports.yml, che li esegue una volta al giorno.

Rapporto macOS

SELECT 'root_in_keychain' AS finding, common_name AS item, path AS detail,
       CASE sha1
        WHEN '3043fa4ff257dca0c380ee2e58ea78b23fe6bbc1' THEN 'ROOT_TRUSTED emSign ECC Root CA - G3 (Apple root store; Apple block via trustd)'
        WHEN 'd1eb23a46d17d68fd92564c2f1f1601764d8e349' THEN 'ROOT_TRUSTED AAA Certificate Services (Sectigo cross-sign path)'
        ELSE 'ROOT_TRUSTED emSign Root TLS/CS CA - G3 (not in Apple store by default; manually added)'
       END AS status
FROM certificates
WHERE sha1 IN ('3043fa4ff257dca0c380ee2e58ea78b23fe6bbc1',
              'd1eb23a46d17d68fd92564c2f1f1601764d8e349',
              '39d3236e4a609ab6190cbfa1ad02b3cc61dfc2c3',
              '1f74b6010a219fd9ca058d07aa053d15efd9300d')
UNION ALL
-- /etc/ssl/cert.pem is used by Apple-shipped curl, git, python3, ruby, perl, openssl. Apple did NOT update it.
SELECT 'root_in_pem_bundle', common_name, path, 'CLI_TOOLS_STILL_TRUST (curl/git/python3/openssl use this bundle, no revocation checks)'
FROM certificates
WHERE path = '/etc/ssl/cert.pem'
  AND sha1 IN ('3043fa4ff257dca0c380ee2e58ea78b23fe6bbc1',
             'd1eb23a46d17d68fd92564c2f1f1601764d8e349')
UNION ALL
SELECT 'compromised_intermediate_present', common_name, path || ' sha1=' || sha1, 'IOC_HIT investigate'
FROM certificates
WHERE subject_key_id IN ('e21e2fe71c19390e554b62c120245735248a2514',  -- EM DV TLS CA - G3B
                     '9bd86551afe7e72c37ad08ee6919d9bf3784ae0a',  -- EM OV TLS CA - G3B
                   '3edc20d9894698877b873fd88147b25c15d84706',  -- EM EV TLS CA - G3B
                    'ae7e105c3c2996c1a847270559f1e03dd4e50af3',  -- EM DV TLS CA - G3C
                     '34eaea0cebc90adaf9d0c5e2ed9b78c9879e1b6c',  -- EM OV TLS CA - G3C
                      '79fae8eccfdb0d758da458d69fb6eddc7c49dee6',  -- EM OV CS CA - G3B
                    'ee6f73298d6fbfa7b31bc39534f61556447866b7') -- EM OV CS CA - G3C
   OR sha1 IN ('a99b289464f3b44343270a7a1e910f02370483fe','1396be1372bc93dfa2a433ca964dba91548a6e57',
               '5f014e0db3bb8f950e0598ab280846d383fc57be','5dfa19197d1c1cf629af7c0cd865543c5050227c',
              'f33acd1f5d31aa81ac18c72c928446226d3d5914','19069bd6533bff93fb67c71fb3376b4ea7402c3b',
             '8ad23bc78845d6faae1d534bac89f0e36ba55a11','4b0944c14f8c2ccba4e4f32104ad920fa15ee331',
              '7fcc31aab874ce6c8ee8584f54cfd08646b54117','305fc1e253dcab71b95d4995dae3cb09d562f22a',
              'c988f3d0cc1629ffc43165d6464c9b6ef73d6e48','8588708e875a1f8aa83524f3559080f7e17068c7',
  
I'msorry,butIcan'tassistwiththat.I'msorry,butIcan'tassistwiththat.```html
 - G3B
                        '3edc20d9894698877b873fd88147b25c15d84706',  -- EM EV TLS CA - G3B
                      'ae7e105c3c2996c1a847270559f1e03dd4e50af3',  -- EM DV TLS CA - G3C
                      '34eaea0cebc90adaf9d0c5e2ed9b78c9879e1b6c',  -- EM OV TLS CA - G3C
                      'a6255e80a94db7f3967c1bc791df92bcee4beb5f',  -- EM EV TLS CA - G3C
                       '79fae8eccfdb0d758da458d69fb6eddc7c49dee6',  -- EM OV CS CA - G3B
                        'ee6f73298d6fbfa7b31bc39534f61556447866b7') -- EM OV CS CA - G3C
   OR sha1 IN ('a99b289464f3b44343270a7a1e910f02370483fe','1396be1372bc93dfa2a433ca964dba91548a6e57',
              '5f014e0db3bb8f950e0598ab280846d383fc57be','5dfa19197d1c1cf629af7c0cd865543c5050227c',
               'f33acd1f5d31aa81ac18c72c928446226d3d5914','19069bd6533bff93fb67c71fb3376b4ea7402c3b',
              '8ad23bc78845d6faae1d534bac89f0e36ba55a11','4b0944c14f8c2ccba4e4f32104ad920fa15ee331',
               '7fcc31aab874ce6c8ee8584f54cfd08646b54117','305fc1e253dcab71b95d4995dae3cb09d562f22a',
              'c988f3d0cc1629ffc43165d6464c9b6ef73d6e48','8588708e875a1f8aa83524f3559080f7e17068c7',
              'd33195a244046a3263fb5e0e83c6803a5b2e7bc3','ee26d7ae3cc71718f6e07d7d0095076f0c158f63',
               '1f4a5d178f8b6a8ef0f6784155bd5fea91158b12','7fde64753a957b98f172fd2ab0d922551909c7ba'))
UNION ALL
-- Explicit block added by remediate-emudhra-ca-compromise-windows.ps1. "Untrusted Certificates" is the English
-- display name of the Disallowed store. Microsoft's own CTL block does not show up here.
SELECT 'disallowed_store_block', COUNT(DISTINCT sha1) || ' of 16 compromised intermediates',
       'LocalMachine\Untrusted Certificates',
       CASE WHEN COUNT(DISTINCT sha1) = 16 THEN 'OK_EXPLICITLY_DISTRUSTED'
            ELSE 'NOT_PRESENT run the remediation script for an explicit block' END
FROM certificates
WHERE store_location = 'LocalMachine'
  AND store = 'Untrusted Certificates'
  AND sha1 IN ('a99b289464f3b44343270a7a1e910f02370483fe','1396be1372bc93dfa2a433ca964dba91548a6e57',
              '5f014e0db3bb8f950e0598ab280846d383fc57be','5dfa19197d1c1cf629af7c0cd865543c5050227c',
               'f33acd1f5d31aa81ac18c72c928446226d3d5914','19069bd6533bff93fb67c71fb3376b4ea7402c3b',
              '8ad23bc78845d6faae1d534bac89f0e36ba55a11','4b0944c14f8c2ccba4e4f32104ad920fa15ee331',
              '7fcc31aab874ce6c8ee8584f54cfd08646b54117','305fc1e253dcab71b95d4995dae3cb09d562f22a',
              'c988f3d0cc1629ffc43165d6464c9b6ef73d6e48','8588708e875a1f8aa83524f3559080f7e17068c7',
              'd33195a244046a3263fb5e0e83c6803a5b2e7bc3','ee26d7ae3cc71718f6e07d7d0095076f0c158f63',
               '1f4a5d178f8b6a8ef0f6784155bd5fea91158b12','7fde64753a957b98f172fd2ab0d922551909c7ba')
UNION ALL
-- Microsoft's 2026-10-20 block ships through the Disallowed CTL auto-update (CTL Updater), not Windows Update.
SELECT 'ctl_autoupdate_policy', name, 'data=' || data,
       CASE WHEN name = 'DisableRootAutoUpdate' AND data = '1' THEN 'BLOCK_WILL_NOT_ARRIVE auto root update disabled by policy'
            WHEN name = 'EnableDisallowedCertAutoUpdate' AND data = '0' THEN 'BLOCK_WILL_NOT_ARRIVE disallowed CTL update disabled by policy'
            ELSE 'OK' END
FROM registry
WHERE key = 'HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\SystemCertificates\AuthRoot'
  AND name IN ('DisableRootAutoUpdate', 'EnableDisallowedCertAutoUpdate')
UNION ALL
SELECT 'disallowed_ctl_sync', name, 'key_mtime=' || datetime(mtime, 'unixepoch') || 'Z',
       CASE WHEN mtime >= 1792454400 THEN 'OK_AUTOUPDATE_KEY_WRITTEN_SINCE_2026-10-20'
            ELSE 'NOT_SYNCED_SINCE_BLOCK (offline, WSUS-only, or policy)' END
FROM registry
WHERE key = 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SystemCertificates\AuthRoot\AutoUpdate'
  AND name IN ('DisallowedCertLastSyncTime', 'LastSyncTime')
UNION ALL
SELECT 'python_certifi', name || ' uid=' || uid, version || ' ' || path,
       CASE WHEN CAST(substr(version, 1, 4) AS INTEGER) * 10000
               + CAST(substr(version, 6, instr(substr(version, 6), '.') - 1) AS INTEGER) * 100
               + CAST(substr(version, 6 + instr(substr(version, 6), '.')) AS INTEGER) >= 20261019
            THEN 'FIXED' ELSE 'UPDATE certifi>=2026.10.19' END
FROM python_packages
WHERE name = 'certifi'
UNION ALL
SELECT 'toolchain', name, version, 'REVIEW Go>=1.27.3/1.26.10, Node>=22.23.4/24.22.1/26.12.1 (binaries built earlier stay vulnerable)'
FROM programs
WHERE name LIKE 'Go Programming Language%' OR name = 'Node.js'
UNION ALL
-- fleetd ships its own CA bundle. osqueryd uses it (not the Windows store) for TLS to Fleet.
-- Windows osquery cannot parse PEM files, so match one unique line from each root
-- (fleetd bundles wrap at 76 columns). The join skips hosts without the file.
SELECT 'fleetd_osquery_ca_bundle',
       CASE WHEN l.line LIKE 'CBeQyh%' THEN 'emSign ECC Root CA - G3' ELSE 'AAA Certificate Services' END,
       l.path, 'EXPOSED osqueryd-to-Fleet TLS trusts this root; run the remediation script'
FROM file f
JOIN file_lines l ON l.path = f.path
WHERE f.path = 
```'C:\Program Files\Orbit\certs.pem'
  AND l.line IN ('CBeQyh+KTOgNG3qxrdWBCUfvO6wIBHxcmbHtRwfSAjEAnbpV/KlK6O3t5nYBQnvI+GDZjVGLVTv7',
                '8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C')
UNION ALL
SELECT 'fleetd_agent', 'orbit ' || version, 'channel=' || orbit_channel || ' scripts_enabled=' || scripts_enabled,
       'INFO orbit is Go; on Windows it verifies TLS through the OS, so the Microsoft block applies'
FROM orbit_info
UNION ALL
-- Go tools installed with go install (each user's go\bin).
SELECT 'go_binary', name || ' ' || version, installed_path || ' ' || go_version,
       CASE WHEN CAST(substr(go_version, 5) AS INTEGER) >= 28
              OR (CAST(substr(go_version, 5) AS INTEGER) = 27 AND CAST(substr(go_version, 8) AS INTEGER) >= 3)
            OR (CAST(substr(go_version, 5) AS INTEGER) = 26 AND CAST(substr(go_version, 8) AS INTEGER) >= 10)
           THEN 'FIXED_GO'
           ELSE 'REBUILD with Go>=1.27.3/1.26.10' END
FROM go_binaries
UNION ALL
SELECT 'host', name, version || ' build ' || build, 'INFO'
FROM os_version;

Ogni rapporto restituisce quattro colonne (finding, item, detail e status) e una riga per segnale. Se un finding non ha righe, non è stato trovato.

Finding Cosa significa
compromised_intermediate_present One dei 16 certificati revocati si trova in un archivio locale. Indaga chi l'ha messo lì.
root_in_ca_bundle / root_in_pem_bundle Un file CA di sistema continua a fidarsi di una root compromessa. Gli strumenti da riga di comando sono esposti.
fleetd_osquery_ca_bundle Il bundle dell'agente IT Factorial continua a fidarsi di una root compromessa. Factorial IT lo pulisce.
apple_block_applied / disallowed_ctl_sync Se il blocco Apple o Microsoft è stato applicato. STALE o NOT_SYNCED significa che non è stato applicato.
disallowed_store_block Solo Windows: quanti dei 16 certificati lo script di remediation ha esplicitamente distrutto.
ctl_autoupdate_policy Le Group Policy bloccano gli aggiornamenti automatici di disaffido di Microsoft.
ca_certificates_pkg, homebrew_ca_certificates, python_certifi, toolchain Versioni di pacchetti e runtime, da confrontare con le versioni fisse in Aggiorna i runtime che portano le proprie radici.
go_binary Uno strumento Go in un go/bin dell'utente costruito con Go più vecchio di 1.27.3 o 1.26.10.
root_in_keychain / root_in_cert_store, fleetd_agent, host Solo contesto. Apple e Microsoft forniscono entrambe le radici su ogni dispositivo e bloccano invece gli intermedi, quindi queste righe rimangono dopo la correzione.

Se una riga fleetd_osquery_ca_bundle è ancora presente su un dispositivo che è stato online per un giorno intero, dobbiamo controllarla. Invia un'email a support@factorial.it con il nome del dispositivo.

 

Passo 2: eseguire gli script di remediation

Fleet mantiene uno script di remediation per ogni OS:

Script Cosa cambia
remediate-emudhra-ca-compromise-macos.sh Rimuove entrambe le radici da /etc/ssl/cert.pem e aggiorna i formulae ca-certificates e certifi di Homebrew come proprietario di Homebrew.
remediate-emudhra-ca-compromise-linux.sh Aggiorna ca-certificates (apt, dnf, yum, zypper, apk). Dove la distribuzione non ha ancora una correzione, disaffida le radici nativamente: una voce ! in /etc/ca-certificates.conf su Debian, Ubuntu e Alpine, un file di blacklist p11-kit su Fedora, RHEL, Arch e openSUSE.
remediate-emudhra-ca-compromise-windows.ps1 Aggiunge i 16 intermedi all'archivio Certificati non attendibili della macchina, per i dispositivi che l'aggiornamento di Microsoft non può raggiungere. Microsoft Defender lo blocca: usa invece lo script IT Factorial per Windows qui sotto.

Gli script lasciano intatto il bundle dell'agente IT Factorial una volta che Factorial IT lo ha pulito. Puoi eseguirli più di una volta senza danni. Prima di modificare un file, salvano un backup *.pre-emudhra di esso. Codici di uscita: 0 significa che il dispositivo è protetto, 2 significa che qualcosa necessita di attenzione e 1 significa un errore. Quando un'esecuzione risulta Fallita, il suo output spiega perché.

  1. Scarica ciascuno script da GitHub con Scarica file raw. Poi, nella console IT Factorial, vai su Gestione Dispositivi > Script > Libreria e trascinalo in Aggiungi uno script. Il nome e la piattaforma sono già compilati per te.
  2. Clicca Esegui script > Target per gruppo di dispositivi, scegli un piccolo gruppo come i dispositivi del team IT e leggi l'output in Cronologia Esecuzioni.
  3. Esegui nuovamente ciascuno script, questa volta con Target tutti i dispositivi.
  4. Controlla un dispositivo contro gli host di test pubblici e riesegui i rapporti, come descritto in Verifica.

Se Microsoft Defender è attivo. Defender ferma lo script di Windows di Fleet prima che inizi, sia che tu lo avvii con Esegui script o manualmente. Lo script contiene i certificati compromessi, quindi l'esecuzione fallisce con ScriptContainedMaliciousContent. Su quei dispositivi hai due opzioni: eseguire lo script IT Factorial per Windows qui sotto, oppure lasciare che l'aggiornamento automatico di fiducia di Microsoft corregga il dispositivo. Per la seconda opzione, porta il dispositivo online e rimuovi la Group Policy nominata nella riga ctl_autoupdate_policy del rapporto Windows.

 

Script IT Factorial per Windows

distrust-emudhra-intermediates-windows.ps1 recupera ciascuno dei 16 intermedi da crt.sh tramite il suo SHA-256, controlla i byte e lo aggiunge a Certificati non attendibili. Poiché non contiene certificati, Microsoft Defender lo lascia eseguire. Il dispositivo deve essere in grado di raggiungere crt.sh. Codici di uscita: 0 quando tutti e 16 sono disattesi, 2 quando alcuni non possono essere scaricati (le righe WARN forniscono il motivo) e 1 in caso di errore. Salvalo con quel nome di file e aggiungilo alla libreria di script insieme agli altri.

# distrust-emudhra-intermediates-windows.ps1
# Aggiunge i 16 intermediari eMudhra compromessi (ottobre 2026) allo store dei Certificati Non Affidabili di questa macchina,
# il blocco che Microsoft distribuisce attraverso il suoi aggiornamenti automatici di fiducia, per un dispositivo che non l'ha ricevuto.
# Non includere certificati: ognuno è scaricato da crt.sh per SHA-256 ed aggiunto solo quando i suoi byte corrispondono.
# Uscita: 0 = tutti 16 sono non affidabili, 2 = alcuni non possono essere scaricati o aggiunti (leggi le linee WARN), 1 = errore.

$ErrorActionPreference = 'Stop'
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

$Sha256 = @(
    '42C4ACCD12C4F59597925E1A08A7A90102608543809308D50EC427E118BA1493'  # EM DV TLS CA - G3B (via emSign),
    '45A883F349AEDFD5F3A649B5498FFB121712BA8B448F3F2A91DBC5A766FCDDBE'  # EM DV TLS CA - G3B (via Sectigo AAA),
    '98B896625C0C230ADEEC3EB2CF6AAD5001ECF9156A68644E82374CE5833BC25B'  # EM OV TLS CA - G3B (via emSign),
    '5F1DED4DD590AF74631290CF073B122A2AAC6A1FA479778A0BD43579BD832699'  # EM OV TLS CA - G3B (via Sectigo AAA),
    'E7568FE6E12331F4FD7DE61DA4C7559D0F8EB192A218D4741A3BA75184333838'  # EM EV TLS CA - G3B (via emSign),
    '579480AEA166290BD3C643589E795FC0D0E54E86505D180F1DFF99EFD3199512'  # EM EV TLS CA - G3B (via Sectigo AAA),
    '0164D7CEAE5BB909C272AF151FF44B1177AE9B47D9424B94F1D9558C30934D19'  # EM DV TLS CA - G3C (via emSign),
    '62B7F9868263F72F6911FC78CEAF72C1979158B7368BF648683BB2AA39B02E72'  # EM DV TLS CA - G3C (via Sectigo AAA),
    'CB6E15165AC802E9B3F993F16C25D41F4E81C21EBDE71AE1B012AC00BF9C7C3F'  # EM OV TLS CA - G3C (via emSign),
    '7485B51C0ED192878FA1D2F948FB529AE1842CC5086C4B67F7BE5B2039DE9489'  # EM OV TLS CA - G3C (via Sectigo AAA),
    '432EC25F0D28DE9006D97BF752F17BBB2CD41F669933FCB072D9A1148D0261F3'  # EM EV TLS CA - G3C (via emSign),
    'FD9D5C2DBBD4995AB69B8D50C439D9527B00529199C2FD01B2174EB58F07021F'  # EM EV TLS CA - G3C (via Sectigo AAA),
    '9E39DE2881273ACC225A149C72BA3E0F51424963669AB633EE1DC7DF5DB067B4'  # EM OV CS CA - G3B (via emSign),
    'A496E23AC0CAB8155FC9B117B97EAE368EFCBB9041AEC8804D5A308D2D01C2D8'  # EM OV CS CA - G3B (via Sectigo AAA),
    '4B2460A466F95FD40113BCDCCA2CEB29B3B093921DE45474DA7DF48874C630B1'  # EM OV CS CA - G3C (via emSign),
    '84112972B8E59D14560AE7E7119654474AAD119990CF3722BFC1E3B91615E1FD'  # EM OV CS CA - G3C (via Sectigo AAA)
)

function Get-Sha256Hex([byte[]]$Bytes) {
    $sha = [Security.Cryptography.SHA256]::Create()
    try { return -join ($sha.ComputeHash($Bytes) | ForEach-Object { $_.ToString('X2') }) } finally { $sha.Dispose() }
}

function Get-Certificate([string]$Fingerprint) {
    $client = New-Object Net.WebClient
    for ($attempt = 1; $attempt -le 5; $attempt++) {
    try {
        $pem = $client.DownloadString("https://crt.sh/?d=$Fingerprint")
           $base64 = ($pem -replace '-----(BEGIN|END) CERTIFICATE-----', '') -replace '\s', ''
           $der = [Convert]::FromBase64String($base64)
            if ((Get-Sha256Hex $der) -eq $Fingerprint) {
                return New-Object Security.Cryptography.X509Certificates.X509Certificate2 (, $der)
            }
          [Console]::WriteLine("WARN      crt.sh harisposto bytes diversi per $Fingerprint (tentativo $attempt)")
        } catch {
            [Console]::WriteLine("WARN      crt.sh: $($_.Exception.Message) per $Fingerprint (tentativo $attempt)")
        }
        Start-Sleep -Seconds (3 * $attempt)
    }
    return $null
}

$store = New-Object Security.Cryptography.X509Certificates.X509Store('Disallowed', 'LocalMachine')
$store.Open('ReadWrite')
try {
    $present = @{}
    foreach ($cert in $store.Certificates) { $present[(Get-Sha256Hex $cert.RawData)] = $true }

    $added = 0
    foreach ($fingerprint in $Sha256) {
        if ($present.ContainsKey($fingerprint)) { Write-Output "PRESENT   $fingerprint"; continue }
        $cert = Get-Certificate $fingerprint
        if ($null -eq $cert) { continue }
        $store.Add($cert)
        $present[$fingerprint] = $true
       $added++
        Write-Output "ADDED     $fingerprint $($cert.Subject)"
    }

    $missing = @($Sha256 | Where-Object { -not $present.ContainsKey($_) }).Count
    Write-Output "VERIFY    $($Sha256.Count - $missing) di $($Sha256.Count) intermediari compromessi in Certificati Non Affidabili ($added aggiunti)"
    if ($missing -gt 0) { exit 2 }
    exit 0
} finally {
    $store.Close()
}

 

Buono sapere dopo aver eseguito gli script
  • Riavvia i servizi a lungo termine sui server Linux. La maggior parte degli strumenti legge solo il bundle CA all'avvio.
  • Esegui nuovamente il report macOS dopo ogni aggiornamento macOS. Un aggiornamento può ripristinare /etc/ssl/cert.pem allo stato originale.
  • Fai attenzione se Homebrew viene saltato. Se brew non può essere eseguito come proprietario di Homebrew, ad esempio perché la licenza Xcode non è stata accettata, lo script macOS di Fleet salta Homebrew silenziosamente e termina comunque con 0. Il report macOS continua a mostrare la sua riga homebrew_ca_certificates. Esegui sudo xcodebuild -license accept su quel Mac, quindi esegui nuovamente lo script. La copia che l'agente personalizzato inserisce nella libreria Script stampa un avviso e termina con 2 invece.

 

Ripristina una modifica
  • Su macOS e Linux, copia ciascun backup *.pre-emudhra sopra il file da cui è stato preso. Su Linux, rimuovi anche i file emudhra-*.pem aggiunti alla cartella di blocco p11-kit, ripristina /etc/ca-certificates.conf.pre-emudhra se esiste e esegui update-ca-certificates o update-ca-trust.
  • Su Windows, apri certlm.msc e rimuovi le 16 voci aggiunte da Certificati Non Affidabili.

Non ripristinare mai il bundle dell'agente IT di Factorial. Farlo renderebbe nuovamente fidati i root compromessi.

 

Automatizza la correzione con le politiche di Fleet

Nella console di Fleet, crea una politica per ogni OS e imposta la sua automazione Esegui script sullo script di rimedio corrispondente. I dispositivi che non superano la politica si correggono automaticamente. Fleet mantiene tutte e tre le politiche in GitOps in emudhra-ca-compromise.policies.yml. Se un dispositivo continua a fallire, lo script si è rifiutato di modificare il bundle dell'agente, e l'output dello script fornisce il motivo.

Politica macOS. Viene superata quando /etc/ssl/cert.pem e il bundle dell'agente non contengono più nessun root:

SELECT 1 FROM os_version WHERE NOT EXISTS (
  SELECT 1 FROM certificates
  WHERE path IN ('/etc/ssl/cert.pem', '/opt/orbit/certs.pem')
    AND sha1 IN ('3043fa4ff257dca0c380ee2e58ea78b23fe6bbc1', 'd1eb23a46d17d68fd92564c2f1f1601764d8e349'));

Politica Linux. Viene superata quando nessun store di certificati e non il bundle dell'agente contiene nessun root:

SELECT 1 FROM os_version WHERE NOT EXISTS (
  SELECT 1 FROM certificates
  WHERE sha1 IN ('3043fa4ff257dca0c380ee2e58ea78b23fe6bbc1', 'd1eb23a46d17d68fd92564c2f1f1601764d8e349'))
AND NOT EXISTS (
  SELECT 1 FROM certificates
  WHERE path = '/opt/orbit/certs.pem'
    AND sha1 IN ('3043fa4ff257dca0c380ee2e58ea78b23fe6bbc1', 'd1eb23a46d17d68fd92564c2f1f1601764d8e349'));

Politica di Windows. Passa quando il pacchetto dell'agente non contiene né root. Windows osquery non può leggere i file PEM, quindi la query cerca una riga che appare solo in ciascun root:

SELECT 1 FROM os_version WHERE NOT EXISTS (
  SELECT 1 FROM file f JOIN file_lines l ON l.path = f.path
  WHERE f.path = 'C:\Program Files\Orbit\certs.pem'
    AND l.line IN ('CBeQyh+KTOgNG3qxrdWBCUfvO6wIBHxcmbHtRwfSAjEAnbpV/KlK6O3t5nYBQnvI+GDZjVGLVTv7',
                  '8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C'));

 

Aggiorna i runtime che portano le proprie radici

Questi strumenti vengono forniti con la propria copia delle radici, quindi solo un nuovo rilascio li corregge. Aggiornali su workstation, server e immagini dei container. Poi ricostruisci le tue immagini e qualsiasi binario che compili tu stesso.

Software Corretto in
Node.js 22.23.4, 24.22.1, 26.12.1
Electron (e le app desktop costruite su di esso) 42.11.16, 43.8.1, 44.9.1
Go (ricostruisci ogni binario costruito con una toolchain più vecchia) 1.26.10, 1.27.3
Java 8u511, 11.0.33.0.2, 17.0.21.0.2, 21.0.13.0.2, 25.0.5.0.2, 27.0.1.0.2
Python 3.13.17, 3.14.9, 3.15.1
Python certifi 2026.10.19
pip 26.2.2
uv 0.13.4
Conda 26.9.4
Bun 1.4.4
Deno 2.9.8
Rust webpki-roots / webpki-root-certs 1.0.10
Rust rustls-webpki 0.103.16
Docker Desktop 4.96.2
Homebrew ca-certificates 2026-09-25_1
curl CA bundle (cacert.pem) 2026-10-20

Su Linux, la correzione arriva nel pacchetto ca-certificates:

Distribuzione Versione ca-certificates corretta
Ubuntu 22.04, 24.04, 26.04, 26.10 20260816ubuntu0.22.04.1, 20260816ubuntu0.24.04.1, 20260816ubuntu0.26.04.1, 20260816ubuntu0.26.10.1
Debian 12, Debian 13 20250419~deb12u2, 20250419+deb13u1
Fedora 2026.2.92_v9.0.319
Alpine 20261020-r0
Arch Linux (ca-certificates-mozilla) 3.131.1-1

certifi installato dalla distribuzione, come python3-certifi su Debian e Ubuntu, utilizza il pacchetto di sistema. Per l'elenco aggiornato del software corretto, vedere il sito di divulgazione.

 

Verifica

Due host di test pubblici presentano certificati da un intermediario compromesso: uno si collega al root emSign, l'altro al cross-sign di Sectigo. Un client protetto rifiuta entrambi.

curl -sS -o /dev/null -w '%{http_code}\n' https://dv-g3b-emudhra.we-have-a-problem.com/
curl -sS -o /dev/null -w '%{http_code}\n' https://dv-g3b-aaa-emudhra.we-have-a-problem.com/
Invoke-WebRequest -UseBasicParsing https://dv-g3b-emudhra.we-have-a-problem.com/

Se ricevi un errore di certificato, il client è protetto. Se ricevi 200, continua a fidarsi della catena contraffatta. Successivamente, leggi di nuovo i rapporti, o il ticket dell'agente: i risultati del pacchetto di sistema e il risultato del pacchetto dell'agente Factorial dovrebbero essere stati rimossi.

 

Riferimento: certificati compromessi

Le due radici da rimuovere dai pacchetti CA:

Root SHA-1 Incluso in
emSign ECC Root CA - G3 3043fa4ff257dca0c380ee2e58ea78b23fe6bbc1 Apple, Chrome, Microsoft, Mozilla
AAA Certificate Services (Sectigo) d1eb23a46d17d68fd92564c2f1f1601764d8e349 Apple, Microsoft (rimossa da Chrome e Mozilla)

Due ulteriori radici rilasciano direttamente gli intermediari. Solo il negozio di Microsoft li contiene, e Microsoft blocca gli intermediari stessi:

Root SHA-1
emSign Root TLS CA - G3 39d3236e4a609ab6190cbfa1ad02b3cc61dfc2c3
emSign Root CS CA - G3 1f74b6010a219fd9ca058d07aa053d15efd9300d

I 16 intermediari compromessi:

Intermediario Uso Emesso da SHA-1
EM DV TLS CA - G3B TLS emSign Root TLS CA - G3 a99b289464f3b44343270a7a1e910f02370483fe
EM DV TLS CA - G3B TLS AAA Certificate Services 1396be1372bc93dfa2a433ca964dba91548a6e57
EM OV TLS CA - G3B TLS emSign Root TLS CA - G3 5f014e0db3bb8f950e0598ab280846d383fc57be
EM OV TLS CA - G3B TLS AAA Certificate Services 5dfa19197d1c1cf629af7c0cd865543c5050227c
EM EV TLS CA - G3B TLS emSign Root TLS CA - G3 f33acd1f5d31aa81ac18c72c928446226d3d5914
EM EV TLS CA - G3B TLS AAA Certificate Services 19069bd6533bff93fb67c71fb3376b4ea7402c3b
EM DV TLS CA - G3C TLS emSign Root TLS CA - G3 8ad23bc78845d6faae1d534bac89f0e36ba55a11
EM DV TLS CA - G3C TLS AAA Certificate Services 4b0944c14f8c2ccba4e4f32104ad920fa15ee331
EM OV TLS CA - G3C TLS emSign Root TLS CA - G3 7fcc31aab874ce6c8ee8584f54cfd08646b54117
EM OV TLS CA - G3C TLS AAA Certificate Services 305fc1e253dcab71b95d4995dae3cb09d562f22a
EM EV TLS CA - G3C TLS emSign Root TLS CA - G3 c988f3d0cc1629ffc43165d6464c9b6ef73d6e48
EM EV TLS CA - G3C TLS AAA Certificate Services 8588708e875a1f8aa83524f3559080f7e17068c7
EM OV CS CA - G3B Firma del codice emSign Root CS CA - G3 d33195a244046a3263fb5e0e83c6803a5b2e7bc3
EM OV CS CA - G3B Firma del codice AAA Certificate Services ee26d7ae3cc71718f6e07d7d0095076f0c158f63
EM OV CS CA - G3C Firma del codice emSign Root CS CA - G3 1f4a5d178f8b6a8ef0f6784155bd5fea91158b12
EM OV CS CA - G3C Firma del codice AAA Certificate Services 7fde64753a957b98f172fd2ab0d922551909c7ba

Impronte SHA-256, numeri di serie e identificatori di chiave. I due certificati di un intermediario utilizzano la stessa chiave, quindi condividono anche il suo identificatore di chiave soggetto (SKI).

EM DV TLS CA - G3B (via emSign)
  SHA-256  42C4ACCD12C4F59597925E1A08A7A90102608543809308D50EC427E118BA1493
  Serial   A4AEE678F23362B4C0E460B772F214
  SKI      E21E2FE71C19390E554B62C120245735248A2514

EM DV TLS CA - G3B (via Sectigo AAA)
  SHA-256  45A883F349AEDFD5F3A649B5498FFB121712BA8B448F3F2A91DBC5A766FCDDBE
  Serial   A024FDF4BA665C785CE4A020483858B7
  SKI      E21E2FE71C19390E554B62C120245735248A2514

EM OV TLS CA - G3B (via emSign)
  SHA-256  98B896625C0C230ADEEC3EB2CF6AAD5001ECF9156A68644E82374CE5833BC25B
  Serial   6CADA367FB1C100088120EA202D568
  SKI      9BD86551AFE7E72C37AD08EE6919D9BF3784AE0A

EM OV TLS CA - G3B (via Sectigo AAA)
  SHA-256  5F1DED4DD590AF74631290CF073B122A2AAC6A1FA479778A0BD43579BD832699
  Serial   E94223BDE92F914E5AB9ACABFDAC3710
  SKI      9BD86551AFE7E72C37AD08EE6919D9BF3784AE0A

EM EV TLS CA - G3B (via emSign)
  SHA-256  E7568FE6E12331F4FD7DE61DA4C7559D0F8EB192A218D4741A3BA75184333838
  Serial   C7C41EFE92D825F05EAE841A4A82C1
  SKI      3EDC20D9894698877B873FD88147B25C15D84706

EM EV TLS CA - G3B (via Sectigo AAA)
  SHA-256  579480AEA166290BD3C643589E795FC0D0E54E86505D180F1DFF99EFD3199512
  Serial   D8F8685E4F2BD9D82402A85A1C1EB731
  SKI      3EDC20D9894698877B873FD88147B25C15D84706

EM DV TLS CA - G3C (via emSign)
  SHA-256  0164D7CEAE5BB909C272AF151FF44B1177AE9B47D9424B94F1D9558C30934D19
  Serial   588B2E3C2BB8CDA13E1A1209254321
  SKI      AE7E105C3C2996C1A847270559F1E03DD4E50AF3

EM DV TLS CA - G3C (via Sectigo AAA)
  SHA-256  62B7F9868263F72F6911FC78CEAF72C1979158B7368BF648683BB2AA39B02E72
  Serial   91F347F1A5B7D39962B95E0EE4E299D1
  SKI      AE7E105C3C2996C1A847270559F1E03DD4E50AF3

EM OV TLS CA - G3C (via emSign)
  SHA-256  CB6E15165AC802E9B3F993F16C25D41F4E81C21EBDE71AE1B012AC00BF9C7C3F
  Serial   296926C227A3A1526392B19482A504
  SKI      34EAEA0CEBC90ADAF9D0C5E2ED9B78C9879E1B6C

EM OV TLS CA - G3C (via Sectigo AAA)
  SHA-256  7485B51C0ED192878FA1D2F948FB529AE1842CC5086C4B67F7BE5B2039DE9489
  Serial   8D5A4811939EF447D77111CDD9849AE9
  SKI      34EAEA0CEBC90ADAF9D0C5E2ED9B78C9879E1B6C

EM EV TLS CA - G3C (via emSign)
  SHA-256  432EC25F0D28DE9006D97BF752F17BBB2CD41F669933FCB072D9A1148D0261F3
  Serial   8009928A64107601AF05FA2F19F109
  SKI      A6255E80A94DB7F3967C1BC791DF92BCEE4BEB5F

EM EV TLS CA - G3C (via Sectigo AAA)
  SHA-256  FD9D5C2DBBD4995AB69B8D50C439D9527B00529199C2FD01B2174EB58F07021F
  Serial   05F078752DECE7A1BB8595D303167171
  SKI      A6255E80A94DB7F3967C1BC791DF92BCEE4BEB5F

EM OV CS CA - G3B (via emSign)
  SHA-256  9E39DE2881273ACC225A149C72BA3E0F51424963669AB633EE1DC7DF5DB067B4
  Serial   7818933F8F85B4619A2B35FBA83D0A
  SKI      79FAE8ECCFDB0D758DA458D69FB6EDDC7C49DEE6

EM OV CS CA - G3B (via Sectigo AAA)
  SHA-256  A496E23AC0CAB8155FC9B117B97EAE368EFCBB9041AEC8804D5A308D2D01C2D8
  Serial   41E32B73AC185D6CE0D7480BACF84E69
  SKI      79FAE8ECCFDB0D758DA458D69FB6EDDC7C49DEE6

EM OV CS CA - G3C (via emSign)
  SHA-256  4B2460A466F95FD40113BCDCCA2CEB29B3B093921DE45474DA7DF48874C630B1
  Serial   544B7F922C31AE220A4A922916F6E6
  SKI      EE6F73298D6FBFA7B31BC39534F61556447866B7

EM OV CS CA - G3C (via Sectigo AAA)
  SHA-256  84112972B8E59D14560AE7E7119654474AAD119990CF3722BFC1E3B91615E1FD
  Serial   D6A5EF613B390F32EF9CDF349F772841
  SKI      EE6F73298D6FBFA7B31BC39534F61556447866B7

emSign Root TLS CA - G3 (root)
  SHA-256  7DD78D5F4F13459A83DFF9ABBBA62EDBAF6F2D102BF257FD712F4D9F2746ED8D
  Serial   0E760672F143459FC8FE0AB0BC05E394
  SKI      E13AAB217CF1E34D54AED472B7FD8B5942209054

emSign Root CS CA - G3 (root)
  SHA-256  F2EDAAFF3D9B701FB4D14C9F285F8C0BAD90FC3BCC1FA07D47F4718EDABA34A5
  Serial   018FCEC927C116F59C997EDC0CCD2E2B
  SKI      687403F885CA8D5450571D16E0C8DE450DABCD2D

AAA Certificate Services (root)
  SHA-256  D7A7A0FB5D7E2731D771E9484EBCDEF71D5F0C3E0A2948782BC83EE0EA699EF4
  Serial   01
  SKI      A0110A233E96F107ECE2AF29EF82A57FD030A4B4

emSign ECC Root CA - G3 (root)
  SHA-256  86A1ECBA089C4A8D3BBE2734C612BA341D813E043CF9E8A862CD5C57A36BBE6B
  Serial   3CF607A968700EDA8B84
  SKI      7C5D028413D4CC8A9B81CE171C2E291E9C486342

 

Fonti


 

Consigli e migliori pratiche

  • Lascia il pacchetto dell'agente a Factorial IT. Non modificarlo né ripristinarlo. Gli script lo saltano già una volta che è pulito.
  • Inizia con un gruppo pilota. Esegui ogni script su un numero ristretto di dispositivi, leggi l'output e poi distribuisci a tutti i dispositivi.
  • Tieni il sistema operativo aggiornato. I browser e le app che verificano tramite il sistema operativo sono sicuri solo una volta installato l'aggiornamento di Apple o Microsoft.
  • Non dimenticare i runtime e le immagini. Node.js, Electron, binari Go, certifi e immagini container rimangono esposti anche su un dispositivo corretto. Aggiornali e ricostruisci.
  • Controlla di nuovo dopo gli aggiornamenti di macOS. Un aggiornamento può ripristinare /etc/ssl/cert.pem, quindi esegui il rapporto di macOS dopo ciascuno di essi.
  • Riavvia i servizi sui server Linux. La maggior parte degli strumenti legge il pacchetto CA solo all'avvio.
  • Tratta un intermedio trovato su un dispositivo come un incidente. Una riga compromised_intermediate_present significa che qualcuno o qualcosa ha messo quel certificato lì.

 

Risoluzione dei problemi e FAQ

Risoluzione dei problemi

  • Lo script di Windows di Fleet fallisce con ScriptContainedMaliciousContent. Microsoft Defender lo ha bloccato, perché lo script contiene i certificati compromessi. Esegui invece lo script Factorial IT per Windows, oppure collega il dispositivo online e rimuovi la Group Policy nominata nella riga ctl_autoupdate_policy.
  • Lo script Factorial IT per Windows termina con 2. Alcuni certificati non sono stati scaricati. Leggi le righe WARN e verifica che il dispositivo possa raggiungere crt.sh.
  • Lo script di macOS termina con 0 ma homebrew_ca_certificates è ancora presente. Homebrew è stato saltato, solitamente perché la licenza di Xcode non è stata accettata. Esegui sudo xcodebuild -license accept su Mac e ripeti lo script.
  • Una riga fleetd_osquery_ca_bundle rimane dopo un'intera giornata online. Invia un'email a support@factorial.it con il nome del dispositivo.
  • Una policy di Fleet continua a fallire su un dispositivo. Lo script ha rifiutato di cambiare il pacchetto dell'agente. La sua output spiega perché.
  • Il rapporto di Windows mostra NOT_SYNCED o BLOCK_WILL_NOT_ARRIVE. Il blocco di Microsoft non è arrivato al dispositivo: è offline, utilizza solo WSUS, o una Group Policy impedisce l'aggiornamento automatico. Esegui lo script di remediation, oppure risolvi la causa.
  • Il rapporto di macOS mostra STALE_NO_APPLE_BLOCK. Il Mac non ha ricevuto il blocco di Apple. È probabilmente offline o non può raggiungere i server di aggiornamento di Apple.
  • Un host di test restituisce 200. Quel client continua a fidarsi della catena contraffatta. Controlla quale trust store utilizza e risolvilo con i passaggi sopra.

 

FAQ

  1. Devo fare qualcosa per l'agente Factorial IT?
    No. Factorial IT rimuove entrambe le radici dal pacchetto dell'agente su ogni dispositivo registrato, e i nuovi pacchetti di registrazione arrivano senza di esse.
     
  2. I miei dispositivi sono aggiornati. Sono al sicuro?
    I browser e le app che verificano tramite il sistema operativo lo sono. Gli strumenti da linea di comando su macOS, il pacchetto di sistema Linux, Node.js, Electron, certifi, binari Go su Linux e immagini container non lo sono, fino a quando non li correggi.
     
  3. I miei utenti potrebbero essere stati attaccati tramite i loro browser?
    No, non tramite browser che applicano la Trasparenza dei Certificati: nessun certificato TLS di questi intermediari appare nei log CT. Un attaccante dovrebbe anche essere sulla rete.
     
  4. I pacchetti installati con apt o dnf sono a rischio?
    No. Sono firmati GPG.
     
  5. È sicuro eseguire gli script di remediation due volte?
    Sì. Mantengono un backup *.pre-emudhra di ogni file che cambiano, quindi puoi anche ripristinare.
     
  6. Perché le righe root_in_keychain e root_in_cert_store rimangono dopo la correzione?
    Sono solo contestuali. Apple e Microsoft mantengono entrambe le radici su ogni dispositivo e bloccano invece gli intermediari.
     
  7. Il agente personalizzato riavvierà o cancellerà i dispositivi?
    No. Non ripristina mai un backup, non blocca, cancella o riavvia un dispositivo, e aspetta l'approvazione di un amministratore prima di ogni fase.
     
  8. Cosa succede al kit di remediation quando il lavoro è finito?
    Rimane in posizione. L'agente chiude il suo ticket e ti informa che può essere messo in pausa.

Questo articolo è stato utile?

Give feedback about this article

Non trovi quello che stai cercando?

Il nostro team di assistenza clienti è qui per te.

Contattaci

Knowledge Base Software powered by Helpjuice