← Back to team overview

sslug-teknik team mailing list archive

Rolling Upgrades et overset problem?

 

Holder du skarpt øje med sikkerheds opdatering og sørger altid for at
køre din distributions pakke program for at installere dem?

Tror du rent faktisk at dette sikrer dig?


Hvis du kan svare ja til begge spørgsmål. Så har du et problem, som jeg
først selv opdagede for nygelig da jeg hacked et program der viste mig
hvor frygteligt gal min antagelse var.

Tag en OpenSSL sikkerheds opdatering. Installering af selve OpenSSL
opdatering har ingen effekt på dit system, da alle de programmer der
bruger OpenSSL, og ikke er genstartet stadigvæk bruger den gamle version.

Det kræver at du genstarter alle programmer der bruger OpenSSL før de
begynder at bruge den sikkerheds opdaterede version.



Note 1: Nogle distributioner forsøger at genstarte ting her og der, men
de håndterer ikke OpenSSL problematikken, de gør det vist bare nemre for
os at narre os selv til at tro at det var godt vi kørte den opdatering.



Den er helt gal! Så hvad nu?

Du kan reboote.
Køre en init 1 (Enkelt bruger tilstand) også når den er færdig køre en
init #, hvor # er din gamle runlevel.

Gætte dig til hvilken programmer du skal genstarte.

Eller min foretrukne løsning:

Lær at bruge lsof.

lsof kørt som root giver dig en liste over alt der køre og hvilke filer
og andre ting de har fat i. Det vi er interesseret i her er linjer der
indeholder DEL:

 sshd      30030   root  DEL       REG        0,8              114120
/dev/zero

Her ser vi at sshd har fat i /dev/zero som er markeret som slettet. Det
er der ikke noget galt i, det er bare sådan /dev/zero fungerer og det er
ikke fordi vi har opdateret vores system. Så denne DEL er harmløs og kan
ignoreres.

Vi skal finde DEL linjer der referer til /lib/* eller /usr/lib
/usr/libexec og andre steder der har program code vores software har
læst ind.

Der er en anden sletning som ikke kan ses ved at checke for DEL typen.
Den markeres i stedet sådan:

irc       15049      dragon  mem       REG        8,2
134222691 /usr/lib/i686/cmov/libssl.so.0.9.8 (path inode=134226077)

Det at denne linje har (path inode=#) i sit navn fortæller at den ikke
længrer referer til den fil vi kan se som
/usr/lib/i686/cmov/libssl.so.0.9.8 og at programmet irc trænger til en
genstart.

(path inode=#) bliver tilføjet i flere tilfælde hvor det ikke har noget
at gøre med code opdateringer.


Debian og Ubuntu (og mugeligvis andre der bruger debian som base for
deres distribution), har adgang til en pakke der hedder debain-goodies,
der indeholder "checkrestart" dette program analyserer lsof data og
giver dig en liste over programmer den mener der kan trænge til en
genstart, den foreslår end da init.d scripts.

*ADVARSEL* Gamle versioner har en fjentelig bruger sikkerheds problem,
der gør at lokale bruger kan få den til at køre ting som root.
Debian-goodies i testing .36 tror jeg den er i dag har rettet problemet.


Jeg har hacked checkrestart til at køre på Gentoo og stadigvæk virke med
Debian og Ubuntu, og jeg har fikset den sikkerheds fejl.

Du kan finde min udgave her:

http://www.arcdraco.net/%7Edragon/checkrestart

Og en RSS feed der primært skulle bliver opdateret når/hvis jeg udgiver
opdateringer til min checkrestart.

http://www.arcdraco.net/crss/node/2

Det skulle ikke være svært for en python programmør at lave programmet
om så det køre på andre distributioner og jeg vil gerne hjælpe med min
viden, hvis der er nogen der påtager sig opgaven.



Follow ups