[ combuster @ 19.08.2010. 23:46 ] @
http://www.itnews.com/windows/...orse-first-thought-says-expert

Citat:

Today, Kolsek said that Acros has been digging into a new class of vulnerabilities for months, has found more than 200 flawed applications harboring more than 500 separate bugs, and reported its findings to Microsoft more than four months ago.

"We examined a bunch of applications, more than 220 from about 100 leading software vendors, and found that most every one had the vulnerability," said Kolsek. Acros built a specialized tool to help its researchers pinpoint which applications were vulnerable.

According to Kolsek, the bug is in how most applications load and execute code libraries -- ".dll" files in Windows -- and executables, including ".exe" and ".com" files. He dubbed the class of bugs as "remote binary planting," and said the flaws could be easily exploited.

"The main enabler for this attack is the fact that Windows includes the current working directory in the search order when loading executables," he said. Hackers can use that to trick a wide range of Windows applications into loading malicious files, just as they normally do their own .dll or .exe files.

Most Windows applications rely on the functionality to operate, a problem that may prevent Microsoft from issuing a single patch. Although Microsoft could patch Windows to change the functionality, Kolsek at one point said he believed that such a fix could break scores of applications.


Flawed by design week ? Ovo nece ispraviti prostih 20 linija koda :D
[ Ivan Dimkovic @ 20.08.2010. 00:08 ] @
Citat:

"The vector is slightly different between applications, but the end result is an attacker-supplied .dll being loaded after the user opens a 'safe' file type from a network share [either on the local network or the Internet]," Moore said in an e-mail reply to questions. "It is possible to force a user to open a file from the share, either through their Web browser or by abusing other applications, for example, Office documents with embedded content."


Hahaha,

Ovaj bug je rezultat Microsoft kretenizma sa UPnP, WebDav, Network Discovery i ostalim budalastinama...

Dakle, toliko su gluposti napakovali da sa danasnjim client Windowsom po default instalaciji ako otvorite prosti network share, dolazi do citavog niza akcija "otkrivanja", cesljanja po fajlovima i, da, nekad i izvrsavanja bez da znate da se to desava :-))))

Sve same "core" funkcionalnosti bez kojih prosto ne moze da se zivi.

Sto je najgore, Microsoft uopste ne daje jednostavan nacin da se te budalastine ugase... morate ici po servisima i task scheduleru i rucno ubiti svo to djubre... Ili to, ili instalirati Server verziju Windowsa i koristiti je kao desktop.

Kontam da to moraju da ubacuju kako bi popunili feature matrice u novim verzijama Windowsa.

No, znas kako combuster, ne sumnjam i da ce ih popularne Linux distribucije pratiti do u stopu... :-)))
[ combuster @ 20.08.2010. 00:49 ] @
Budu li jurili user friendlyness hoce :D Sve sam idiotizam do idiotizma.

Nego mene zanima ovo:

"The main enabler for this attack is the fact that Windows includes the current working directory in the search order when loading executables"

O cemu se radi, neki trik sa symlink-ovanjem, sta li vec. Mislim znacemo vise kada budu objavili nesto vise, za sada se cuti ali ce braca Slovenci vec izaci sa novim informacijama. A do jeseni (koliko sam shvatio do tada bi vec trebalo da se to ispravi ili nadje resenje) se nadajte najboljem :)

Joj cekaj, sad mi pade luda ideja. Pokreces program, recimo Word tako sto startujes word doc iz svog korisnickog Documents direktorijuma. E sad moz' da prevaris office preko tako "tamperovanog" doc-a da ucitava dll-ove, exe ili sta li vec iz samog Documents-a bez iskakanja UAC-a - kao da su ucitani iz c:/Program Files/Microsoft Office/library_what_ever_dir :) Valjda mu to znaci current working directory :)

Ako je tako - veselo onda... Jos je veselije ako se ucitavaju binaries sa udaljene lokacije (tu na scenu upada symlinking), onda mozes da "zasadis" sta hoces i gde hoces i sto je najveselije - UAC te nece ni pitati :)

Nego videcemo, ima vremena. Covece 200+ (verovatno mnoooogooo vise) ranjivih aplikacija i sto je najludje ako zabrane/izmene to onda sledi patch/rewrite svih win app-ova. HAHAHAHA MAJOR ABI BREAK :D

Backward compatibile my butt :)
[ Impaler @ 20.08.2010. 07:55 ] @
^ pise tamo da se moze u nekim slucajevima natjerati korisnika da pokrene bilo koji executable u korisnickom kontekstu
ali nevidim kakve veze ima UAC i ABI s ovime

[Ovu poruku je menjao Impaler dana 20.08.2010. u 09:10 GMT+1]
[ mmix @ 20.08.2010. 08:28 ] @
Prosti senzacionalizam, sad je ucitavanje DLLova problem, mozes misliti.

Problem kao prvo uopste ne postoji kad je ukljucen SafeDllSearchMode a ukljucen je za XP SP1+, 2000 SP4+ i sve novije. Kad je on ukljucen search order je sledeci:

The directory from which the application loaded.
The system directory.
The 16-bit system directory.
The Windows directory.
The current directory. <!-- working directory
The directories that are listed in the PATH environment variable.

Znaci moras da nadjes neki DLL koji ne postoji u celoj vertikali iznad da bi uopste mogao da iskoristis ovaj exploit ili da prvo korisniku iskljucis SafeDllSearchMode so je u admin delu registry-a. Ali ako to mozes onda si vec u admin procesu i ne treba ti nikakva mahinacija sa dllovima.
[ combuster @ 20.08.2010. 09:36 ] @
Ne nego moras da nadesis naziv dll-a tako da ne postoji u prve cetiri lokacije (ako se pod current working directory smatra i otvaranje fajla sa udaljene lokacije e.g. web share-a itd). Da li i kako se to moze uraditi ne znam ali cim kazu da je bug easily exploitable i da se patch vec pojavio za iTunes i VMWare onda znaci da moze.

@Impaler

Koliko sam ja shvatio (nemam mnogo iskustva sa Vistom/W7) UAC te sprecava (ili te makar upozori) pre nego sto krenes da menjas bilo sta van tvog korisnickog direktorijuma. E sad, promene unutar tih direktorijuma bi trebalo da su dozvoljene od strane "safe" aplikacija, a ako safe aplikacija ucita maliciozni dll/exe sta li vec onda bi mogao da kompromitujes sistem poprilicno bez ikakvog upozorenja. Pricam teorijski ali se nadam da ce mi neko ukazati ako/zasto nisam u pravu.

U prvi mah sam pomislio da bi zabranili pokretanje dll-ova iz trenutnog radnog direktorijuma pod odredjenim situacijama i da bi to parcijalno razbilo funkcionalnost odredjenih programa (ABI break).

