-
Notifications
You must be signed in to change notification settings - Fork 9
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
libmagic asi nie je uplne najlepsi napad #1365
Comments
Ak by ste to chceli pouzit, tak sa treba zamysliet nad tym Also ten have_ct check moze robit problemy, citujem msooxml z Magdir z libmagic:
|
Na druhu stranu myslis ze fakt si niekto da tu namahu studovat nase zdrojaky aby nasiel utocny vektor a skombinoval 0day libmagicu a custom payload na pristup k nasej DB? Osobne udaje o 3000 ludoch su tazko motivacia pre velke hackerske skupiny a ak by sa o to pokusil nejaky riesitel ja osobne by som mu skor zatlieskal... |
To samozrejme chapem, ze to ma velmi nizku pravdepodobnost. Ale vravim, aj keby nie nieco take, tak staci trapny segfault aby to bolo otravne. Ale to tiez moze byt jedno. Myslel som to skor tak, ze v situacii keby to este nebolo naimplementovane a rozhodujem sa medzi takymto riesenim a tym, ktore je teraz v mastri, tak si vyberiem toto, lebo ten potencialny bezpecnostny problem nema a bude rychlejsie. Ci uz sa to niekomu bude chciet vymenit, to je druha vec. |
Chapem, na druhu stranu ja som zasadny odporca praktik NIH a Security by Obscurity, tak som chcel poskytnut pohlad z druhej strany. Libmagic je zabehnuta kniznica vyvijana 30+ rokov ako sucast cli toolu "file". Existujuce riesenia, ak su osvedcene a stale vyvijane maju hlavnu vyhodu ze mas mensiu sancu narazit na nejaky obskurny edge case bug, ako napr. to co spominas s libreoffice (btw medzi riesitelmi mame nadpriemerne zastupenie linuxakov takze aj libreoffice pouzivatelov). |
Určite nevravím, že teraz všetko treba kodiť od zakladov, ale keď je to takéto jednoduché..
No každopádne sa mi zdá, že viac menej súhlasíme, len sa mierne prikláňame k opačným riešeniam. Ja to nechavam na vas, spravte ako uznate za vhodne, určite menší odpor má nechať to tak, ako to je. Neurazim sa, ak to rovno teraz zavrieme, ak sa teda @ano95 ešte nepustil do implementovania :D |
Nepustil 😄 Stále som úplne nepobral, prečo je libmagic taký "zlý"... Diera sa môže objaviť vo všetkých našich deps a aj v trojsten webe samotnom, alebo mi niečo z toho ušlo? |
No na rozdiel od vacsiny deps toto pracuje priamo s vstupom od pouzivatelov (tj. je to "attack surface", alebo inaksie povedane "vstupna brana" pre utocnika) a je to pisane v C = jazyku v ktorom vedia existovat overflow bugy umoznujuce RCE exploity. |
Aha.. Díky za objasnenie, hneď to dáva väčší zmysel 😅
|
#1332
Pastujem zo slacku:
Pretože libmagic nemá najlepšiu reputaciu, ale aj keby mal, tak je to presne tá jedna vec, ktorá môže byť deravá. Parsovanie vstupov je asi najčastejší attack vector. A to na to stačí aby ten software parsoval jeden konkrétny formát, nie libmagic, ktorý je určený na to, aby pochopil všetky formáty na svete. Okrem toho je to native libka v C. Neexistuje ani šanca, že tam nie sú desiatky RCE. (samozrejme závisí odkiaľ je ten libmagic a kto ho ako kompiluje, kompilátory dnes vedia generovať kadečo, aby sa zabránilo takýmto exploitom, no samozrejme to nie je riešenie)
Takže niekto tam uploadne exploit, payload sa execne v procese toho uwsgi s prístupom do databazy a tak ďalej a tak podobne. Riešení niekoľko: púšťať libmagic v nejakom sandboxe. Toto znie komplikovane, ale verím, že sú na presne takéto účely hotové riešenia. Sandboxy sú ale deravé a my riešime iný (ľahší) problém ako "dostanem súbor, chcem zistiť čo to je", konkrétne chceme zistiť či je súbor PDF alebo nejaký docx alebo xlsx ako pozerám. PDF je trivialne, ma asi 4B magic number na začiatku. docx a xlsx su zipka, takže buď to vie akceptovať ľubovoľné zip (tiež magic number) alebo sa dá pozrieť či sa v tom zipku nachádza súbor so správnym názvom (toto robí aj libmagic pre tieto formaty), nazvy suborov v zip nie su komprimovane. Dokopy asi 10 riadkov pythonu, ktorý bude bezpečnejší, asi rádovo rýchlejší a máme o dependency menej.
A teda ak nie RCE, tak aspoň DOS, čo tiež nie je nejaké super, keď nám niekto bude zhadzovať uwsgi. Chápem, že možno nie sme nejaký top target, ale ten prínos libmagic-u v tejto situácii je zaporny
Proof of concept:
Taketo nieco spolu s kontrolou pripony ma takmer nulovu sancu nefungovat, ak teda niekto aktivne nevymysla subory, ktore prejdu a nie su platne. Tomu samozrejme ale nepomoze ani libmagic.
The text was updated successfully, but these errors were encountered: