Qualche protezione di OpenBSD attenua il danno da Heartbleed?

14

OpenBSD fornisce un elenco di protezioni sostanziali contro gli exploit inerenti al sistema operativo. La maggior parte di queste funzionalità non si trova in altri sistemi operativi o, almeno, non è attivata per impostazione predefinita. L'elenco dal sito Web OpenBSD linkato sopra include:

  • strlcpy() and strlcat()
  • Memory protection purify
    • W^X
    • .rodata segment
    • Guard pages
    • Randomized malloc()
    • Randomized mmap()
    • atexit() and stdio protection
  • Privilege separation
  • Privilege revocation
  • Chroot jailing
  • New uids
  • ProPolice
  • ... and others

Qualcuna delle protezioni di sicurezza in OpenBSD attenua l'esposizione dei dati dall'attacco Heartbleed?

In altre parole, un server https Apache / nginx che utilizza OpenSSL è stato meno vulnerabile all'attacco Heartbleed perché era in esecuzione su OpenBSD?

    
posta Brian M. Hunt 29.04.2014 - 15:28
fonte

2 risposte

20

No.

OpenBSD ha misure (in particolare, le pagine di guardia malloc () e la cancellazione della memoria deallocata) che dovrebbe aver trasformato Heartbleed in un arresto anomalo o una perdita di un intero gruppo di byte "0x0d". Tuttavia, come notato in un post del blog qui , OpenSSL utilizza il proprio sistema di gestione della memoria personalizzato che agisce per sconfiggere quelle misure.

    
risposta data 29.04.2014 - 21:35
fonte
5

Qui sembrano esserci alcuni malintesi su come funziona la gestione della memoria in OpenSSL.

OPENSSL_malloc e OPENSSL_free di default chiamano semplicemente il sistema malloc e sono gratuiti (c'è qualche riferimento indiretto, quindi un'applicazione può ridefinire queste funzioni se lo desidera, ma OpenSSL non lo fa da sé). Tuttavia, per alcune strutture di dati, in particolare i buffer di input, mantiene in attesa alcuni elementi precedentemente allocati ma non utilizzati su una lista freelance, senza in realtà liberarli. Dal momento che non disinfetta il contenuto del buffer dopo l'uso, se un buffer viene preso dall'elencate e riutilizzato, i contenuti precedenti potrebbero essere ancora presenti (anche se il sistema lo avrebbe cancellato).

Tuttavia, poiché nella maggior parte degli altri casi, OpenSSL è in realtà solo chiamando il sistema malloc e free, mitigazioni come le pagine di guardia (che avrebbero fatto una lettura oltre la fine del crash del buffer di input di 16K) e cancellando la memoria liberata (che avrebbe fermato parte della perdita di dati bignum che le persone hanno visto) avrebbe aiutato, anche con l'attuale gestione della memoria di OpenSSL. Non avrebbero aiutato ad esporre il contenuto del buffer di input precedente o con dati bignum privati che si trovavano in posizioni di heap valide (non congrui) (a meno che non fossero utilizzate le pagine di protezione per impedire che l'evento di sovrapposizione si verificasse).

    
risposta data 30.04.2014 - 00:50
fonte

Leggi altre domande sui tag