mboost-dp1

unknown

Sikkerhedsfejl i DirectX

- Via Eeye - , redigeret af Zero

Eeye har opdaget et hul i Microsofts DirectX, fra version 5,2 til version 9.0a. Det betyder i realiteten, at så godt som alle versioner af Windows, med DirectX installeret, er ramt af fejlen.

Hullet består af en mulighed for at lave et buffer overrun i Quartz.dll, via en ‘korrekt’ udformet midi-fil. Sker dette, vil det være muligt at afvikle kode på den pågældene computer. Dette kan ske bare ved at gå ind på en hjemmeside, der benytter et stykke midi-musik.

Microsoft anbefaler man opdaterer til DirectX 9.0b. Der kan læses mere om fejlen hos MS her.





Gå til bund
Gravatar #1 - lerbech
25. jul. 2003 07:17
det er da egentlig utroligt at det hul først er opdaget nu, hvis det har været der siden dx 5,2 som jo er meget gammel, og hvorfor er det lige at MS ikke automatisk laver chceck for buffer overrun, det er jo ofte der at der er et hul i sikkerheden.


Juble Nr.1
Gravatar #2 - Disky
25. jul. 2003 07:33
Hvis de lavede deres compiler ordentligt kunne de undgå problemmet ved at pakke alt med buffere ind så det slet ikke kunne ske.

Problemmet er det performer lidt dårligere, men tilgengæld er det sikkerhedsproblem helt væk.
Gravatar #3 - pie
25. jul. 2003 07:38
#2
Lyder som en java-løsning? :)
Gravatar #4 - Bindestreg
25. jul. 2003 07:52
Lyder bare som en måde at få folk til at installere DirectX 9.0b :P
Gravatar #5 - seahawk
25. jul. 2003 07:53
#1:

Fordi det gudskeliv er afsindigt få mennesker der bruger midi? :)
Gravatar #6 - Disky
25. jul. 2003 07:57
pie:
Korrekt i Java findes det problem slet ikke.

Men jeg synes jeg kan mindes nogen fortalte mig at man i Borland's C++ compiler kunne vælge at slå sådanne check til også.

Men C++ udviklere synes jo tit om sig selv at de ikke har brug for den slags sikkerhed, da de jo er så dygtige at de aldrig laver fejl.
Gravatar #7 - sh0dan
25. jul. 2003 08:09
#4: Der kan downloades patches til alle DirectX versioner fra MS's hjemmeside. Hvis det er for bøvlet ligger den allerede på Windows Update.

#6: Boundschecking ville gøre DirectX usandsynlig langsomt - og det er kun noget man bruger i debugfasen. Jeg tror de færreste vil synes at en >100% hastighedsnedsættelse vil være lidt meget at ofre for en fejl, der ikke er blevet opdaget i mange år.
Gravatar #8 - Disky
25. jul. 2003 08:14
sh0dan.
Hvordan ved du lige det giver et tab på mere end 100% ?
Gravatar #9 - sKIDROw
25. jul. 2003 08:20
@ Disky

De lyder til godt at kunne bruge elektric hence.. ;)
En 'memory allocation debugger'
Måske det allerede er det du snakker om, men jeg er jo så ikke programmør.
Bruce Perens udviklede det mens han arbejdede for pixar, og det er frigivet under GPL.
(Hvilket ikke burde være et problem. For man husker selvfølgelig at fjerne den, inden man distriuere det færdige produkt.)
Gravatar #10 - sh0dan
25. jul. 2003 08:34
@Disky: Fordi hver _eneste_ gang dit program skal skrive til hukommelsen (fra et array eller en pointer) skal programmet tjekke bytepræcist om den buffer der skrives til også er den der er blevet allokeret til det. Der findes programer, der kan gøre det - men det er sløvt!

Java har ikke pointere, men kun arrays - det gør at den nemmere er i stand til at holde styr på størrelsen af et specifikt array - det følger referencen til array'et. Det trick er væsentlig mere omstændigt, når man taler pointere. Der er stadig en del overhead i Java der går til boundschecking, men det gør også at man ikke lige vælger Java når man skal skrive et videoredigeringsprogram. :)
Gravatar #11 - fatpanda
25. jul. 2003 08:37
Der er et problem med DirectX9.0b og ATI-kort med TV-tuner jf. http://www.rage3d.com/board/showthread.php?s=&...

Problemet ser pt. ud til at skyldes DX9b.
Gravatar #12 - Thundersnail
25. jul. 2003 08:38
#7 DirectX er allerede usandsynlig langsomt, men det ville selvfølgeligt ikke være så fedt hvis det blev endnu langsommere.
OpenGL har altid været klart bedre, med hensygn til hastighed.
Gravatar #13 - Disky
25. jul. 2003 08:42
sh0dan:
Det du siger ved jeg udemærket godt.