Ok, ucitavanje dll-ova iz radnog direktorijuma mogu da shvatim zbog staticki ulinkovanih biblioteka, portabilnih aplikacija koje nemaju upise u registry-ju, drugi razlozi mi ne padaju na pamet.
[ mmix @ 20.08.2010. 09:49 ] @
Da, ali taj DLL ne sme da se pojavi ni u jednom od tih gornjih foldera a proces mora da ga ZAHTEVA, ne mozes ti tek tako da ucitas DLL u proces, ne postoiji "load *.DLL from all folders". Ako si napisao proces tako da zna sta koristis i ako sve nesistemske DLLove drzis u svom program files folderu onda problema jednostavno nema, jedino ako si pravio neki idiotski plugin system koji enumerise sve plugine u radnom folderu onda si prso. Ali za taj problem se zna odavno,z ato je i uvede DllSafeSearch
[ Ivan Dimkovic @ 20.08.2010. 10:22 ] @
Citat:
mmix
jedino ako si pravio neki idiotski plugin system koji enumerise sve plugine u radnom folderu onda si prso.


Ovo me podseti na Spaceballs...

Citat:

So the combination is 1,2,3,4,5? That's the stupidest combination I have ever heard in my life! Only an idiot would put it on his luggage


http://www.youtube.com/watch?v=a6iW-8xPw3k
[ combuster @ 20.08.2010. 10:46 ] @
Why that's the combination of my luggage :)

@mmx

Ja tebe opet ne razumem. Ne treba da enumerise sve foldere, cak sta vise proces ne mora da enumerise nista, on kaze include to i to iz tog i tog dll-a (bez putanje). Zato i postoji search order koji trazi dll na svim tim navedenim putanjama - pa ako ne nadje - od te funkcionalnosti nista.

Evo zamisljam situaciju. Program dolazi bez ugradjenog kodeka za odredjeni audio/video format. Pustis ga sa web share-a, dll se trazi na prve cetiri lokacije i naravno se nece naci jer ga nema instaliranog na sistemu pa cak ni u direktorijumu gde se nalazi sama aplikacija - ali se trazi u direktorijumu odakle je pusten fajl i nadje se :) Samo sto to nije kodek vec tamperovani dll koji se aktivirao :) Dakle udaljeni napadac smesti fajl, smesti dll sve u istom direktorijumu odakle ti preko neta pustas neki fajl i haos je napravljen - sa sve SafeSearchDLL-om :)
[ mmix @ 20.08.2010. 11:25 ] @
Hehe, ne moze to tek tako ;)

Postoji samo dva nacina (ako izbegnemo .NET asembilije) na koji DLL moze biti ucitan, jedan je import sekcija u DLL/EXE drugi je dinamicko ucitavanje kroz LoadLibrary (mada se i import sekcija na kraju sistemski ucitava kroz loadlib), ako ti kazes loadlibrary("pera.dll") onda on trazi taj DLL, ali ti neces reci loadlibrary("pera.dll") ako ne znas gde ti je taj DLL (ili je sistemski ili tvoj pored exe fajla) osim ako nisi osvedoceni sampion programiranja. Jedini nacin na koji to moze da se desi je da enumerises dinamicki working folder i da onda to ime DLLa ubacis u load library i da ga ucitas. Ako je to bio propust u ovih 200 aplikacija ond ai treba da istrpe name and shame jer to su neke osnovne stvari, cak se i kodeci na windowsu registruju i ne otkrivaju se dinamicki enumeracijom DLL fajlova. U svakom slucaju ovo nije ranjivost windowsa vec tih pojedinacnih aplikacija.
[ combuster @ 20.08.2010. 11:32 ] @
Pa ok, ja to posmatram iz moje perspektive linuxashke pa mi zvuci totalno debilno i gotovo nemoguce, yet again, cim Ivan spomenu Spaceballs rekoh svakakve idiotarije su moguce a na radost korisnika (da se ne bi smarao sa kodecima drz-ne daj sve radi OTB).

A VMWare i iTunes su onako malo "ozbiljnije" aplikacije i kada su one patch-ovane onda cini mi se mozemo da biramo izmedju dve mogucnosti:

- Idiotarija je tu da bi se korisnicima olaksalo koriscenje idiotskih servisa bez njihove intervencije
- Neki zesci f*ck up na strani Microsoft-a zato sto bug jos uvek nije otkriven javnosti kako treba, mozemo samo da nagadjamo
[ Ivan Dimkovic @ 20.08.2010. 11:43 ] @
mmix je u pravu sa ovim konkretnim problemom - ova konkretna idiotarija jeste deo loseg programiranja ali nema neke veze sa samim OS-om.

I nije nista cudno sto VMWare ili iTunes imaju taj problem... i jedan i drugi produkt su verovatno ogromni i pisani od strane gomile ljudi = citaj, verovatnoca loseg i nesigurnog koda je velika.

Ucitavati nasumicno DLL-ove bez ikakvih provera u svoj address space je recept za propast.

Dovoljno je da takva aplikacija koja to radi trci sa administratorskim privilegijama, i eto zabave :)

Citat:

Pa ok, ja to posmatram iz moje perspektive linuxashke pa mi zvuci totalno debilno i gotovo nemoguce


Ovaj...

http://www.opengroup.org/onlin...09695399/functions/dlopen.html
http://tdistler.com/2007/10/05...main-in-a-linux-shared-library

Citat:

On Linux, one must use the GCC __attribute__((constructor)) and __attribute__((destructor)) keywords (double underscores before and after) to explicitly declare functions to be called on load and unload. These keywords cause the compiler/linker to add the specified functions to the __CTOR_LIST__ and __DTOR_LIST__ (“ConstrucTOR LIST” and “DestrucTOR LIST” respectively) in the object file. Functions on the __CTOR_LIST__ are called by the loader when the library is loaded (either implicitly or by dlopen()). The main purpose for this list is to call the constructors on global objects in the library. Conversely, functions on the __DTOR_LIST__ are called when the library is unloaded (either implicitly or by dlclose()). By adding initialization and clean-up functions to this list, one can effectively replicate the DllMain functionality on Linux.


:-)

[ mmix @ 20.08.2010. 11:45 ] @
Ja mislim da je taj current directory faktor ostao jos iz doba DOSa, pa je kod po inerciji nastavio. Realno njegovo postojanje nije izgovor za idiotsko programiranje aplikacija (a da se ne lazemo to sto je u pitanju iTunes i vm ne znaci nista, low priority stvari kao sto je GUI obicne ne rade mozgovi koji rade virtuelizaciju i kernele vec niskoplaceni ofshor sampioni) ali po meni bi MS komotno trebao da ukine radni direktorijum kao probing lokaciju pa ako ce neka idiotski napisana aplikacija da pukne, nek pukne pa nek se patchuju.
[ combuster @ 20.08.2010. 11:52 ] @
Tu se opet vracamo na lomljavinu 200+ aplikacija, verovatno ce MS dati rok svima od jedno 3-4 meseca da ispatch-uju svoje aplikacije i ukloniti radni direktorijum iz jednacine posle toga.

Ali sad se ja pitam, sta je sa custom made aplikacijama (knjigovodstvenim itd)... Bice ljutih korisnika sto im program koji su papreno platili pre 3-4 godine vise ne funkcionise :) I opet ce da puknu po dzepu...

