Mac OS X sotto il cofano: il system integrity protection

Alzi la mano chi pensa ad un avanzato meccanismo di protezione per Mac OS X se io ora vi dicessi “SIP”.

Photo by Luigi Rosa

Alzi la mano chi pensa ad un avanzato meccanismo di protezione per Mac OS X se io ora vi dicessi “SIP”.

Io, fino ad un paio di giorni fa, ero nel gruppo folto di quelli che ha tenuto la mano giù.

Ora, se avete un Mac OS X sotto la tastiera, date questo comando:

  $ man csrutil
  usage: csrutil <command>
  Modify the System Integrity Protection configuration. All configuration changes apply to the entire machine.

  Available commands:

    clear
        Clear the existing configuration. Only available in Recovery OS.
    disable
        Disable the protection on the machine. Only available in Recovery OS.
    enable
        Enable the protection on the machine. Only available in Recovery OS.
    status
        Display the current configuration.

    netboot
        add <address>
            Insert a new IPv4 address in the list of allowed NetBoot sources.
        list
            Print the list of allowed NetBoot sources.
        remove <address>
            Remove an IPv4 address from the list of allowed NetBoot sources.

SIP, è un meccanismo introdotto in Mac OS X El Capitain, per proteggere alcune risorse critiche del sistema, anche da root. Si, a me continua a venire in mente AngeL e molte scelte che feci sbagliate in passato, prima fra tutte non accettare l’invito del prof. Bruschi nel 2001.

Nei sistemi Unix, root è dio. root può fare tutto. Questo lo sanno tutti. Nei sistemi dove si vuole invece introdurre, un ulteriore meccanismo di enforcement della sicurezza, si limita il potere di dio a salvaguardia del sistema stesso.

Ecco in parole povere cos’è SIP. Prima di El Capitain, bisognava usare i securelevel per operare controlli simili, tuttavia era una feature meno ricca di quella apparsa nell’autunno dello scorso anno.

La protezione offerta da SIP, riguarda la protezione dalla scrittura di alcune risorse del sistema, la negazione della possibilità di agganciarsi a processi particolari, tra cui quelli firmati con una chiave privata Apple, per tracing con DTrace. In ultima istanza, e questo è quello con cui mi sono imbattuto qualche giorno fa, all’inizio dei miei esperimenti con Mac OS X, il SIP nega la possibilità di caricare estensioni del kernel che non siano state firmate digitalmente con un certificato particolare rilasciato da Apple e per il quale Apple ti fa il terzo grado.

Insomma, te la vogliono far sudare questa macchina. Anche a scopo didattico. Per disabilitare il SIP, serve infatti, riavviare la macchina in modalità recovery e dalla shell che si apre, lanciare il comando:

  $ csrutil disable

Al riavvio successivo, l’anarchia è tornata sovrana e nessuno dirà più di no al nostro root. La domanda è: voi lo fareste?

C’è un bellissimo post di Rich Trouton che da una overview completa di quello che è protetto da SIP e di come interagire in userland.

Io no, sinceramente. Mi tengo il mio SIP e troverò un altro modo per giocare in kernel land. Come ogni sistema informativo, anche il SIP ha delle regole, alcune di esse possono essere eluse.

Nota a margine su Rootfool, il tool che permette di controllare il SIP.

Si basa su una Kernel extension che fa l’hook di una chiamata, csrctl(), che, chiamata da csrutil, permette di controllare il SIP. Ma senza un certificato valido, non puoi installare questa kext.

Enjoy it!

comments powered by Disqus