Keresés

Új hozzászólás Aktív témák

  • ddekany

    veterán

    válasz negyedes #2 üzenetére

    Igen, legalábbis FireFox alatt a böngésző fülében nyílik meg. Amúgy az Acrobat Reader számomra idegesítőbb tulajdonsága, hogy borzalmasan lassan indul... Foxit szinte azonnal bejön.

  • ddekany

    veterán

    Hirtelen nem találtam meg, mi a támadási mechanizmus, de gondolom ismét valami tömb túlcímzés vagy egyéb pointer elcseszős trükk. Mikor jutunk el oda, hogy egyszerűen nem használunk olyan programozási nyelvet (kivéve talán néhány nagyon alacsony szintű feladathoz), amiben ilyesmi lehetséges? Dedó, komolyan...

  • ddekany

    veterán

    válasz Bici #12 üzenetére

    "Ki ne használjon "olyan programozási nyelveket"?"

    A szoftverfejlesztők akik a biztonsági réseket tartalmazó cuccokat (Acrobat Reader, Flash player, stb) készítik. De talán majd talán pár évtized múlva végleg kinövünk a C/C++-ből és hasonló ős idők körülményeire optimalizált nyelvekből (kivéve néhány speciális területen persze). És amúgy nem kell "virtuális gépes" nyelv ahhoz, hogy az ilyesmi pointer manipulálós balesetek esélye a töredékrészére csökkenjen, ha még nem is 0-ra.

  • ddekany

    veterán

    válasz Bici #15 üzenetére

    Jó akkor innentől off, mert mint mondtam, nem tudom ez miféle hiba most... annyit mondtam, nehogy az legyen már megint, mert.

    "De ha a szoftverfejlesztők le is szoknak róla, attól még a rosszindulatú kódokat író fickók még használhatják másik szivatására."

    Már feltéve, hogy "bináris" (azaz gépikódot tartalmazó) formában adhatnak meg dolgokat gonoszék... de hát ilyet azért nem tehet hivatalosan (ill. minimum hogy alá kell lennie írva a "bináris" cuccnak, plusz rákérdez a böngésző, hogy bízol-e a készítőben). Pl. swf sem tartalmazhat ilyet, meg a WMF-sem, stb., aztán minddel lehetett vicceseket csinálni. És ahogy elnéztem, a komolyabb hatású exploitok (teljes hatalomátvétel, stb) jelentős része úgy működik, hogy olyan adatokkal etetnek meg egy jóindulatú programot, amitől az nagyon specifikus, a támadó által hasznos módon hibásan kezd el működni... pl. tömb indexeket a helyes tartományon kívül visz (és egyéb pointer elcseszések), ezzel átírva a memóriában dolgokat (funkció visszatérési címet, vagy akár csak helyi váltózókat, sőt, heap-ben is lehet így jókat gázolni), ami a program logikája szerint lehetetlen, de így alacsony szinten belepiszkálva a memóriába lehetséges. Puff. Teljesen "felesleges" hiba. Ha a C++ tömbökhöz letárolódna a méret, és kötelező lenne az index helyességének ez ellenőrzése, akkor hiába rontotta volna el a készítő a programot, az vmi IndexOutOfBounds hibával elszállna és kész, nem lehetne disznóságra rávenni. De hát a C++, mint "rendszer programozási nyelv" nem efféle, teli van pointer aritmetikával (tehát ott is ahol formálisan nincs is tömb).

    Ja, az meg már mindennek a teteje, mikor adatterületre rá lehet ugrani mint gépikódra... és ezt csak mostanság próbálják orvosolni az NX bittel. Ez is már milyen, ezt már a 286 idején lehetett tudni, hogy gáz, csak hát akkor még nem érdekelt ez senkit, mert ugyanmá'. Eh, a túl gyors fejlődést káoszt okoz. Majd kinőjük...

    "Egyébként érdekelne, hogy mit javasolnál helyette (programozási területen), amiben nem lehetséges hasonlóan ocsmány hiba."

    Nem tudok róla, hogy lenne ilyen nyelv ami nem "script nyelv", és nem is "virtuális gépes", és általános célú is... Hogy miért? Talán mert ezen a területen C/C++-vel szemben senki nem próbálkozni. (OK, de, Digital Mars a D-vel... és az ugyan csodás, de az sem "biztonságos", bár valamivel talán biztonságosabb.) Meg aztán, a virtuális gépes irányba nagy nyomulás van, ezért talán felesleges is lenne máshol próbálkozni, viszont annak még fejlődni kell sokat. De talán majd megélem, hogy driverek magjától meg efféléktől eltekintve minden C#-ban vagy hasonlóban lesz írva.

    [ Szerkesztve ]

  • ddekany

    veterán

    válasz Bici #17 üzenetére

    "A C# mitől jobb a c/c++-nál?"

    C# kb olyan mint a Java, csak valamivel fejlettebb.

    "Értem a mondanivalódat, de nem értem, hogy hogy gondolod a gyakorlatban."

    Szerintem nem érted. Arról van szó, hogy mikor flash-t "futtatsz" (ideértve a ActionScript interpretert), vagy amikor egy GIF-et jelenít meg valami (pl. a böngésző), vagy amikor PDF-et jelenít meg az Acrobat Reader, stb, stb. akkor ezt manapság a háttérben általában egy C/C++-ben vagy valami hasonlóban írt program végzi a Te gépeden. Ha ennek a programnak szándékosan hibás vagy épp csak furcsa ActionScript-et, GIF-t, PDF-et, stb-t kap, és a program nincs túl jól megírva, akkor "megzavarodik", és ezt a te gépedre való betörésre lehet kihasználni. Tehát az "összezavarható" program a te gépeden volt, és nem rosszindulatú emberek rakták oda, csak az őt összezavaró tartalmat készítették azok (holott elvileg sem Flash-al sem GIF-vel sem PDF-el nem lehet ilyet csinálni). Mármost, bármiféle nyelven írt tökéletlen programot ismeretlen utakra lehet terelni hibás adatokkal, szóval egyik sem támadhatatlan, de pl. a Java-ban, C#-ben, meg effélékben írt programok esetén ezzel ritkán tudsz elfoglalni egy gépet, mert nem férsz hozzá alacsony szinten a memória tartalmához. (Persze, a gond ott van, hogy pl. Java esetén vannak C/C++-ben megírt részek a platform megvalósításában, de kevés, és remélhetőleg egyre kevesebb lesz. De akkor is, itt emberi ész nélkül, teljesen automatikusan ki lehet zárni egy rakás biztonsági rést.)

    [ Szerkesztve ]

  • ddekany

    veterán

    válasz Bici #20 üzenetére

    "Én arra reagáltam, hogy azt írtad, hogy aláírással kellene ellátni a bináris cuccokat.
    Ezt nem tudom, hogy mi módon gondoltad a gyakorlatban."

    Ott azt akartam mondani, hogy ez jelenleg is így van, tehát "gonoszék" nem tudnak szabályosan "veszélyes nyelven" írt cuccokat használni weboldalon keresztül. Ha egy weboldal részét natív (gépikódú) cucc is képezi (pl. DLL), akkor ott rákérdez a böngésző, hogy ezt XY cég írta alá (digitális aláírás), megbízol-e benne. Általában... de minden esetre nem fogja automatikusan letölteni és futtatni.

    "Amúgy a virtuális gépen futó progik nem lassabbak, mint egy alacsonyabb szinten írt progi?"

    Fejlett virtuális gépet feltételezve nem feltétlenül számottevően lassabb (pl. manapság már "titokban" natív gépikóddá fordulnak ezek), de valahol több erőforrást kell ennie, pl. több RAM-ot. Viszont ahogy a hardver fejlődik, ez a "vízfej" az elviselhetetlentől az észrevehetetlen felé mozdul el. Persze még igencsak ráfér a fejlődés a virtuális gépes világra. Pl. bizonyosan jó lenne, ha OS szinten lenne támogatva a dolog, hiszen ez egy alapszolgáltatás kéne hogy legyen. Így pl. a virtuális gép és a hozzátartozó sztenderd könyvtárak már az OS indulásakor betöltésre kerülnének, szemétgyűjtés szociálisabb lehetne (hiszen OS kontrollálja), lehetne ilyen-olyan cache-ek csinálni osztályok betöltésének gyorsítására OS szinten, stb. Aztán ha már ennyire alap dolog lett ez, akkor talán megjelenne a hardver támogatás is... mint ahogy multimédiára rágyúrtak a CPU-k talán erre is rá lehet.

    [ Szerkesztve ]

  • ddekany

    veterán

    válasz Gabesz84 #21 üzenetére

    "mi lenne ha nem natív nyelven írnák?"

    Ki tudja... Hibásan választott algoritmusok és általában hibás felépítés sokkal több lassulást tudnak okozni, mint egy lassú VS gyors "nyelv".

  • ddekany

    veterán

    válasz Bici #29 üzenetére

    Ez alapján a flash-al érdemes gyártani a csicsát (bannerek, stb), Sliverlight-al meg a komolyabb oldalba ágyazott alkalmazásokat. Az SL .Net támogatása miatt már látatlanban kétlem, hogy a flash technikailag labdába rúghatna mellette utóbbi téren...

Új hozzászólás Aktív témák