Zato ja kazem, meni se bug-ovi ne naplacuju :) Jos ce ovo da bude odlicna prilika software vendora da bump-nu razvojnu verziju up a notch i da to lepo naplate :)

[Ovu poruku je menjao combuster dana 20.08.2010. u 13:14 GMT+1]
[ mmix @ 20.08.2010. 12:02 ] @
Pa zato verovatno to nece ni uraditi, ne smeta meni sto je to natrljano ovim firmama u lice, ali mi smeto sto se pominje da je to windowsova krivica kad nije. Ako idiot zgazi pijan mercedesom nekoga kriv je on a ne mercedes koji je kola napravio, isto tako kad pises softver nije ti kriv OS.
[ vlada_vlada @ 20.08.2010. 12:02 ] @
Znam za DLL search order na win-u poslednjih 10 god, kao i svaki ozbiljniji programer koji je iole duzhe u ovome.. to je old-news, ali ipak ne bih potcenjivao stvar obzirom da se i HD Moore nalazi u saopstenju. Verovatno ima jos toga ispod zhita sto se ne daje javnosti. Mislim da je Moore potvrdio dobar mehanizam exploatacije koji se ne objavljuje.

@mmix: Evo primera za lokalni folder: Office-a: http://www.securityfocus.com/bid/1699/exploit

Ono sto mene brine je sto Moore pominje mogucnost indirektne exploatacije kroz web-browser ili network share, sto bi blio tragichno. U svakom slucaju Slovenci ce izgleda objaviti u chemu je stvar u prezentaciji zakazanoj za 23-26 Nov. u Bechu. Do tada je MS valjda fixovati nesto...

U svakom slucaju ne vidim razlog za nasladjivanje problemima vodece IT firme. Nista od ovoga nije nastalo bez razloga, niti su ti ljudi "idijoti" niti ne znam ti ja sta.. naravno da je MS kupio top IT strucnjake. Linux nije nista bolji sa aspekta sigurnosti, naprotiv.. samo su mane redje u spotlight-u javnosti, jer se manje koristi pa se i redje otkriva, a i manje koga zanima..

[ Srđan Pavlović @ 20.08.2010. 12:05 ] @
@combuster
Citat:
Zato ja kazem, meni se bug-ovi ne naplacuju


Cekaj da pocnes da koristis Linux u poslovne / produkcijske svrhe
[ vlada_vlada @ 20.08.2010. 12:12 ] @
@combuster: Chemu bese sluzi LD_LIBRARY_PATH pod linux-om ? ;)
[ combuster @ 20.08.2010. 12:13 ] @
@Dimke

Mozes ti da isprogramiras i aplikaciju koja ce da ti formatira ceo disk ako hoces :) U slucaju shared lib-ova na Linuxu, prilikom kompajliranja sa gore pomenutim GCC-em, moras proslediti promenljive kao sto su:

Citat:


Some influential environment variables:
CC C compiler command
CFLAGS C compiler flags
LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
nonstandard directory <lib dir>
LIBS libraries to pass to the linker, e.g. -l<library>
CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
you have headers in a nonstandard directory <include dir>
CXX C++ compiler command
CXXFLAGS C++ compiler flags
CPP C preprocessor
CXXCPP C++ preprocessor
PKG_CONFIG path to pkg-config utility
LIBSOUP_24_CFLAGS
C compiler flags for LIBSOUP_24, overriding pkg-config


Itd, i tako blize mnogo ih je. Ali jednom kada ga iskompajliras - nema on sta da trazi po drugim lokacijama, to je ta koja je ulinkovana prilikom prevodjenja source-a i to je to - kraj price. Ako imas nestandardnu lokaciju onda mozes da override-ujes pkg-config ali to je ta lokacija i nijedna druga se ne koristi. NE POSTOJI SEARCH ORDER (makar ne u mojoj knjizi). Zato se dogadja da aplikacija kompajlirana na openSuSe-u nece da radi na recimo Ubuntu-u, ovamo se biblioteke nalaze u /usr/lib/python a ovamo u /usr/lib/python26 (ako cak izuzmemo da su razlicite verzije - onda tek nece da sljaka).

@vlada_vlada

To mozes da uradis samo pre startovanja aplikacije. Kada je aplikacija jednom startovana - ne postoji nacin da ucitas biblioteku sa drugog mesta.
[ vlada_vlada @ 20.08.2010. 12:21 ] @
Citat:

To mozes da uradis samo pre startovanja aplikacije. Kada je aplikacija jednom startovana - ne postoji nacin da ucitas biblioteku sa drugog mesta.


Takav 'fix' moze i MS da izda odmah ;) To ne resava problem vuln-a.


I btw, cemu sluzi dlopen() f-ija ?
[ Ivan Dimkovic @ 20.08.2010. 12:26 ] @
@combuster,

Da li si pogledao opis dlopen() funkcije?

Koliko ja vidim, to mu dodje isti djavo kao LoadLibrary() u Windowsu, i sasvim je moguce napraviti aplikaciju koja trazi svoje plug-inove tako sto otvara svaki .so fajl i ucitava ga.

Da li takav program postoji na Linuxu, pojma nemam - ali ne bi me cudilo da postoji, posto je takav nacin ucitavanja izvrsnih plug-inova najjednostavniji za implementaciju - citaj, jeftini rent-a-coderi iz neke 3.14pizdine koji otaljavaju posao nekoj firmetini to mogu komotno da zloupotrebe.
[ vlada_vlada @ 20.08.2010. 12:27 ] @
I ne samo to, vec postoji i mogucnost dinamicke izmene .so search patha kroz environment promenljive...
[ Ivan Dimkovic @ 20.08.2010. 12:28 ] @
Ma da bre, ista funkcionalnost kao na Windowsu + extra dodatak :)

Sad ispada da ja poznajem bolje Linux API-je od rezidentnih Linuxasa na ovom forumu... pa na sta bre to lici :)
[ Ivan Dimkovic @ 20.08.2010. 12:30 ] @
A evo, izgleda je to isto i korisceno u proslosti:

http://www.securiteam.com/unixfocus/5VP021F0AU.html

Citat:
he fact that both userhelper and PAM follow '..' paths allows us to create a file that causes userhelper (by way of PAM) to dlopen any shared object we want as root. The exploit is simple, and utilizes the '-w' option of userhelper, which lets us specify a program to run with the privileges designated by PAM. This tries to only execute programs that have entries in /etc/security/console.apps, but since we get to specify the name, something like ../../../tmp/myprog gets us a file open path that looks like /etc/security/console.apps/../../../tmp/myprog. "strcat" is not a good way to keep a filename below a directory!


Tja...

Jeste matoro ali sam to na brzinu izbunario cisto kao primer.

Dakle, Linux ima identican problem, tj. mogucnost da zbog loseg dizajna aplikacije dlopen() ucita maliciozni shared objekat - ako se to moze nazvati problemom uopste a ne losom sigurnosnom praksom u aplikacijama.

Takodje, i Linux shared objekti mogu da imaju "DllMain()" ekvivalent, tj. da odmah krenu da izvrsavaju kod cim se ucitaju.

