LoadLibrary, isang layer para sa paglo-load ng mga Windows DLL sa mga Linux application

Tavis Ormandy (Tavis ormandy), isang security researcher sa Google na bumubuo ng proyekto Loadlibrary, na naglalayong i-port ang mga DLL na pinagsama-sama para sa Windows para magamit sa mga Linux application. Ang proyekto ay nagbibigay ng layer library kung saan maaari kang mag-load ng DLL file sa PE/COFF na format at tawagan ang mga function na tinukoy dito. Ang PE/COFF bootloader ay batay sa code ndiswrapper. Code ng proyekto ipinamahagi ni lisensyado sa ilalim ng GPLv2.

Pinangangalagaan ng LoadLibrary ang paglo-load ng library sa memorya at pag-import ng mga umiiral nang simbolo, na nagbibigay sa Linux application ng dlopen-style na API. Maaaring i-debug ang plug-in code gamit ang gdb, ASAN at Valgrind. Posibleng ayusin ang executable code sa panahon ng pagpapatupad sa pamamagitan ng pagkonekta ng mga hook at paglalagay ng mga patch (runtime patching). Sinusuportahan ang exception handling at unwinding para sa C++.

Ang layunin ng proyekto ay ayusin ang scalable at mahusay na distributed fuzzing testing ng mga DLL library sa isang Linux-based na kapaligiran. Sa Windows, hindi masyadong mahusay ang pag-fuzzing at coverage testing at kadalasang nangangailangan ng pagpapatakbo ng hiwalay na virtualized na instance ng Windows, lalo na kapag sinusubukang suriin ang mga kumplikadong produkto gaya ng antivirus software na sumasaklaw sa kernel at user space. Gamit ang LoadLibrary, naghahanap ang mga mananaliksik ng Google ng mga kahinaan sa mga video codec, virus scanner, data decompression library, image decoder, atbp.

Halimbawa, sa tulong ng LoadLibrary na-port namin ang Windows Defender antivirus engine para tumakbo sa Linux. Ang pag-aaral ng mpengine.dll, na bumubuo sa batayan ng Windows Defender, ay naging posible na pag-aralan ang isang malaking bilang ng mga sopistikadong processor para sa iba't ibang mga format, mga file system emulator at mga interpreter ng wika na posibleng magbigay ng mga vector para sa maaari mga pag-atake.

Ginamit din ang LoadLibrary upang makilala malayuang kahinaan sa Avast antivirus package. Kapag pinag-aaralan ang DLL mula sa antivirus na ito, ipinahayag na ang pangunahing privileged na proseso ng pag-scan ay may kasamang ganap na JavaScript interpreter na ginamit upang tularan ang pagpapatupad ng third-party na JavaScript code. Ang prosesong ito ay hindi nakahiwalay sa isang sandbox environment, hindi nagre-reset ng mga pribilehiyo, at nagsusuri ng hindi na-verify na external na data mula sa file system at naharang na trapiko sa network. Dahil ang anumang kahinaan sa masalimuot at hindi protektadong prosesong ito ay maaaring humantong sa malayuang kompromiso ng buong system, isang espesyal na shell ang binuo batay sa LoadLibrary avscript upang suriin ang mga kahinaan sa Avast antivirus scanner sa isang Linux-based na kapaligiran.

Pinagmulan: opennet.ru

Magdagdag ng komento