Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Buffer Overflows By Example - BIND 8.2.3-REL & ProFTPd 1.2.0rc2

[es] :: C/C++ programiranje :: Buffer Overflows By Example - BIND 8.2.3-REL & ProFTPd 1.2.0rc2

Strane: 1 2

[ Pregleda: 3814 | Odgovora: 20 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

slash

Član broj: 538
Poruke: 38
*.net.hinet.hr



Profil

icon Buffer Overflows By Example - BIND 8.2.3-REL & ProFTPd 1.2.0rc210.11.2001. u 11:01 - pre 273 meseci
Private Release : UNIX System Security Research Labs : final.version[b#3rc2]


==============================================================================
B U F F E R O V E R F L O W S B Y E X A M P L E
BIND 8.2.3-REL & ProFTPd 1.2.0rc2
=============================================[ by slash <[email protected]> ]===



(0x00) U v o d
==============

Evo odlucio sam malo pojasniti bugove u BIND-u te proftpd-u za koje slobodno
mozemo reci da su jedni od najkoristenijih DNS/FTP servisa danas. Preporucujem
ovaj tekst svatkom tko zna C ili se jednostavno bavi hackingom kako bih shvatili
gdje se nalazi bug, ili u drugom slucaju kako se nebi sve svelo na jednostavno
pokretanje exploita.



(0x01) BIND 8.2.3-REL Bug #1
============================

BIND-8.2.3-REL/src/bin/named/ns_update.c:1636

case T_SIG:
if (dlen < SIG_HDR_SIZE || size < dlen)
return (0);
memcpy(cp1, cp, SIG_HDR_SIZE);
size -= SIG_HDR_SIZE;
cp += SIG_HDR_SIZE;
cp1 += SIG_HDR_SIZE;
n = dn_expand(msg, eom, cp, (char *)cp1, size);
if (n < 0 || n + SIG_HDR_SIZE > dlen)
return (0);
cp += n;
n1 = dlen - n - SIG_HDR_SIZE;
n = strlen((char *)cp1) + 1;
cp1 += n;
/* #1 */
if (size < n1)
return (0);
memcpy(cp1, cp, n1);
cp1 += n1;
return (cp1 - cp1init);

Ova funkcija je zaduzena za procesiranje T_SIG "resouce records"-a unutar
UPDATE paketa. Buffer overflow se dogadja zato sto dolazi do asinkronizacije
pointera `cp1' i variable `size'. `cp1' je pointer u data buffer u koji se pise
kod procesiranja paketa a `size' je broj preostalih, neiskoristenih byteova
unutar buffera. U ovom slucaju autor je je zaboravio oduzeti broj byteova koji
se upisuju u buffer (putem funkcije dn_expand) od variable `size'. Ovo nam
omogucuje da prepisemo buffer sa 1025 byta (MAXDNAME) minus par byteova zbog
memcpy.

Da bi ispravili bug moramo kod oznake #1 unijeti sljedecu liniju:

size -= n;




(0x02) BIND 8.2.3-REL Bug #2
============================

BIND-8.2.3-REL/src/bin/named/ns_update.c:1655

case T_NXT:
n = dn_expand(msg, eom, cp, (char *)cp1, size);
if (n < 0 || (u_int)n >= dlen)
return (0);
size -= n;
/* #1 */
cp += n;
n1 = dlen - n;
n = strlen((char *)cp1) + 1;
cp1 += n;

if ((*cp & 0x80) == 0) {

if (n1 < 4 || n1 > 16)
return (0);
}
if (n1 > size)
return (0);
memcpy(cp1, cp, n1);
cp1 += n1;
return (cp1 - cp1init);

Ovdje autori BIND-a grijese ne znajuci svrhu svog API-a. Funkcija `dn_expand'
vraca broj byteova za koliko je povecan "processing pointer". Ali moze pisati
samo `size' byteova u uotput buffer, koji je zadan pointerom `cp1'. Ipak `size'
se smanjuje zbog pogresne vrijednosti (broja byteova za koliko se pomaknuo "source
pointer"), dok se pointer `cp1' krece normalno. Ovo moze dovesti do buffer overflowa
u kojem slucaju mozemo prepisati MAXDNAME byteova izvan buffera.

Ovi overflowi su interesantni, ali ne i korisni (osim u nekim slucajevima kad
imamo arhitekture sa razlicitim "stack layout"-om, ili imamo privilegije za
izdavanje UPDATE paketa itd.).



(0x02) ProFTPd 1.2.0rc2
=======================

proftpd-1.2.0rc2/modules/mod_ls.c:333

char *p = nameline + strlen(nameline);
...
snprintf(p, sizeof(nameline) - strlen(nameline) - 4, " -> %s", l);

Gdje je nameline buffer na stacku.

char nameline[MAXPATHLEN + MAXPATHLEN + 128] = {'\0'};

Problem se manifestira ako je strlen (nameline) > (sizeof (nameline) - 3)
zato jer parametar duljine kod snprintf funkcije postaje negativan, te se
ponasa kao normalna sprintf funkcija. Iako nije moguce postici velicinu
buffera vecu od 124 bytea, ovaj bug pokazuje da "sign conversion" bugovi
jos uvijek postoje unutar popularnih programa i danas.



(0x02) Z a k lj u c a k
=======================

U ovom tekstu sam zelio pokazati koliko je bitno citati kod programa pa i
svog po nekoliko puta, jer kod programa koji koriste puno funkcija cesto
dolazi do zabune da ni sami autori neznaju svrhu svojih API poziva.


Shouts: predator, sirius, random, #!/bin/zsh .


Unix System Security Research Labs
slash - 14. Listopad anno 2000 (18:04pm)
[email protected] / [email protected] / [email protected]
"Use the source Luke" - unknown
Freelance security consultant -
UNIX Administrator -
www.avalon.hr - [email protected]
 
Odgovor na temu

stinger
Luka Gerzic
DELTA M, IT Department
DELTA M HQ

Član broj: 126
Poruke: 1099
*.drenik.net

ICQ: 57419599
Sajt: www.gerzic.net


Profil

icon Re: Buffer Overflows By Example - BIND 8.2.3-REL & ProFTPd 1.2.0rc210.11.2001. u 13:06 - pre 273 meseci
veoma lepo obrazlozeno... :)
 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
*.racasse.se

Sajt: dejan.lekic.org


+2 Profil

icon Re: Buffer Overflows By Example - BIND 8.2.3-REL & ProFTPd 1.2.0rc213.11.2001. u 14:47 - pre 273 meseci
Nadam se da si napisao patch-eve za sve to sto si nabrojio i poslao BIND timu... Interesuje me ako si im poslao to, kako su reagovali - tj. sta oni kazu na to.


Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

slash

Član broj: 538
Poruke: 38
*.iskon.hr



Profil

icon Re: Buffer Overflows By Example - BIND 8.2.3-REL & ProFTPd 1.2.0rc213.11.2001. u 19:53 - pre 273 meseci
Citat:
leka je napisao:
Nadam se da si napisao patch-eve za sve to sto si nabrojio i poslao BIND timu... Interesuje me ako si im poslao to, kako su reagovali - tj. sta oni kazu na to.



patcheve sam napisao, ali BIND dev team nisam mejlao iz jednostavnog razloga -- ne pregovaram s vendorima. Podrzavam non-discloasure (http://anti.security.is) i svoje bugove i exploite ostavljam za sebe, jer ih na kraju i pisem samo za sebe. Sebicno ? Mozda...




Freelance security consultant -
UNIX Administrator -
www.avalon.hr - [email protected]
 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
*.racasse.se

Sajt: dejan.lekic.org


+2 Profil

icon Re: Buffer Overflows By Example - BIND 8.2.3-REL & ProFTPd 1.2.0rc214.11.2001. u 12:49 - pre 273 meseci
Da, sebicno je (po meni).
Ako koristis GNU software i ako znas da napises patch onda je zaista sebicno da patch koji si napisao ne posaljes. Na kraju krajeva, da tako ne radi narod sirom sveta nebi ni bilo tako rapidnog razvoja OpenSource aplikacija.

Na nesrecu, mnogo programera, ima svoje uvrnute stavove i ne razmislja o tome da sami uzivaju blagodeti koje su stvorene u OpenSource zajednici.

Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
*.racasse.se

Sajt: dejan.lekic.org


+2 Profil

icon Re: Buffer Overflows By Example - BIND 8.2.3-REL & ProFTPd 1.2.0rc214.11.2001. u 12:50 - pre 273 meseci

Pogotovo je sebicno ako OVDE napises (maltene) patch i izgubis silno vreme pisuci onaj tekst gore, isto toliko vremena si mogao da odvojis za par diff-ova... Zar ne?
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

Dusan Marjanovic
Consultant, SAS
Beograd

Član broj: 59
Poruke: 1290
195.252.103.*

Jabber: dusanm@gmail.com
ICQ: 84621598
Sajt: marjanovic.net


+6 Profil

icon Re: Buffer Overflows By Example - BIND 8.2.3-REL & ProFTPd 1.2.0rc214.11.2001. u 22:01 - pre 273 meseci
Citat:
leka je napisao:

Pogotovo je sebicno ako OVDE napises (maltene) patch i izgubis silno vreme pisuci onaj tekst gore, isto toliko vremena si mogao da odvojis za par diff-ova... Zar ne?

mislim da nije stvar u tome da coveka mrzi...vec se jednostavno pridrzava politike koju propagira sajt anti.security.is. A kad na sajtu procitas obrazlozenje takve politike, sa jedne strane i jeste tako.
VMware VCP/Microsoft MCSE 2003/HP ASE
 
Odgovor na temu

slash

Član broj: 538
Poruke: 38
*.net.hinet.hr



Profil

icon Re: Buffer Overflows By Example - BIND 8.2.3-REL & ProFTPd 1.2.0rc220.11.2001. u 13:35 - pre 273 meseci
Kao prvo mislim da je odluka na meni gdje cu sto postati i dali cu obavijestiti vendore, pa zato molim da mi ne predbacujete sto svoje stvari drzim prvenstveno za sebe. Cijenim vase kritike ali mislim da bi vi isto trebali cijeniti cinjenicu da sam svoj rad odlucio podjeliti
upravo s vama, jer svrha mojeg teksta nije da objavljujem bugove kako bi netko napisao exploite, vec
da svi zajedno nesto naucimo a mislim da se i cijeli ovaj forum svodi na to. Zasto objaviti tekst u
kojem se opisuje bug a ne priloziti patch ? Pisanje patcha ostavljam spretnima s vise vremena. Moje vrijeme ipak -- kosta.


pozdrav,

sliz-ash
Freelance security consultant -
UNIX Administrator -
www.avalon.hr - [email protected]
 
Odgovor na temu

Vojislav Milunovic

Član broj: 25
Poruke: 2117
*.fwi.com



+1 Profil

icon Re: Buffer Overflows By Example - BIND 8.2.3-REL & ProFTPd 1.2.0rc221.11.2001. u 02:34 - pre 273 meseci
Citat:
slash je napisao:
Pisanje patcha ostavljam spretnima s vise vremena. Moje vrijeme ipak -- kosta.


A sto lupi vako jeboga ti? Patch za ovo sto si naveo ne bi ti odneo vise od 2min.
 
Odgovor na temu

stinger
Luka Gerzic
DELTA M, IT Department
DELTA M HQ

Član broj: 126
Poruke: 1099
*.drenik.net

ICQ: 57419599
Sajt: www.gerzic.net


Profil

icon Re: Buffer Overflows By Example - BIND 8.2.3-REL & ProFTPd 1.2.0rc221.11.2001. u 12:16 - pre 273 meseci
Citat:
slash je napisao:
Kao prvo mislim da je odluka na meni gdje cu sto postati i dali cu obavijestiti vendore, pa zato molim da mi ne predbacujete sto svoje stvari drzim prvenstveno za sebe. Cijenim vase kritike ali mislim da bi vi isto trebali cijeniti cinjenicu da sam svoj rad odlucio podjeliti
upravo s vama, jer svrha mojeg teksta nije da objavljujem bugove kako bi netko napisao exploite, vec
da svi zajedno nesto naucimo a mislim da se i cijeli ovaj forum svodi na to. Zasto objaviti tekst u
kojem se opisuje bug a ne priloziti patch ? Pisanje patcha ostavljam spretnima s vise vremena. Moje vrijeme ipak -- kosta.


Goody, it's true :)
 
Odgovor na temu

Gojko Vujovic
Amsterdam, NL

Administrator
Član broj: 1
Poruke: 13651



+165 Profil

icon Re: Buffer Overflows By Example - BIND 8.2.3-REL & ProFTPd 1.2.0rc221.11.2001. u 12:49 - pre 273 meseci
I ja se slažem da ne treba da im piše patch ako ga ne plate, ali i da ne objavljuje javno gotov exploit, i dobro je što je tako i postupio.

A ovo je zaista velikodušno što je slash odlučio da objavi ovakve podatke upravo na ES-u i molim ostale da to poštuju.

Slash, good work, kao i uvek :)


 
Odgovor na temu

Vojislav Milunovic

Član broj: 25
Poruke: 2117
165.139.17.*



+1 Profil

icon Re: Buffer Overflows By Example - BIND 8.2.3-REL & ProFTPd 1.2.0rc221.11.2001. u 17:15 - pre 273 meseci
A sigurno ima patch vec za to. Sigurno da ima cim su vec objavili verziju 9. Ako u 9eci toga ima onda znaci da je bug jos neotkriven ali ako je bug ispravljen onda sigurno vec ima patch.
 
Odgovor na temu

BoyScout
Zagreb, Hrvatska

Član broj: 579
Poruke: 21
*.cmu.carnet.hr



Profil

icon Re: Buffer Overflows By Example - BIND 8.2.3-REL & ProFTPd 1.2.0rc229.04.2003. u 20:49 - pre 255 meseci
BTW ljudi, ne znam da li ste znali, ali ovaj tekst nije pisao slash niti je slash otkrio te bugove.
--BoyScout
 
Odgovor na temu

BobMarley
Vedran B
Bologna

Član broj: 148
Poruke: 1161
*.net.hinet.hr

ICQ: 61882680


+1 Profil

icon Re: Buffer Overflows By Example - BIND 8.2.3-REL & ProFTPd 1.2.0rc230.04.2003. u 00:14 - pre 255 meseci
pa ljepo pise gore da je on napisao tekst, da li imas mozda neku originalniju verziju kada vec prozivas ?

BobMarley (me) ...the legend
 
Odgovor na temu

BoyScout
Zagreb, Hrvatska

Član broj: 579
Poruke: 21
*.cmu.carnet.hr



Profil

icon Re: Buffer Overflows By Example - BIND 8.2.3-REL & ProFTPd 1.2.0rc230.04.2003. u 00:27 - pre 255 meseci
Imam!
Evo je:

http://161.53.51.222/proof/scut.txt

To je original

Usporedite to sa slashevom verzijom, i vidjet cete da je 'njegov' tekst 1:1 prijepis od Scuta.

Evo, jos jednom prilazem slashovu kopiju.

http://161.53.51.222/proof/slash.txt

S tim da morate uzeti u obzir da je Scut jedan od vecih strucnjaka iz vrlo hvaljene security grupe team-teso iliti 7350 koja se bavi sigurnosnim istrazivanjima, a sigurno vam je poznato da su puno exploita napisali oni.

Prema Scutovim rijecima, slash je odnekud dobio njihovu privatnu verziju teksta koja je nekako procurila, a onda ju je slash preveo i napisao da je to njegovo i da je on otkrio te bugove. Molim komentare.

--BoyScout
 
Odgovor na temu

6544616a006e
Nadej Kilec
Bukulja

Član broj: 10080
Poruke: 44
*.telia.com

Sajt: www.gnu.org


Profil

icon Re: Buffer Overflows By Example - BIND 8.2.3-REL & ProFTPd 1.2.0rc230.04.2003. u 02:07 - pre 255 meseci
Ma dobro, svi znamo da su hakeri uglavnom skriberi...
---
GNU's Not UNIX
 
Odgovor na temu

6544616a006e
Nadej Kilec
Bukulja

Član broj: 10080
Poruke: 44
*.telia.com

Sajt: www.gnu.org


Profil

icon Re: Buffer Overflows By Example - BIND 8.2.3-REL & ProFTPd 1.2.0rc230.04.2003. u 02:11 - pre 255 meseci
Mene je zapravo mrzelo da tražim original na NET-u, mada sam znao da postoji, jer sam ga davno pročitao... Glupo je gubiti vreme na dokazivanje lamerizma naroda...

slash-a treba poštovati svejedno, znate zašto - čovek je ipak potrošio silno vreme prevodeći!

Čudi me samo da niko nije komentarisao ovo "otkriće" :)

