Vai Gibsons ir melis?

Drošības eksperts [url=http://www.grc.com/default.htm]Stīvs Gibsons[/url] ([i]Steve Gibson[/i]) ir sīki izpētījis WMF ievainojamību un nācis pie slēdziena, ka tā nav bijusi nejauša kļūda vai neveiksmīga konstrukcija, bet gan tīšām un ar ļaunu nodomu Windows sistēmā iebūvēts bakdors jeb sētas durvis, kas var tikt aktivizētas pat tad, ja datora drošība ir visaugstākajā līmenī, ActiveX ir atslēgts, JavaScript ir atslēgts un ugunsmūris darbojas.

Gibsona uzmanību piesaistīja tas, ka Microsoft atteicās labot WMF kļūdas Win9x un WinME sistēmām. Sākumā viņi pasludināja ievainojamību par kritisku visām Windows versijām. Pēc tam, pēkšņi paziņoja, ka vecajām versijām šī ievainojamība nav kritiska. Gibsons tikai gribēja uzrakstīt ielāpus vecajām Windows versijām, tāpēc viņš sāka pētīt, kā šī ievainojamība darbojas, ar mērķi uzrakstīt testu, ar kuru pārbaudīt kļūdas klātbūtni.

Windows metafails ir attēla fails, kura vienīgais pienākums ir glabāt informāciju par to, kādam ir jāizskatās attēlam. Fails sastāv no hedera un metafaila ierakstiem, katrs metaieraksts sākas ar DWORD ( 4 baitu ) ieraksta izmēru, tālāk seko 2 baitu funkcijas numurs un aiz tā ir ieraksta dati.[img]http://datuve/images/upload/msmeta01.gif[/img]
Ir zināms, ka Windows metafaila apstrādes vājā vieta ir Escape/[url=http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/prntspol_0883.asp]SetAbortProc[/url] funkcija, bet Gibsonam nekādi neizdevās izsaukt kļūdu. Tas bija mazliet dīvaini – ir eksploitu paraugi, bet nav nekāda apraksta, kas tieši izsauc kļūdu un kāpēc.

Ja jūs, piemēram, kaut ko drukātu uz printera, tad aplikācijai būtu jārada printera [url=http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/devcons_562c.asp]Device Context[/url] (ierīces konteksts), kas aprakstītu tādas lietas kā papīra izmērs, tintes krāsa, punkta izmērs u.c. – lietas, kas būtu vajadzīgas zināt, lai varētu drukāt. Bet ja lietotājs pēkšņi pārtrauktu drukāšanu, ir jābūt kādam veidam, kā Windows paziņotu aplikācijai, ka drukāšana ir apturēta. Un tas ir tas, ko dara Escape/SetAbortProc funkcija, tā atdod atpakaļ ( [i]callback[/i] ) kontroli aplikācijai uz iepriekš zināmu koda daļu. Tātad SetAbortProc loma ir printera kontekstam pavēstīt [i]callback[/i] funkcijas adresi.
Lieta ir tāda, ka metafaila ierīces kontekstā tam nav pilnīgi nekādas jēgas – tas nav printeris.
[b]1. SetAbortProc funkcija metafaila apstrādē – ir pilnīgi nevietā – to nevar nepamanīt un vēl jo vairāk programmētājiem nevar būt nekāda pamatojuma to tur paturēt.[/b]

Un katru reizi, kad Windows izpilda šo Escape/SetAbortProc funkciju, notiek ļoti dīvaina un neparasta lieta – koda izpilde pārlec uz nākošo baitu metaierakstā.
[b]2.Windows vairs neanalizē metafailu ierakstu pēc ieraksta, bet sāk to izpildīt kā kodu.[/b]

Vēl dīvaināks ir cēlonis, kas provocē šādu Windows uzvedību. Kā jau augstāk minēts, metaieraksts sākas ar 4+2+n baitiem, kur pirmie 4 apzīmē ieraksta izmēru, tātad minimālais izmērs ir 6. Gibsonam iepriekš nekādi neizdevās izsaukt kļūdu tāpēc, ka viņš metaieraksta izmēru … ielika pareizu. Par ieraksta izmēru ievietojot noteiktu skaitli, tiek izsaukta gaidītā kļūda.
[b]3. Maģiskais skaitlis ir 1. Tas nav 0 ne arī 2, ne 3, ne 4, ne 5, bet tikai un vienīgi 1![/b]

Gibsons stāsta: “Kad es apzināti meloju par ieraksta izmēru un ielieku par izmēru tikai un vienīgi 1, un kad es ievietoju noteiktu baitu virkni, kam metafailā nav pilnīgi nekādas jēgas, tad Windows uzsāk jaunu koda pavedienu un ielec tieši manā kodā un sāk izpildīt manu kodu! Šī nav kļūda! Šis nav caurumains kods! To kāds ir apzināti iebūvējis Windows. Mēs nekad neuzzināsim kas. Kāda persona vai personu grupa Microsoft iekšienē slepus ir radījuši sev iespēju izpildīt kodu uz jebkura Windows datora, upurim apmeklējot viņu websaitu.”

Viņš stāsta, ka viņš vēl pētīs dažādas Windows versijas, lai noskaidrotu, kad tieši šis kods ir ievietots. Iespējams, ka šis kods tur atradās jau sen, līdz kāds par to uzzināja un Microsoft nācās to aizvākt.

Citi eksperti pagaidām norobežojas no Gibsona viedokļa, [url=http://blogs.technet.com/msrc/archive/2006/01/13/417431.aspx]Microsoft cenšas visu loģiski paskaidrot[/url], viņi saka, ka kods, kas atbild par WMF, esot ļoti vecs – no Windows 3.0 laikiem un ka arī pareizs ieraksta izmērs varot izsaukt kļūdu.

[url=http://news.com.com/2061-10789_3-6027130.html]’Windows backdoor’ theory causes kerfuffle[/url] (Windows backdoru teorija izsauc jezgu)
[url=http://www.alwayson-network.com/comments.php?id=13532_0_5_0_C]Microsoft Hacks Windows[/url](Microsoft uzlauž Windows)

Avoti: Stīva Gibsona Interneta radio intervija: [url]http://media.grc.com/sn/SN-022.mp3[/url]
Un tās pieraksts: [url]http://www.grc.com/sn/SN-022.htm[/url]

Share on facebook
Share on twitter
Share on linkedin
Share on whatsapp

Atbildēt

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti kā *

Datuve.lv – IT un Tehnoloģiju ziņas || Copyright © 2004-2020 || Kontaktinformācija: info@datuve.lv  || Contact Us