Men hvorfor er det lige du med stor sikkerhed kan sige at de ville sløve et program mindst 100% og ikke kune f.eks. 10%

Eller er det bare et vildt gæt du laver, og som du vil understrege, ved halvt at råbe af mig.

p.s. I udviklingsfasen er det stadigvæk en rigtigt god ting at gøre.
F.eks. i det mobil telefoni firma jeg har arbejdet brugte vi et værktøj netop til at analysere koden bagefter for sådanne problemmer, og den fangede RIGTIGT mange af dem.
Gravatar #14 - Disky
25. jul. 2003 08:46
skidrow:
Ja allerede i amiga dagene fandtes den slags programmer, f.eks. var der et der hed 'Mungwall' (mener jeg) som netop fangede når man forsøgte at snige sig udenfor allokerede områder.

Det var ikke et perfekt tool, men fangede mange mange fejl.
Gravatar #15 - seahawk
25. jul. 2003 08:56
#12:

Øhh.. Hvad får dig dog til at tro det???

Mit bud vil være at de 2 frameworks er ca. lige hurtige... Bare fordi der var nogen i starten der var bedre til at kode opengl end directx, og opengl derfor var hurtigere i det enkelte spil, betyder det jo ikke at opengl er hurtigere! Det er blot et udtryk for dårlig programmering!

#13:

Det er jo svært at sige præcist hvor meget det vil betyde, det kommer jo meget an på applikationen, men jeg vil nok tro at det er tættere på en halvering af hastigheden end 10% :)
Gravatar #16 - Thundersnail
25. jul. 2003 09:06
Så hvidt jeg ved har directx altid været "bedre" kode ind opengl. Det er bare blevet lavet så godt at det er langsomt.
Gravatar #17 - Disky
25. jul. 2003 09:07
seahawk:
Helt enig, jeg blev bare lidt irriteret over hans voldsomme tal, så jeg venter på hans dokumentation af det :)
Gravatar #18 - sh0dan
25. jul. 2003 09:08
@Disky: 100% var et "optimistiskt" bud. De tools jeg har prøvet (Boundschecker), og dem jeg har hørt om kører meget mere end 100% langsommere - og taget i betragtning hvor meget DirectX i det hele taget bruger hukommelsen, er 100% et meget lavt sat bud.

#16: OpenGL / D3D har begge sine fordele og ulemper, i mange henseender. At tale om at en er "bedre" er bare at starte en religionskrig.
Gravatar #19 - Disky
25. jul. 2003 09:13
sh0dan:
Altså et skud i tågen ?

Det var bare det jeg ville vide, eller ville jeg gerne se den test der viste det blev så meget langsommere.

Men der er jo stor forskel på om man bruger et program der analyserer det hele igennem, eller som er compilet med på runtime.
Gravatar #20 - seahawk
25. jul. 2003 09:36
#16:

Har du nogen som helst form for dokumentation? :)

Og indtil DirectX 8 var det generelt en forfærdelig gang rod...
Gravatar #21 - Thundersnail
25. jul. 2003 09:39
#18 nu talte om hastigheden, ikke om best kode, mindst fejl eller flest muligheder.
Gravatar #22 - sh0dan
25. jul. 2003 09:40
@Disky: Du kan ikke analysere dig frem til potentielle buffer overruns. Det kan kun lade dig gøre runtime. Derfor VIL det være langsommere.

Og så prøv da lige at slappe lidt af - ellers er du velkommen på min ignoreliste.
Gravatar #23 - SmackedFly
25. jul. 2003 09:42
#9

Don't delay, valgrind today :)

http://developer.kde.org/~sewardj/

Så ka koden ligge sig...

#16

Drop nu det der kodekvalitet's stads. Directx er en bedre API at udvikle spil på, det siger alle, selv Linux spiludviklere har indrømmet det. Opengl's kvaliteter ligger i at det er crossplatform og så er det desuden standarden indenfor 3d programmer (altså non-spil).
Gravatar #24 - Thundersnail
25. jul. 2003 09:44
#20 ikke andet ind at hvis man har bække muligheder i et spil. Så er det næsten altid opengl der giver flest fps. I nogle af de gamle spil er der også flere detaljer med, hvis man bruger opengl(cs).

Jeg ved at så godt som alle dem jeg spiller lan med, er af samme mening.
Gravatar #25 - seahawk
25. jul. 2003 09:53
#23:

Det var dog en enormt snæversynet holdning at have!

Hvis jeg gerne vil lave et spil der kører på Windows, Mac og Linux, er DirectX fandme ikke det bedste API for mig!!! :o)

Så istedet for at komme med sådan en omgang flamebait, kunne det være rart hvis du ville komme med dokumentaion for at det var bedre, eller evt. holdninger til ting som API og ligende(som nødvendigvis er subjektivt - dvs. intet er bedst, det er et spørgsmål om smag).