[ mmix @ 20.08.2010. 12:34 ] @
Kroz network share moze sigurno posto je UNC validar working directory ali URL/URI nije, sasvim sigurno ne bez nekog custom mappera tako da mi je tek dubiozna ta tvrdnja da mozes preko browsera.
[ combuster @ 20.08.2010. 12:38 ] @
Cekaj, stani, koci :)

Tacno, je mozes ti preko enviroment var-ova da promenis search path, ali kao sto rekoh to se radi PRE ucitavanja aplikacije. Kada ti otvoris aplikaciju jednom, i pokusas da otvoris fajl za cije funkcionisanje je potreban neki lib - to nece da funkcionise niti ce se taj fajl otvoriti AFAIK ako se taj .so ne nalazi u putanji koja je navedena pre startovanja aplikacije ili ulinkovana prilikom kompajliranja.

E sad malo razmisljam o plugin-ovima i kako je to odradjeno. Vecina aplikacija meni poznata koja funkcionise sa plugin-ovima trazi prilikom ucitavanja aplikacije da li je taj .so/binary instaliran - ako nije ne sljaka. Ako jeste sljaka. Ali ga on ne trazi na udaljenim lokacijama, web share-ovima bla bla, aktivnom radnom direktorijumu itd, tacno se zna putanja na kojoj on mora da bude ili korisnik mora da navede isti.

Ne kazem da nije ne moguce isprogramirati to tako - samo mislim da se to tako ne radi uopste :) Jos nisam video negde a 11 godina drndam po Linuxu :)

I opet u svakom slucaju steta koju moze da napravi sa korisnickim privilegijama je smesna :)
[ vlada_vlada @ 20.08.2010. 12:49 ] @
@mmix:

Citat:


That advisory detailed a vulnerability in iTunes for Windows that hackers could exploit by persuading users to download and open a malformed media file, or by duping them into visiting a malicious Web site, where they would fall prey to a drive-by attack.

Apple patched the iTunes for Windows bug last March when it updated the music player to Version 9.1. According to Apple, the bug does not affect Mac machines.

Acros' advisory insinuated that the vulnerability was in more than just iTunes. "Additional details are available to interested corporate and government customers under NDA, as public disclosure would reveal too many details on the vulnerability and unduly accelerate malicious exploitation," the warning said.

It would have been odd for Acros to note the possibility of exploitation if the bug was iTunes-only and had been patched months earlier.

Moore confirmed that the flaw "applies to a wide range of Windows applications," and added that he stumbled across it while researching the Windows shortcut vulnerability, a critical bug that Microsoft acknowledged in July and patched on Aug. 2 using one of its rare "out of band" emergency updates.

Moore declined to name the applications that contain the bug or to go into great detail about the vulnerability. But he was willing to share some observations.

"The vector is slightly different between applications, but the end result is an attacker-supplied .dll being loaded after the user opens a 'safe' file type from a network share [either on the local network or the Internet]," Moore said in an e-mail reply to questions. "It is possible to force a user to open a file from the share, either through their Web browser or by abusing other applications, for example, Office documents with embedded content."

Some of what Moore described was reminiscent of the attacks using the Windows shortcut vulnerability. For instance, hackers were able to launch drive-by attacks exploiting the shortcut bug from malicious sites via WebDAV, and could embed their exploits into Office documents, which would presumably be delivered to victims as seemingly innocuous e-mail attachments.



source: http://www.computerworld.com/s..._critical_bug_says_researcher?


@combuster: Mislim da niko ovde jos uvek ne razume tacnu prirodu sploita, sve sto se zna da je redosled ucitavanja DLL-ova bitan korak u explotaciji.

Citat:

Tacno, je mozes ti preko enviroment var-ova da promenis search path, ali kao sto rekoh to se radi PRE ucitavanja aplikacije.


Ako u env promenljivoj imas relativne path-ove - oni ce se menjati zajedno sa cwd-om, sto uz dlopen() znaci da se search path menja i nakon ucitavanja app-a...
[ Ivan Dimkovic @ 20.08.2010. 12:51 ] @
@combuster,

API je tu. Funkcionalnost je tu.

Sto znaci, uz dovoljno vremena mozes ocekivati da ce neko to da zloupotrebi.

Oh wait...

http://freshmeat.net/articles/...kages-fix-privilege-escalation

Citat:

It was discovered that ltdl, a system-independent dlopen wrapper for GNU libtool, can be tricked to load and run modules from an arbitrary directory, which might be used to execute arbitrary code with the privileges of the user running an application that uses libltdl. Updated packages are available from security.debian.org.


Eh :)

Citat:

I opet u svakom slucaju steta koju moze da napravi sa korisnickim privilegijama je smesna :)


Cudo jedno kako to ne pomenes kada pominjes Windows ekvivalent... :)

Naravno, nema teorije da neka Linux aplikacija koja koristi dlopen() i prostu pretragu za plug-inovima trci sa vecim privilegijama jer je opste poznato da cim nesto ima Linux u imenu mora da drasticno odskace po sigurnosnoj praksi.

Ti stvarno verujes u to? :)
[ mmix @ 20.08.2010. 13:04 ] @
vlada_vlada, taj clanak je pausalan i nedorecen, moracemo da sacekamo da daju full disclosure da vidimo o cemu se radi, ali i po samom tekstu mi se cini da je explit vezan za programe a ne za OS per se (iTunes, webdav, office, itd), a radni direktorijum definitivno ne moze da bude nista sem UNCa, probaj, videces. Bice da tih 200 racuna da ce se osloboditi loseg PR za sopstveni idiotizam ako zajednicki optuze MS sto im je dao LoadLibrary() ;) U svakom slucaju nema ni govora o eskalaciji privilegija tako da ovo ionako nije neki exploit ako nisi local admin.
[ combuster @ 20.08.2010. 13:08 ] @
U zadnje vreme sve manje i manje ali znajuci kroz kakve sam sve peripetije prolazio vezano za kompatibilnost aplikacija sa dinamickim bibliotekama rekao bih da takva programerska praksa ne postoji u obimu 200+ aplikacija. Kako ne naleteh na jednu u pm.

Ih kad bih ja mogao da svucem .so sa neta, da ga sibnem u direktorijum odakle pokrecem aplikaciju i da mi se omoguci ta funkcionalnost. Malo morgen. :) Nadji ga u /usr/lib nema, nadji ga u /lib nema, nadji ga u /usr/local - nema, u radnom direktorijumu vidi ima, hoce da radi :D

/edit: Rekosmo da moze, samo moram ja da mu navedem, ne radi on to sam od sebe :D
[ vlada_vlada @ 20.08.2010. 13:24 ] @
Citat:

vlada_vlada, taj clanak je pausalan i nedorecen, moracemo da sacekamo da daju full disclosure da vidimo o cemu se radi, ali i po samom tekstu mi se cini da je explit vezan za programe a ne za OS per se (iTunes, webdav, office, itd), a radni direktorijum definitivno ne moze da bude nista sem UNCa, probaj, videces. Bice da tih 200 racuna da ce se osloboditi loseg PR za sopstveni idiotizam ako zajednicki optuze MS sto im je dao LoadLibrary() ;) U svakom slucaju nema ni govora o eskalaciji privilegija tako da ovo ionako nije neki exploit ako nisi local admin.


