M agazyn  


"B│▒d F0" czyli dziura w ca│ym
Ryszard Sobkowski


C o kilka miesiΩcy prasΩ komputerow▒, codzienn▒, obiega elektryzuj▒ca wie╢µ o znalezieniu kolejnego b│Ωdu w procesorze.
O ile b│▒d jednostki zmiennoprzecinkowej, znany z pierwszych wersji Pentium, m≤g│by - przy niekorzystnym zbiegu okoliczno╢ci - spowodowaµ jakie╢ szkody, o tyle wykryte ostatnio "b│Ωdy" Pentium i innych procesor≤w, polegaj▒ce na zatrzymaniu pracy po otrzymaniu absurdalnej sekwencji instrukcji, mo┐na traktowaµ z przymru┐eniem oka - nikt przy zdrowych zmys│ach nie bΩdzie do programu wstawia│ kodu, nie s│u┐▒cego niczemu poza k│opotami. No tak, ale je╢li kto╢ to zrobi z│o╢liwie? Ot≤┐, je╢li kto╢ lub co╢ (np. wirus) bΩdzie chcieµ zatrzymaµ procesor, bo takie w│a╢nie s▒ skutki wykrytych ostatnio "b│Ωd≤w", ma do dyspozycji znacznie prostsze sposoby - lista legalnych instrukcji ka┐dego procesora zawiera taki rozkaz jak HALT, bezwarunkowo zatrzymuj▒cy procesor. Mo┐e zreszt▒, zamiast bawiµ siΩ z procesorem, u┐yµ kt≤rej╢ z funkcji BIOS-u, np. tzw. twardego restartu.
Mo┐liwo╢ci czynienia szk≤d s▒ nieograniczone. Nikt nie bije z tego powodu na alarm, nie zamieszcza megabajt≤w informacji w Internecie, nie ┐▒da od producent≤w wyeliminowania takich mo┐liwo╢ci... A swoj▒ drog▒, w jaki spos≤b tak powa┐ny z pozoru b│▒d pozostawa│ nieujawniony przez przesz│o dwa lata? Na to ostatnie pytanie │atwo odpowiedzieµ - bo a┐ tyle trzeba by│o czasu na wymy╢lenie krytycznej sekwencji instrukcji. Od pocz▒tku istnienia mikroprocesor≤w wszystkich dostatecznie bliskich tej tematyce intrygowa│o, jak procesor bΩdzie reagowa│ na kody, kt≤re nie zosta│y objΩte jego "oficjaln▒" list▒ instrukcji.
Tego rodzaju dociekania by│y stosunkowo proste w dobie procesor≤w o╢miobitowych i owocowa│y w≤wczas do╢µ spektakularnymi odkryciami, kt≤re jednak nie by│y okre╢lane jako b│Ωdy, lecz otrzymywa│y nazwΩ "nieujawnionych instrukcji", a niekt≤rzy ambitni programi╢ci potrafili tych "instrukcji" u┐ywaµ, z ca│kiem niez│ymi rezultatami, w komercyjnych produktach. Ze wzglΩdu na znacznie wiΩksz▒ z│o┐ono╢µ wsp≤│czesnych procesor≤w, dociekania takie sta│y siΩ trudniejsze, a ich rezultaty przewa┐nie mniej u┐yteczne. A w dodatku znaleziony "b│▒d" nie do╢µ, ┐e wydumany, w dodatku nie ma szans na ujawnienie siΩ w praktyce. Sk▒d zatem tyle wrzawy wok≤│ "b│Ωdu F0", jak nazwano ostatnie odkrycie "poszukiwaczy dziury w ca│ym"? Przede wszystkim st▒d, ┐e przywykli╢my do deterministycznego traktowania technicznej strony rzeczywisto╢ci. A nasza komputerowa rzeczywisto╢µ osi▒gnΩ│a tymczasem taki poziom z│o┐ono╢ci, ┐e mo┐emy zacz▒µ siΩ ┐egnaµ z deterministycznym jej traktowaniem. Przecie┐ nie ma technicznej mo┐liwo╢ci, by w czasie przeznaczonym na opracowanie nowego procesora, przetestowaµ jego zachowanie dla wszystkich mo┐liwych sekwencji instrukcji. Testowane s▒ co najwy┐ej te instrukcje, kt≤re czemu╢ s│u┐▒, a i to tylko w typowym zakresie argument≤w. A chocia┐ woleliby╢my, by procesor, stanowi▒cy serce i m≤zg naszego komputera, zachowywa│ siΩ w spos≤b przewidywalny (deterministyczny!), to jednak musimy godziµ siΩ z faktem, ┐e nie jest on w stanie poradziµ sobie z absurdem.
Tak samo, jak przyjΩli╢my do wiadomo╢ci i stosowania dalekie od determinizmu zachowania Windows '95, pomimo tego, ┐e zachowuj▒ siΩ one niepowtarzalnie podczas normalnych operacji, zgodnych z podstawowymi zasadami u┐ytkowania komputer≤w, musimy przyj▒µ do wiadomo╢ci fakt, ┐e procesor ma prawo "nie wytrzymaµ" bzdury.
Najlepiej na "b│Ωdzie F0" wysz│o parΩ firm, kt≤re zas│ynΩ│y z b│yskawicznego opracowania ╢rodk≤w przeciwdzia│ania jego skutkom. Zupe│nie tak, jakby ka┐dy z nas nie by│ w takie ╢rodki wyposa┐ony przez naturΩ - przecie┐ wystarczy nie generowaµ absurdalnego, niczemu nie s│u┐▒cego kodu. Chocia┐, patrz▒c na objΩto╢ci program≤w wielu wsp≤│czesnych aplikacji, nie spos≤b siΩ oprzeµ wra┐eniu, ┐e z│o┐one s▒ one g│≤wnie z niczemu nie s│u┐▒cego kodu... I tu nale┐a│oby biµ na alarm!

Jestem bardzo daleki od sympatii dla Intela, ale w przypadku ostatnio odkrytego b│Ωdu czujΩ siΩ obowi▒zany do obrony tej firmy.

Ryszard Sobkowski - redaktor ENTER-a, konserwatysta, pesymista i entuzjasta.

(c) Copyright LUPUS