#24:

Det er nu en sandhed med modifikationer(Prøv Unreal turnament - afair - der er directx rendering enginen en del bedre)

Men jeg leder efter konkrete argumenter, ikke hvad dig og dine venner "til lan" synes.
Gravatar #26 - Disky
25. jul. 2003 10:00
sh0dan:
Du bliver hurtigt sur, jeg ville bare vide om det var et skud i tågen, eller du havde seriøs dokumentation på det hastighedstab du mente der var.

Og det svarede du jo også på til sidst.
Gravatar #27 - SmackedFly
25. jul. 2003 10:03
#25

Rolig nu...Som du ganske fint ved er jeg selv linux bruger, og jeg går ind for at programmere med OpenGL, men det laver ikke om på at DirectX er længere fremme. Lad mig f.ex. gøre opmærksom på at OpenGL ikke har noget der er tilsvarende Vertex shaders(det har det, men kun for enkelte grafikkort), og der mangler en del nye ting. Det bliver forhåbentligt ordnet i OpenGL 2.0.
Jeg er fuldstændig enig i at der er mere fremtid i OpenGL, da det jo er crossplatform, og det bliver DirectX jo nok aldrig...

Et interview med John Hall, manden bag bogen "Programming Linux Games":
http://articles.linmagau.org/modules.php?op=modloa...

Og undskyld hvis jeg fik formuleret mig dårligt, min pointe var at OpenGL er den store standard indenfor 3d programmer, dermed ikke sagt at opengl ikke også er godt indenfor spil. Men ved 3d programmer er det stortset det eneste der bruges.
Gravatar #28 - Thundersnail
25. jul. 2003 10:39
#25 som om du selv har konkrete argumenter. Desuden skrev jeg også at det for det meste var hurtigere, ikke at det altid var.
Gravatar #29 - seahawk
25. jul. 2003 10:39
#27:

Du har da en ARB OpenGL Extension der kan tage sig af shaders(Og Nvidia har pgså lavet deres egen extension).

Jeg er udemærket klar over fordele og ulemper ved begge frameworks, men jeg synes din udtalelse med "alle synes directx er bedst" er helt hen i skoven! :o)
Gravatar #30 - Thundersnail
25. jul. 2003 10:42
#27 du skulle måske lige rette opengl til directx i den nest sidste linie :)

#29 og det skulle vel havde været opengl ikke directx.


Ret indlæg ???

Desuden sagde jeg ikke at opengl var bedst, men at det efter min mening er hurtigst, hvis man ser på et bredt område af spil.
Gravatar #31 - SmackedFly
25. jul. 2003 10:48
#29

Ja, men ARB extension virker kun på de nyeste grafikkort.
Nvidia's FX serie understøttes, og R300 baserede ATI kort gør også! Men det er altså ikke flertallet af kort!!!

Og ja, stortset alle anser DirectX for rent teknisk at være det bedste, hvis man ekskluderer Crossplatform, som jeg er 100% enig i er en ekstremt god feature. Og det gjorde jeg da også opmærksom på i mit indlæg.

Jeg har desuden svært ved at se hvor min flamebait var henne, hvis du prøver at læse et par interviews med linux spilproducenter, vil du finde ud af at de alle anser DirectX for at være den bedste platform, igen selvfølgelig kun hvis du ekskluderer crossplatform, men det gjorde jeg også opmærksom på i mit indlæg, så jeg ser absolut ingen flamebait.

#30

Nej, der står det der skal stå...:)
Gravatar #32 - seahawk
25. jul. 2003 10:48
#30:

Nøhh.. det ser da rigtigt nok ud at det er opengl han mener?!? :)
Gravatar #33 - Thundersnail
25. jul. 2003 10:51
Min fejl
Gravatar #34 - stone
25. jul. 2003 10:53

problemet er at opengl ikke er blevet udviklet det sidste lange stykke tid. mens directx er gaaet gennem dx8 og dx9 har ogl staaet stille, og det er efhaanden et problem.

saa findes der er raekke kortspecifikke extensions til ogl, som kun i meget lille grad bringer ogl up-to-date, men som tilgengaeld betyder en alvorlig skaevvridning af api'en, og i mange hensende goer ogl uegnet.

opengl er en god og effektiv api. men den har brug for videre udvikling for ikke at blive helt tabt. naar/hvis det sker, er der ingen grund til at ogl, ikke igen skal kunne overgaa dx.

/stone
Gravatar #35 - stone
25. jul. 2003 10:56

#33 - hvorfor er det modstridende? der er en vaesenlig forskel paa hvilke aspekter af en 3d api en applikation, som feks et CAD eller 3d program, har brug for, i foehold til spil.