Hehe, da li treba davati još neme mnogo poznatije skribere kod nas? - Evo jednog, svima dobro znanog - Dejan Ristanović. Čovek je, kako je moj pokojni deda znao da veli, "prepisao Boga Oca"!

Svako može da to i dokaže.
---
GNU's Not UNIX
 
Odgovor na temu

6544616a006e
Nadej Kilec
Bukulja

Član broj: 10080
Poruke: 44
*.telia.com

Sajt: www.gnu.org


Profil

icon Re: Buffer Overflows By Example - BIND 8.2.3-REL & ProFTPd 1.2.0rc230.04.2003. u 02:15 - pre 255 meseci
Leko, jedna ispravka: pišući i prevodeći ... i nauči da koristiš naša slova na Linux-u! (Dragiša čitaš li?)

Citat:
leka:

Pogotovo je sebicno ako OVDE napises (maltene) patch i izgubis silno vreme pisuci onaj tekst gore, isto toliko vremena si mogao da odvojis za par diff-ova... Zar ne?


---
GNU's Not UNIX
 
Odgovor na temu

BobMarley
Vedran B
Bologna

Član broj: 148
Poruke: 1161
*.net.hinet.hr

ICQ: 61882680


+1 Profil

icon Re: Buffer Overflows By Example - BIND 8.2.3-REL & ProFTPd 1.2.0rc230.04.2003. u 12:58 - pre 255 meseci
hehe ... jebiga, u lazi su kratke noge :)

a ko kaze da nije scut prepisao od Slasha ? :))))




BobMarley (me) ...the legend
 
Odgovor na temu

BobMarley
Vedran B
Bologna

Član broj: 148
Poruke: 1161
*.net.hinet.hr

ICQ: 61882680


+1 Profil

icon Re: Buffer Overflows By Example - BIND 8.2.3-REL & ProFTPd 1.2.0rc230.04.2003. u 12:59 - pre 255 meseci
Citat:
Gojko Vujovic:
I ja se slažem da ne treba da im piše patch ako ga ne plate, ali i da ne objavljuje javno gotov exploit, i dobro je što je tako i postupio.

A ovo je zaista velikodušno što je slash odlučio da objavi ovakve podatke upravo na ES-u i molim ostale da to poštuju.

Slash, good work, kao i uvek :)




Gojko se vec ufurao :) "kao i uvek" :)
Leka isto tako

BobMarley (me) ...the legend
 
Odgovor na temu

[es] :: C/C++ programiranje :: Buffer Overflows By Example - BIND 8.2.3-REL & ProFTPd 1.2.0rc2

Strane: 1 2

[ Pregleda: 3814 | Odgovora: 20 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.