erlug
[Top] [All Lists]

Re: [Erlug] wu-ftp heap corruption, in orecchio

To: erlug@xxxxxxxxxxxxxx
Subject: Re: [Erlug] wu-ftp heap corruption, in orecchio
From: Davide Bolcioni <se6vzsv38001@xxxxxxxxxxxxxx>
Date: Wed, 05 Dec 2001 00:22:30 +0100
Fabio Coatti cova@xxxxxxxxxxxxxxxx [mlerlug/erlug list] wrote:

Il 20:02, lunedì 3 dicembre 2001, hai scritto:


Una polemica! Una polemica! :->


Ci ho riflettuto, e sono acora più convinto che avere più sistemi diversi sia assurdo. Vuol dire che su almeno il 60% dei servers hai dei prodotti di seconda "scelta" , che devi preoccuparti del triplo di possibili compromises, che devi lavorare il triplo per sistemare i servers, che devi avere il triplo di configurazioni _completamente_ diverse, che devi controllare il triplo di advisories. L'unica cosa che salvi avendo 1/3 di servers vulnerabili è _forse_ la continuità del servizio. Ma considerando che normalmente un attacco non ti blocca il servizio ma molto più spesso serve a sfruttare la macchina per fare altre cose, tipo da ponte per fare altri danni, oppure serve a carpire informazioni riservate che possano essere depositate sul server stesso, fossero anche solo le password ftp, la cosa è decisamente un non senso.



In realtà, la risposta giusta è "dipende". Mi coglie il ghiribizzo
tuttavia di investigare la questione un pò - lanciando un piccolo amo
ad eventuali ingegneri e matematici in lista.

E' del tutto ragionevole pensare che di 3 server, uno sia migliore degli

altri due dal punto di vista della sicurezza, non essendo questa l'unico

parametro a governare la diffusione. Detti A, B e C i server, abbiamo
che la probabilità di avere un baco è:

  pA < pB < pC

perchè naturalmente uno dei due tra B e C sarà a sua volta meno sicuro

dell'altro. Diciamo invece che l'ipotetico unico server abbia una
probabilità p di avere un baco di sicurezza. Diciamo che cA è una misura del lavoro necessario per stare dietro ad A, cB e cC per B e C, c per il
server unico, e che la differenza tra stare dietro a un host e
stare dietro a N tenda a decrescere molto rapidamente al crescere di
N in maniera sostanzialmente indipendente da quale server è in ballo
(si tratta di una semplificazione un pò grossa, ma senza fare esempi
concreti come faccio a sapere che il più sicuro è quello per cui è
più facile replicare la configurazione su molti server ?); ne segue
che stare dietro al server unico mi costa c mentre stare dietro ai
tre mi costa cA+cB+cC > 3c (ma non di tanto).

Supponiamo altresì che il danno conseguente a una violazione di
sicurezza sia esprimibile come

  w0 + K * w1 - (N - K) * u2 = w0 + K * (w1 + u2) - N * u2

ovvero una quota fissa w0 dovuta al fatto che una violazione c'è
stata, quota che non dipende da quanti host sono stati violati,
da una quota funzione del numero K < N di host compromessi e da
una quota u2 funzione del numero di host ancora disponibili (in
senso lato: se N host offrono "il servizio", non sto a disquisire
se lo ridondino o ciascuno offra un pezzo che a uno interessa e
a uno no). Per K = 0, normale esercizio, ho un danno negativo
ovvero un vantaggio.

Per N host il danno medio è circa

 (pA + pB + pC) * w0 + (pA + pB + pC) * (w1 + u2) * N / 3 - u2 * N

ovvero se supponiamo che pA sia circa pB - d e pC sia circa pB + d,

  3 * pB * w0 + pB * (w1 + u2) * N - u2 * N

nel caso multiplo e

  p * w0 + p * w1 * N

nel caso unico.

Il danno nel caso unico è minore se

  p * w0 + p * w1 * N < 3 * pB * w0 + (pB * w1 + pB * u2 - u2) * N

ovvero per N grande se


  p * w1 < pB * w1 + (pB - 1) * u2

Studiamo il caso di p molto più piccolo di pB, ovvero pB - p circa uguale

a pB:

  0 < pB * w1 + (pB - 1) * u2

ovvero il danno nel caso unico è minore se

  u2 < pB (w1 + u2)

ora supponiamo w1 < u2, ovvero che il beneficio di avere il servizio sia superiore allo sforzo per ripristinarlo in caso di violazione (in
caso contrario cosa lo ripristino a fare ?) e quindi

  1 < pB (w1/u2 + 1) = pB (x + 1)

essendo x < 1, pB (x + 1) < 2 * pB e quindi perchè il caso unico sia
migliore devo avere pB > 0.5; nemmeno i prodotti Microsoft hanno una
probabilità del 50% di avere violazioni di sicurezza.

E' quindi interessante il caso in cui p e pB sono paragonabili, anche
se p è meglio, ovvero p = pB - q. In tal caso il caso unico è migliore
per N grande se

  (pB - q) * w1 < pB * w1 + (pB - 1) * u2

ovvero

  0 < q * w1 + (pB - 1) * u2
  u2 < q * w1 + pB * u2
  1 < q * x + pB

ma ancora una volta x < 1, q < 1 e pB < 0.5 ... per valori sensati di w1
e u2 x è piccolo, q non è grande altrimenti ricadremmo nel caso
precedente ... non andiamo sopra 1.

Ne traggo la conclusione che per N grande il danno da violazione di
sicurezza della configurazione a tre server sia inferiore a quello
della configurazione a server unico: intuitivamente, ciò accade perchè
quando si ne verifica una mi resta il 60% del servizio, sotto l'ipotesi
u2 > w1 ovvero che quando mi compromettono una macchina abbia senso
sforzarsi di ripristinarla.

Ingegneri e matematici potrebbero farmi molto male, ma sono gli
statistici quelli che possono affondarmi davvero :-) ...
Davide Bolcioni
--
Linux - the choice of a GNU generation.




<Prev in Thread] Current Thread [Next in Thread>