/stone
Gravatar #36 - sKIDROw
25. jul. 2003 11:07
Nogen hackere* der har mod på at reverse engeneere DirectX?.. ;oD
Ej spøj til side.
Vi skal videreudvikle SDL og OpenGL, men at tude over at DirectX ikke findes til GNU/Linux kan jeg ikke tage seriøst.
DirectX kom ikke fra den ene dag til den anden, men er lige så stille blevet udviklet.
SDL f.eks ser lovende ud, og findes OGSÅ til Windows.

* Jargon files hvad ellers?
Gravatar #37 - SmackedFly
25. jul. 2003 11:08
Nu er jeg ikke sikker, men for mig ser det ud til at OpenGL 2.0 er færdigudviklet, men bare ikke implementeret endnu.

http://www.3dlabs.com/support/developer/ogl2/index...

Og jeg ser så absolut ting jeg godt kan lide...Shading languages...:)
Anyway, er der nogen der kan forklare mig hvad der er fakta, og hvad der er hen i vejret mht. OpenGL 2.0?
Gravatar #38 - seahawk
25. jul. 2003 11:09
#31:

Ja, men hvis vi ser bort fra hardwareunderstyttelse, er opengl jo KLART directx overlegen - det virker jo på flere platforme...

Håber du kan se ironien - sagen er at det ikke giver mening at fjerne et af de vigtigeste aspekter ved et API, og så foretage en sammenligning uden dette aspekt! :)

Det svarer jo til at producerer en bil med en kabine på 2 kubikcentimeter som kan kører 500 km/l, og så påstå at der er verdens bedste familiebil, hvis man ser bort fra at der ikke er plads til mennesker i den!

Håber du kan se ironien - det er på ingen måde flamebait! :o)
Gravatar #39 - SmackedFly
25. jul. 2003 11:10
#36

Tuder såmænd ikke over det, men pointerer det bare...:)

#38

Jeg ved hvad du mener, er 100% enig i at crossplatform er en afgørende faktor...:)
Gravatar #40 - seahawk
25. jul. 2003 11:10
#36:

Wine/WineX? :)
Gravatar #41 - SmackedFly
25. jul. 2003 11:12
#40

Wine/WineX oversætter koden til OpenGL, det kan sådanset også være godt nok, men det er ikke en implementation af directx...:)


(yikes det går hurtigt det her...)
Gravatar #42 - seahawk
25. jul. 2003 11:24
#41:

Ja, men det er et langt mere realistisk alternativ end at implementere directx drivere, da dette skal gøres for hvert kort! :)
Gravatar #43 - sKIDROw
25. jul. 2003 11:37
#39 smackedfly

[Tuder såmænd ikke over det, men pointerer det bare...:)]

Hentydede lige så meget til andre, finder det ualmindelig tåbeligt hvis der er GNU/Linux spiludviklere der nævner DirectX.
De er velkommen til at bruge den tid de spilder på at tude over manglende DirectX, på at hjælpe SDL udviklerne.. ;)
SDL i sammenhæng med OpenGL burde være løsningen i det lange løb.. :)

#40 seahawk

[Wine/WineX? :)]

WineX er ikke fri software, og er ikke en implementering af DirectX men mig bekendt en wrapper.
Gravatar #44 - FISKER_Q
25. jul. 2003 13:38
Den eneste grund OpenGL motoren er så hurtig I Half-Life er fordi det er lavet af den bedste OpenGL koder i nyere tid.

Går du væk fra Quake motoren så er OpenGL overhovedet ikke hurtigere, og sjældent bedre end DirectX.

Crossplatform er det eneste der gør OpenGL attraktivt i min mening. Da der findes nogle sjove små opengl spil.

Hvis vi skal have OpenGL til at slå DirectX skal vi skam nok vente til de efterhånden for lettet røven og få lavet OpenGL 2 færdigt.
Gravatar #45 - BlackAutt
26. jul. 2003 12:03
Nå.. der bliver som sædvanelig kastet med mudder efter de første 5-6 posts...

Men !!!ON TOPIC!!!
Er problemet ikke løst når man nægter IE at afspille midi og lyd?
Gravatar #46 - BranDBorG
29. jul. 2003 06:43
#36 -
Hvor er det dog rart at se betegnelsen "hacker" blive brugt rigtigt for en gangs skyld =)

Og til alt det andet. Jeg er sq ligeglad med om det er DirectX eller OpenGL jeg bruger... Hvis bare jeg kan game 7-Kabale og Diablo2. Så er jeg happy
Gravatar #47 - sKIDROw
29. jul. 2003 08:45
#46

[Hvor er det dog rart at se betegnelsen "hacker" blive brugt rigtigt for en gangs skyld =)]

Jamen selvfølgelig.
Jargon files er da den officielle nørdeordbog.. :)
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login