Pa, ako neko na kraju bude uradio dobar full disclosure - to ce biti Moore ;)

Logicno je da se daju pausalna obrazlozenja obzirom da je upitanju 0day.

Kazu da su naisli na novu klasu vuln-ova, pa postaje da vidimo o cemu se stvarno radi za koji mesec...

UNC takodje moze da vodi i do internet racunara koji je otvorio 139, 137 ili 445 napolje.. nisam siguran, ali mislim da netbios redirector nema restrikciju izlaska ka internetu (za razliku od smb server servisa).

Dalje, pitanje je i sta se desava sa dokumentima, koji su i arhive kao sto je .chm ? U trenkutku kada se otvara .htm file iz chm arhive, da li je raspakovan i .dll ? Hoce li biti u cwd-u, tj. tamo gde je i .htm ? Moze li se referencirati.. itd..

Takodje sta se desava sa embedovanim sadrzajem u kompleksne formate kao sto su office dokumenti..
[ vlada_vlada @ 20.08.2010. 13:28 ] @
Citat:

Ih kad bih ja mogao da svucem .so sa neta, da ga sibnem u direktorijum odakle pokrecem aplikaciju i da mi se omoguci ta funkcionalnost. Malo morgen. :) Nadji ga u /usr/lib nema, nadji ga u /lib nema, nadji ga u /usr/local - nema, u radnom direktorijumu vidi ima, hoce da radi :D


Pa ni windows aplikacije se ne oslanjaju na tu funkcionalnost da bi radile. Vecina njih povlaci dll-ove iz direktorijuma gde se nalazi exe, a ne iz cwd-a. No, to sto se ta funkcionalnost ne upotrebljava puno, ne znaci da ne postoji.. zbog toga ni tvoje iskustvo u peripetijama sa instalacijom dinamickih biblioteka nije referentno kada se govori o sigurnosti aplikacija. To sto se ti nisi susreo sa nekom f-ijom dok si namestao so biblioteke, ne znaci da skrivena pretnja ne postoji..
[ vlada_vlada @ 20.08.2010. 13:39 ] @
Citat:

tako da ovo ionako nije neki exploit ako nisi local admin.


Ovaj exploit je 'remote binary planting' kako su ga nazvali i kako je opisan obezbedjuje pouzdan foot-hold do udaljenog sistema.

Kompromis korisnickog naloga je zapravo daleko slozeniji zadatak od naknadne eskalacije privilegija.

A obicno je i sasvim dovoljan, posto vec u tom scenariju imas pristup svim dokumentima korisnika.
[ combuster @ 20.08.2010. 13:49 ] @
Evo, posle citkanja ove teme opet od prvog do zadnjeg posta, postavio sam sam sebi pitanje:

Problem je nastao jer se programerima omogucilo da sami, tokom pisanja aplikacije, mogu navesti nestandardne relativne putanje ka bibliotekama funkcija? A te putanje se po windowsu traze odredjenim redosledom tj startnim direktorijumima ?

Isto to moze i na Linuxu samo sto mi moramo eksportovati specificnu putanju pre pokretanja aplikacije ili navoditi custom compiler flag-ove koje ukazaju na biblioteke ka ne standardnim lokacijama, ali u principu ne postoji default search order.

I pored svega toga, sto je ovo poznato vec godinama, postoji potvrdjenih 200+ aplikacija koje dozvoljavaju ucitavanje dll-ova sa remote lokacije ?

Ok... vreme je da ja malo pustim mozak na ispasu za danas. Osim ako mi ne bude dosadno. :D
[ mmix @ 20.08.2010. 16:39 ] @
Citat:
vlada_vlada: Kompromis korisnickog naloga je zapravo daleko slozeniji zadatak od naknadne eskalacije privilegija.


Wet dream security analista. U praksi jedan "Click here to download Facebook extension! Super! Extra! Get while free!" link resava problem ma koliko "Yes, I trust this program" dugmica mora da pritisne ;) Ispkreno mislim da se ovde pravi slon od muve.
[ technotize @ 20.08.2010. 17:37 ] @
Stvarno ne vidim sta je ovde novo, kao sto vec nekoliko ljudi rece, ovo je poznato jos od ranije. Po meni jos iz doba Win 3.11, a neko kaze i iz DOS-a.

Tada je korisceno to sto program trazi programe i biblioteke u direktorijumu odakle je pokrenut ili iz trenutnog direktorijuma i dodatno su .com fajlovi imali prednost nad istoimenim .exe fajlovima.

Meni ovo deluje kao otkrivanje tople vode Ili je to pisao neko ko bas nije radio sa kompovima u vreme kada su bili aktuelni DOS i Win 3.11.
[ VladimirCDT @ 20.08.2010. 20:18 ] @
Sto se tice problema koje je iskopao gosn' Dimkovic, jedan je fixovan pre vise od 10 godina (januar 2000), a drugi se odnosi na libtool koji se koristi u build procesu. Nekako su mi ti primeri neadekvatni za poredjenje sa propustom iz naslova teme. Prvi je odavno prevazidjen problem, a drugi znaci da je samo jedna aplikacija problematicna. No dobro, cim postoji mogucnost da se provuce kroz libtool, onda verovatno postoji uopsteno. Samo, ja bih bas voleo da vidim taj exploit na delu. Za samu ldopen() funkciju, u sinopsisu i kaze da programer mora sam da napise custom search funkciju. E sada, ako on tu namerno ostavi mogucnost za exploit, onda do mojega.

Sa druge strane, ovde imamo vise od 200 windows aplikacija u kojima su programeri bili malo aljkavi. Scenario koji meni deluje logican jeste da se propust moze iskoristiti ukoliko aplikacija ucitava dll koji se nalazi u nekom PATH-u (SafeDllSearch enabled), sto deluje izgledno i jasno govori da developeri nisu ni razmisljali o mogucnosti da im neko uvali drugi dll. To je prilicno neozbiljno, jer LoadLibrary() u svom opisu jasno govori o redosledu pretrage. Iskreno, cudi me da nisu pretpostavili mogucnost da im se na putu nadje dll sa istim imenom pre nogo dodje do lokacije u PATH varijabli.

Ovo ne smatram Windows propustom.
[ vlada_vlada @ 20.08.2010. 20:24 ] @
Citat:

Wet dream security analista. U praksi jedan "Click here to download Facebook extension! Super! Extra! Get while free!" link resava problem ma koliko "Yes, I trust this program" dugmica mora da pritisne ;) Ispkreno mislim da se ovde pravi slon od muve.


"Facebook extensioni" se koriste za stvaranje botnet-ova. No, npr. za ciljanu explotaciju desktop-a network administratora 'binary planting' je daleko smisleniji attack vector.
[ vlada_vlada @ 20.08.2010. 20:35 ] @
Citat:

Sa druge strane, ovde imamo vise od 200 windows aplikacija u kojima su programeri bili malo aljkavi.


A sta ti mislis da je ovde propust ? U cemu su oni bili aljkavi ?

Citat:

Scenario koji meni deluje logican jeste da se propust moze iskoristiti ukoliko aplikacija ucitava dll koji se nalazi u nekom PATH-u (SafeDllSearch enabled), sto deluje izgledno i jasno govori da developeri nisu ni razmisljali o mogucnosti da im neko uvali drugi dll. To je prilicno neozbiljno, jer LoadLibrary() u svom opisu jasno govori o redosledu pretrage. Iskreno, cudi me da nisu pretpostavili mogucnost da im se na putu nadje dll sa istim imenom pre nogo dodje do lokacije u PATH varijabli.


Mozes li molim te opisati kako izgleda taj scenario eksploatacije koji ti vidis ?
[ Ivan Dimkovic @ 20.08.2010. 20:36 ] @
@VladimirCDT,

Citat:

Sto se tice problema koje je iskopao gosn' Dimkovic, jedan je fixovan pre vise od 10 godina (januar 2000), a drugi se odnosi na libtool koji se koristi u build procesu. Nekako su mi ti primeri neadekvatni za poredjenje sa propustom iz naslova teme.


Primeri su apsolutno nebitni naveo sam ih samo kao primer da se vec ranije desavalo - poenta je da Linux ima identicnu funkcionalnost koja se moze na isti nacin pretvoriti u potencijalni sigurnosni propust losim programiranjem.

Da li postoje programi trenutno na Linuxu koji takav propust imaju? Pojma nemam, ali mogucnost definitivno postoji.

Citat:

i jasno govori da developeri nisu ni razmisljali o mogucnosti da im neko uvali drugi dll. To je prilicno neozbiljno, jer LoadLibrary() u svom opisu jasno govori o redosledu pretrage. Iskreno, cudi me da nisu pretpostavili mogucnost da im se na putu nadje dll sa istim imenom pre nogo dodje do lokacije u PATH varijabli.


:-)

"Developeri koji nisu razmisljali" su neogranicen resurs u danasnje vreme... zaposli neke "eksterne konsultante" da ti raspisu nesto, i budi siguran da ce biti puno rupetina - ti ljudi sami sebi prave posao ostavljajuci bagove i pisuci los kod, koliko god paradoksalno zvucalo.

Yep, ovaj svet je pun skrndelj softvera.

Zbog toga se ja trudim da imam sto manje stvari na mojoj radnoj masini.
[ combuster @ 20.08.2010. 20:44 ] @
Yep, manje software-a - manje sigurnosnih propusta :)

Ma ima tu nesto sto oni ne govore a logicno je ko sto rece Vlada jer je u pitanju 0day. Mada ja mislim da smo iscrpili sve sto nam masta dozvoljava :)
[ VladimirCDT @ 21.08.2010. 08:49 ] @
@vlada_vlada
Pa ja sam sve to sto si me pitao i napisao u gornjem postu. Za samo postupak kako cu ja iskoristiti tu rupu, nemam pojma jer se time nikada nisam ni bavio, niti cu. Kada sam spomenu scenario, mislio sam na to da je rupa otvorena time sto je verovatno racunanjem na postojanje dll-a u PATH-u, ostavljena mogucnost da se prvo pretrazi current directory, sto dalje vodi u probleme kako su ovi analiticari utvrdili.

Citat:
Ivan Dimkovic:
"Developeri koji nisu razmisljali" su neogranicen resurs u danasnje vreme... zaposli neke "eksterne konsultante" da ti raspisu nesto, i budi siguran da ce biti puno rupetina - ti ljudi sami sebi prave posao ostavljajuci bagove i pisuci los kod, koliko god paradoksalno zvucalo.

Yep, ovaj svet je pun skrndelj softvera.

Zbog toga se ja trudim da imam sto manje stvari na mojoj radnoj masini.

Amin !
Na zalost, u pravu si... preterano si u pravu.
Kakvih sam se ja gluposti nagledao u mojoj dosadasnjoj, relativno kratkoj karijeri, to je da se krstis i levom i desnom.
Najjace je kada o tako nekim primerima diskutujem sa kolegama: svi se cudimo, ali nikako ne mozemo da proniknemo u ideju koja je dovela do nekih maestralnih gluposti. Nije nam jasno kako je tako nesto moglo da se uopste desi...
[ mmix @ 21.08.2010. 09:04 ] @
Affirmative action, cheap labor, losa selekcija pri zaposljavanju, nedostatak odgovornosti, itd, ima svacega.
[ vlada_vlada @ 21.08.2010. 12:59 ] @
Citat:

Pa ja sam sve to sto si me pitao i napisao u gornjem postu. Za samo postupak kako cu ja iskoristiti tu rupu, nemam pojma jer se time nikada nisam ni bavio, niti cu. Kada sam spomenu scenario, mislio sam na to da je rupa otvorena time sto je verovatno racunanjem na postojanje dll-a u PATH-u, ostavljena mogucnost da se prvo pretrazi current directory, sto dalje vodi u probleme kako su ovi analiticari utvrdili.


Analiticari uopste nisu naveli "full disclosure" propusta.. samo su rekli da je postojanje CWD-a u search pathu vazno za ovu klasu rupa.

Cinjenica da se .DLL ucitava iz lokalnog radnog direktorijuma ti ne daje nikakva veca prava u aplikciji u kojoj otvaras dokument, jer se ona i onako izvrsava sa tvojim security token-om i stoga nosi tvoja prava pristupa.

Do exploatacije bi moglo da dodje, ukoliko se dokument sa DLL-om poslao nekome ko ce pregledom fajla pokrenuti prosledjeni kod..

Ali namece se pitanje da li je moguce DLL i dokument proslediti zajedno u paketu, da pri tom ne bude ocigledno da uz dokument dolazi i izvrsni kod?

Citat:

Najjace je kada o tako nekim primerima diskutujem sa kolegama: svi se cudimo, ali nikako ne mozemo da proniknemo u ideju koja je dovela do nekih maestralnih gluposti. Nije nam jasno kako je tako nesto moglo da se uopste desi...


To su sve ljudske greske.. uglavnom su u pitanju nemar ili nepotpuno razumevanje problema koji se resava. Ono sto ih cini tako dramaticnim kasnije, je sto se kontekst greske menja sa vremenom. Minorni previd danas, ce za 5 godina kada se IS razvije da izmutira u nepremostiv kamen spoticanja.

No sve je to cesta i ocekivana pojava u IT industriji.

Vecina uber programera koje sam upoznao su uber, jer imaju vrlo selektivno pamcenje u vezi budalastina koje prave ;)

Ako ste svesni svojih ogranicenja jos cete i moci koliko-toliko da upravljate tim uticajem haosa na nase zivote.. sto se pre to prihvati, to bolje..


[Ovu poruku je menjao vlada_vlada dana 21.08.2010. u 14:21 GMT+1]
[ combuster @ 25.08.2010. 22:45 ] @
Ima i exploita izgleda mi ko shashi :)

http://www.itnews.com/windows/...kers-post-attacks-40-plus-apps

Citat:

"Fast and furious, incredibly fast," said Andrew Storms, director of security operations for nCircle Security, referring to the pace of exploit postings for the vulnerability in Windows software called "DLL load hijacking" by some, "binary planting" by others.

If attackers can dupe users into visiting malicious Web sites or remote shares, or get them to plug in a USB drive -- and in some cases con them into opening a file -- they can hijack a PC and plant malware on it.

Several sites have taken to tracking the applications that people have found vulnerable, including an informal list kept by Peter Van Eeckhoutte, a Belgium IT manager, and a longer one of published proof-of-concept exploits maintained by Offensive Security, an online security training company.

Among the 40 exploits listed by Offensive were ones for several Adobe products, including InDesign, Illustrator and Photoshop; a number of Microsoft-made programs, including a pair that were revealed yesterday by Slovenian security firm Acros; and other popular applications, such as Foxit Reader, uTorrent and Wireshark.

As of 3 p.m. ET, more than 30 exploits had been posted on Wednesday alone.

"I don't recall seeing a list like that so quickly," said Marc Fossi, director of Symantec's security response team. "But at the same time I'm not surprised."
[ EArthquake @ 29.08.2010. 19:34 ] @

dll hijacking , clickjacking, sve sam jacking ... dobro nije dynamic link oriented programing (kao sto su "novu" stack smashing tehniku nazvali return oriented programming !?!) da su memory corruption bagovi sad otkriveni, nebi bilo buffer overflowa i stack smashinga , vec bi bilo EIP hijacking, ili tako nekako

ko se prvi setio ovoga? guninski naravno i to pre 10 godina

nije da nije propust, jeste , ali...

evo jednog interesantnog primera iskoriscavanja ovog propusta


doduse , mnogo se stvari poklopilo, ali jako kreativan exploit , uz malo sminke
zavarao bi mnoge

malo objasnjenje, klikom na dugme se prvo downloaduje torrent, a zatim i dll
onaj novi prozor koji se pojavi krije iza sebe potvrdu za snimanje dll-a, zatim
klikom na skinuti torrent, dll se ucitava i izvrsava se kalkulator


vise o ovoj fori sa kliktanjem po dugmicima na lcamtufovom blogu, jako interesantna fora
http://lcamtuf.blogspot.com/20...igning-uis-for-non-robots.html
i proof of concept kod (harmless):
http://lcamtuf.coredump.cx/ffgeo2/


a sto se linux-a tice, cekajte samo da se neko seti da moze da koristi LD_PRELOAD
i da neko ponovo izmisli symlink bagove pa bude link hijacking (do pre par godina su one igrice na gnome-u na nekoj mainstream distribuciji (stvarno se ne secam na kojoj) trcale kao suid root !!! a skorove pisale lokalno, hilarious :) )


a sto se broja "exploita" tice :
http://www.exploit-db.com/sear...;filter_osvdb=&filter_cve=

doduse , nisam siguran koliko se pojedini racunaju, recimo ova smejurija:
http://www.exploit-db.com/exploits/14793/
Citat:

1. Compile dll
2. Replace color.dll in autocad directory with your newly compiled dll
3. Launch Autocad 2007
4. Boom calc!


cik patchuj ovaj exploit!!! :)

dll hijacking je novi xss
[ Nedeljko @ 31.08.2010. 12:53 ] @
Mnogo ti je dobra ova slika.
[ maksvel @ 31.08.2010. 13:02 ] @
Citat:
dll hijacking je novi xss

Haha, dobra paralela.

BTW, Acin video za Chrome:
[ Ivan Dimkovic @ 31.08.2010. 13:22 ] @
Citat:
VladimirCDT
Amin !
Na zalost, u pravu si... preterano si u pravu.
Kakvih sam se ja gluposti nagledao u mojoj dosadasnjoj, relativno kratkoj karijeri, to je da se krstis i levom i desnom.
Najjace je kada o tako nekim primerima diskutujem sa kolegama: svi se cudimo, ali nikako ne mozemo da proniknemo u ideju koja je dovela do nekih maestralnih gluposti. Nije nam jasno kako je tako nesto moglo da se uopste desi...


Evo jednog relativno friskog primera, koji sam cuo od poznanika koji radi u jednoj velikoj i poznatoj IT firmi...

Dakle, u pitanju je neki trivijalni kod koji treba da proveri da li je neki hw. resurs zauzet i da to prikaze u Win32 dijalogu...

Elem, kod je radio "konsultant", dakle jedna od njuski placenih po satu...

Kako je to uradio? Glavni message thread za dijalog i jos jedan koji ima periodicni timer koji ocitava hw, i EVENTUALNO neki watchdog koji bi ubio I/O nit ako hardver blokira? Ne ne ne...

Cova je nakrljao FIBERE unutra, sa sve masom SwitchToFiber() poziva bez ikakve realne potrebe... dakle, 90% njegovog koda je apsolutno nepotrebno djubre koje nicemu ne sluzi osim da sta? Pa da se naplati :)

Boga pitaj koliko potencijalnih problema taj kod ima, da ne pricamo o totalno ubijenim performansama... ali eto, baja je naplatio vise svoju "konsultaciju"...

To je slika i prilika danasnjih velikih IT firmi koje saradjuju sa "konsultantima" - dobija se bloatovani kod koji je naduven kako bi se uzelo sto vise para - performanse i sigurnost su poslednja rupa na svirali u takvim jednacinama.

Ako koristite neki komercijalni paket koji vam blokira masinu i vucara se kao prebijeno pseto... cesto je razlog za to sto ga je pisao neki "konsultant" koji je nabijao sebi cenu.
[ Impaler @ 31.08.2010. 14:44 ] @
ili je sa exe kripterom prosao, pa mu je ubacilo smece
[ EArthquake @ 31.08.2010. 21:40 ] @
Citat:
Nedeljko: Mnogo ti je dobra ova slika.

nisam skontao da link za video ne radi, sorry

@Ivan

za sve koje zanimaju biseri konsultanata
http://thedailywtf.com/ obavezno citanje , ujutru uz kafu:)
[ mmix @ 01.09.2010. 07:57 ] @
Hehe, Ivane, nisi vise IN covece, zar nisi cuo "fibers are the new threads"

Al' to za konsultante je vise nego tacno, znam, bio sam jedan. Ali sve je to posledica mentaliteta i pritisaka u tim consulting firmama, to vise lici na operacije javne kuce nego na sustainable business, sto generalno konsulting i nije. Sve pare i sav assets koji imas dobijas kroz pruzanje usluga dok svi rezultati rada ostaju u vlasnistvu i psotaju deo asseta klijenta cime se pravda razlika u ceni izmedju lokalnog i spoljnog resursa (plus jos sijaset sitnica). Medjutim ovakvo gornje ponasanje konulstanta je posledica nezdravih odnosa u konsultantskoj firmi i verovatno licnog prihodnog modela i interne konkurencije za projekte baziranog na realizovanim billing satima (umesto na kvalitetu posla), biti etican je super ali ako se etika ne gaji kao deo procesa u firmi onda ga praktikujes samo i iskljucivo na svoju stetu (i stetu svoje porodice).
[ Nedeljko @ 01.09.2010. 10:33 ] @
Fiber se može ostvariti i kao dizajn patern (tzv. kooperativne funkcije), bez ikakve podrške OS-a. Primer:

Code:
int producer() {
    // ...
    return 2; // Consumer call
    // ...
    return 0; // Exit without consumer calling
}

int consumer() {
    // ...
    return 1; // Producer call
    // ...
    return 0; // Exit without producer calling
}

void start(int state = 1) {
    while(true) {
        if (state == 1) state = producer();
        else if (state == 2) state = consumer();
        else break;
    }
}
[ mmix @ 01.09.2010. 10:45 ] @
Fali ti context ubaci po koju static varijablu
[ Nedeljko @ 01.09.2010. 11:15 ] @
Code:
enum State {
    EXIT,
    PRODUCER,
    CONSUMER
};

typedef struct Args {
    // ...
} *PArgs;

State producer(PArgs args) {
    // ...
    return CONSUMER; // Consumer call
    // ...
    return EXIT; // Exit without consumer calling
}

State consumer(PArgs args) {
    // ...
    return PRODUCER; // Producer call
    // ...
    return EXIT; // Exit without producer calling
}

void start(State state = PRODUCER) {
    PArgs args;
    
    // Initialization
    
    while(true) {
        if (state == PRODUCER) state = producer(&args);
        else if (state == CONSUMER) state = consumer(&args);
        else break;
    }
}


Je li sada bolje?
[ mmix @ 01.09.2010. 12:16 ] @
Pa nije, to je shared context, gde je private fiber-local context
[ Nedeljko @ 01.09.2010. 12:54 ] @
Pa, sve to možeš da nabiješ u args i da se održava.
[ mmix @ 01.09.2010. 13:05 ] @
Pa nije, onda jedna rutina vidi privatni context druge ma zezam se bre, nego si reko da moze bez OSa, moze al onda daj kompletno resenje jer ovako mozemo doveka mada realno ni ovo nije kompletno jer dva fibera mogu na dva core-a da idu istovremeno sto tvoj coop patern ne radi niti bilo koji kompajler to moze da optimizuje u paralelizam jer vuces shared context pre kojeg je uvezan scheduler (a sve i da moze da ga paralelizuje uradice to preko threadova), da napravis bas kompletno resenje imas podosta posla, a sto bi to radio ako ti os vec daje taj feature.
[ Nedeljko @ 01.09.2010. 13:48 ] @
Po čemu su to onda fiberi, ako trče na dva jezgra? Valjda je poenta da se fiberi izvršavaju sekvencijalno (pa sinhronizacija nije potrebna), a ne u razdeljenom/paralelnom vremenu, jer su to onda niti.
[ milanche @ 02.09.2010. 05:27 ] @
Citat:
Evo jednog relativno friskog primera, koji sam cuo od poznanika koji radi u jednoj velikoj i poznatoj IT firmi...

Dakle, u pitanju je neki trivijalni kod koji treba da proveri da li je neki hw. resurs zauzet i da to prikaze u Win32 dijalogu...

Elem, kod je radio "konsultant", dakle jedna od njuski placenih po satu...

Kako je to uradio? Glavni message thread za dijalog i jos jedan koji ima periodicni timer koji ocitava hw, i EVENTUALNO neki watchdog koji bi ubio I/O nit ako hardver blokira? Ne ne ne...

Cova je nakrljao FIBERE unutra, sa sve masom SwitchToFiber() poziva bez ikakve realne potrebe... dakle, 90% njegovog koda je apsolutno nepotrebno djubre koje nicemu ne sluzi osim da sta? Pa da se naplati :)

Boga pitaj koliko potencijalnih problema taj kod ima, da ne pricamo o totalno ubijenim performansama... ali eto, baja je naplatio vise svoju "konsultaciju"...

To je slika i prilika danasnjih velikih IT firmi koje saradjuju sa "konsultantima" - dobija se bloatovani kod koji je naduven kako bi se uzelo sto vise para - performanse i sigurnost su poslednja rupa na svirali u takvim jednacinama.

Ako koristite neki komercijalni paket koji vam blokira masinu i vucara se kao prebijeno pseto... cesto je razlog za to sto ga je pisao neki "konsultant" koji je nabijao sebi cenu.


E, bas me nasmejaste...(iako je mali off-topic)

Od sve raje, pocevsi od megalomana CEO-a, raznih wanna-be-techie iz marketinga, preko nesposobnih menadzera, i gomile pocetnika programera,
bas nadje konsultante kao ceste krivce sto je komercijalni paket spor i blokira masinu.

Cak i ako predpostavimo da su svi konsultanti zapravo "konsultanti" :

Konsultanti se u normalnim okolnostima zovu da dizajniraju ili clear-cut-out-task koji treba da se upasuje u neku postojecu infrastrukturu,
sa jasno zadatim zahtevima za performanse, ili da adaptiraju postojecu kompanijsku infrastrukturu koda za neki poseban slucaj, ili za side-business
poslove za koje se firmi ne isplati da na duze staze zaposljava full-time.

Izuzetno je retko da konsultant nesto radi a da apsolutno niko u celoj firmi apsolutno pojma nema sta on to radi, i da li je to dobro napisano.

Citat:
mmix: Hehe, Ivane, nisi vise IN covece, zar nisi cuo "fibers are the new threads" ;)

Al' to za konsultante je vise nego tacno, znam, bio sam jedan. :) Ali sve je to posledica mentaliteta i pritisaka u tim consulting firmama, to vise lici na operacije javne kuce nego na sustainable business, sto generalno konsulting i nije. Sve pare i sav assets koji imas dobijas kroz pruzanje usluga dok svi rezultati rada ostaju u vlasnistvu i psotaju deo asseta klijenta cime se pravda razlika u ceni izmedju lokalnog i spoljnog resursa (plus jos sijaset sitnica). Medjutim ovakvo gornje ponasanje konulstanta je posledica nezdravih odnosa u konsultantskoj firmi i verovatno licnog prihodnog modela i interne konkurencije za projekte baziranog na realizovanim billing satima (umesto na kvalitetu posla), biti etican je super ali ako se etika ne gaji kao deo procesa u firmi onda ga praktikujes samo i iskljucivo na svoju stetu (i stetu svoje porodice).


Sta god radili unutar konsultantske firme, kod klijenata sede 'sito i reseto' - u normalnoj klijentskoj firmi postoji najmanje jedan menadzer koji
nadgleda dizajn, a cesto pride i obican dizajner koji taj kod treba da preuzme i kasnije odrzava. Tek ako i samo ako su pomenuta dvojica slepci
(moram da priznam da sam vidjao po jednog u takvom paru da je debil, ali nikada obojicu), konsultant moze da dozvoli sebi luksuz da bude i on debil, kvarnjak, naopak tip i stetocina...i to donekle...dok QA ne primeti vec sledeci dan da je nesto nedopustivo sporo, nefunkcionalno, itd.

Prosto ne mogu da zamislim scenario u kojem je kriv konsultant, a ne neko ko mu je zvanicno primio rad.