- Hunger blogja
- A hozzászóláshoz be kell jelentkezni
- 2281 megtekintés
Hozzászólások
kemény
- A hozzászóláshoz be kell jelentkezni
Ez ma az adatbáziskezelők jelszóproblémájának napja ( http://hup.hu/node/115338 )
- A hozzászóláshoz be kell jelentkezni
Nekem nem sikerult reprodukalnom.
mysqld Ver 5.1.61-0ubuntu0.10.10.1-log for debian-linux-gnu on i686 ((Ubuntu)) [Ubuntu 10.10 32 bit - ez ok hogy nem megy]
mysqld Ver 5.1.62-0ubuntu0.11.04.1 for debian-linux-gnu on x86_64 ((Ubuntu)) [Ubuntu 11.04 64 bit - ennek mennie kellene a kiiras alapjan. Frissites nem volt, teljesen alap Ubuntu Server]
--
< huf > sose ertettem h miert kell specialis szo a bunozore, ha szamitogeppel csinalja...
< huf > nemkell se hacker, se cracker se semmi ilyen szo
< huf > fejszes gyilkost se hivjuk favagonak
- A hozzászóláshoz be kell jelentkezni
Ubuntu 12.04: benyelte.
-----
"Egy jó kapcsolatban a társunkat az ő dolgában kell támogatni, nem a miénkben."
rand() a lelke mindennek! :)
- A hozzászóláshoz be kell jelentkezni
probaltam egy ilyet is: mysqld Ver 5.5.12-rel20.3 for Linux on i686 (Percona Server with XtraDB (GPL), Release rel20.3, Revision 118)
nem tunik serulekenynek...
- A hozzászóláshoz be kell jelentkezni
Csak 64 bites sérülékeny, az is csak bizonyos optimalizációval való fordítás esetén.
- A hozzászóláshoz be kell jelentkezni
Intakt.
Server version: 5.5.23-MariaDB-log Source distribution
OpenSUSE 11.4 x86_64
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal
- A hozzászóláshoz be kell jelentkezni
Miért nem cikként küldted be? Már elkezdtem írni... :)
- A hozzászóláshoz be kell jelentkezni
Ubuntu: 8.04-en nem, de 12.04-en ment.
while true; do mysql -u root mysql --password=barmi; let i=$i+1; echo $i; done
- A hozzászóláshoz be kell jelentkezni
Azt tudni, hogy a patch honnét származott eredetileg? (Service unavailable-t dob a link-en lévő hivatkozás a patch-re)
- A hozzászóláshoz be kell jelentkezni
Kösz.
- A hozzászóláshoz be kell jelentkezni
Hát, az emberek 99.5%-a meg nem mondta volna magától, hogy ez hibás.
Régi: return memcmp(hash_stage2, hash_stage2_reassured, SHA1_HASH_SIZE);
Új: return test(memcmp(hash_stage2, hash_stage2_reassured, SHA1_HASH_SIZE))
#define test(A) ((A) ? 1 : 0)
A függvény my_bool-lal tér vissza, ami igazából "char".
A memcmp implementációját nem ismerem, de úgy tűnik időnként 256 többszörösével tér vissza, ami miatt a my_bool false lesz, így beengedik a klienst.
Miután a legutóbbi HUP-Mónika showban kibeszéltek a C nyelvre rakott megjegyzéseimért, ezért most nem írok inkább semmit.
- A hozzászóláshoz be kell jelentkezni
#define test(A) ((A) ? 1 : 0)
Ennek a makrónak a puszta léte bizonyosság, hogy a MySQL-nek ott a helye a dobogón a PHP mellett.
- A hozzászóláshoz be kell jelentkezni
+1
---
pontscho / fresh!mindworkz
- A hozzászóláshoz be kell jelentkezni
Tíz percet molyoltam, míg rájöttem, hogy melyik headerben van a 'test' deklarálva.
Én !!memcmp(...)-t használtam volna, mert a programokat manapság PERL-ben írom és a rengeteg krikszkrakszos izé nem kifejezetten zavar.
Mindenesetre nem értem, hogy hogyan lehet a boolean változó alapértelmezésben "char". A legtöbb helyen int-et használnak, gondolom nem véletlenül. Jó lenne tudni, miféle motiváció vezette őket a "char"-ra.
- A hozzászóláshoz be kell jelentkezni
Az, hogy szerintem a memcmp nem boolean tipusu fuggveny, nem is azzal ter vissza.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal
- A hozzászóláshoz be kell jelentkezni
Es ez nem is az elso.
--
"You're NOT paranoid, we really are out to get you!"
- A hozzászóláshoz be kell jelentkezni
YB, YourSQL, ...
--
zsebHUP-ot használok!
- A hozzászóláshoz be kell jelentkezni
:DD
- A hozzászóláshoz be kell jelentkezni
neeeeeeeeee :)
- A hozzászóláshoz be kell jelentkezni
This flaw was rooted in an assumption that the memcmp() function would always return a value within the range -127 to 127 (signed character).
Erre egyszerűen nem tudok mit mondani. Hogy jön itt egy "feltételezés" egyáltalán szóba? Már a C89 is azt mondta, hogy
The memcmp() function returns an integer greater than, equal to, or less than zero, [...]
- A hozzászóláshoz be kell jelentkezni
Ahogy láttam, Te mindig igyekszel az eredeti szabványokat idecitálni, ellenben a programozók zöme (szerintem) ha egyáltalán, akkor max a manuál alapján gondolkodik. Most megnéztem, nálam mi szerepel erről:
RETURN VALUES
The memcmp() function returns zero if the two strings are identical, oth-
erwise returns the difference between the first two differing bytes
(treated as unsigned char values ....
Nos például ez egy olyan megfogalmazás, amit ha csak sima 7-bites ASCII-ben gondolkodik valaki, akkor simán le lehet [-127,127] -nek fordítani.
- A hozzászóláshoz be kell jelentkezni
Tekintve, hogy a manual is unsigned char-rol beszel, aki 7 bites ASCII-ben gondolkodik, az konkretan... khmm... Az unsigned char az egeszen konkretan nyolc darab bit. Muszaj neki annyinak lennie.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal
- A hozzászóláshoz be kell jelentkezni
"Nos például ez egy olyan megfogalmazás, amit ha csak sima 7-bites ASCII-ben gondolkodik valaki, akkor simán le lehet [-127,127] -nek fordítani."
Raadaskent itt sem 7 bitrol beszelunk, hanem 8, csak a 8. a sign
(unsigned) 7 bit az 0-127
- A hozzászóláshoz be kell jelentkezni
Ezt atgondoltam en is... de ha valaki a manual alapjan dolgozik, akkor valami ilyesmi kod fog szulettni:
unsigned char ret = memcmp(...);
ebbol signed char-t castolni... hat... nem egy eletbiztositas. De lenyegtelen is, mint latjuk, teljesen maskepp tortent az eset.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal
- A hozzászóláshoz be kell jelentkezni
en az int a = memcmp()-re szavaznek. Nalam ugyanis (linuxon):
MEMCMP(3) Linux Programmer's Manual MEMCMP(3)
NAME
memcmp - compare memory areas
SYNOPSIS
#include <string.h>
int memcmp(const void *s1, const void *s2, size_t n);
DESCRIPTION
The memcmp() function compares the first n bytes of the memory areas s1
and s2. It returns an integer less than, equal to, or greater than
zero if s1 is found, respectively, to be less than, to match, or be
greater than s2.
RETURN VALUE
The memcmp() function returns an integer less than, equal to, or
greater than zero if the first n bytes of s1 is found, respectively, to
be less than, to match, or be greater than the first n bytes of s2.
CONFORMING TO
SVr4, 4.3BSD, C89, C99, POSIX.1-2001.
- A hozzászóláshoz be kell jelentkezni
Termeszetesen en is erre szavazok. Azonban a kollega hatarozottan masolt egy olyan manualt, ahol uchar van. Erre reagaltam azt, hogy ha valaki meg egy ilyen manual alapjan is dolgozik, akkor is minimum uchar-ra kell ledefinialni a visszateresi valtozot, mert a char az mar castolas, informaciovesztes.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant. | Gentoo Portal
- A hozzászóláshoz be kell jelentkezni
Az egész szép és jó, csak azt nem értem, hogy hogyan viselkedhet a rendszer sztochasztikusan?
Mármint, hogy ugyanarra a jelszóra mindig más értéket ad vissza a memcpy.
Aki tudja, mesélje el nekem.
- A hozzászóláshoz be kell jelentkezni
Ahogy láttam, Te mindig igyekszel az eredeti szabványokat idecitálni, ellenben a programozók zöme (szerintem) ha egyáltalán, akkor max a manuál alapján gondolkodik
Rosszul teszik.
A FreeBSD-nél legalább nem szaroztak, kértek és kaptak engedélyt a SUSv3 terjesztésére; náluk az (is) a manual.
returns the difference between the first two differing bytes (treated as unsigned char values
Hamis állítás, dokumentációs hiba. A bug pont erről szól, a memcmp() valamilyen "vektorizált" összehasonlítást végez (legalábbis az SSE említéséből erre következtetek, talán tévesen).
Egyébként is, maradva a fenti (téves) dokumentációnál, a két karakter mindegyike 0 és UCHAR_MAX közötti értéket képvisel (határokat beleértve). Matematikai különbségük -UCHAR_MAX (== 0-UCHAR_MAX) és UCHAR_MAX (== UCHAR_MAX-0) között mozog (határokat beleértve). Ezen intervallum tetszőleges (egész) eleme meglehetős eséllyel (a) kívül esik a [-127, 127]-en, (b) ábrázolható int-ként.
Kiegészítés: a linyuksz manuál böngészése halva született ötlet. Nézzük csak, mit mond a "man memcmp" nálam: This page is part of release 3.22 of the Linux man-pages project. A memcmp() implementáció honnan is származik? (a) glibc, kerneltől / man-pages projekttől független fában fejlesztett projekt, (b) gcc, kerneltől / man-pages projekttől független fában fejlesztett projekt. Esélye sincs nem elavulni a man-pages-nek. Ha már "manuált" akarunk böngészni, akkor ott a glibc info, vagy a gcc info.
Akárhogy is, ezeknél a függvényeknél egyszerűen értelmetlen bármi mást, mint a hivatalos szabványt (leginkább SUSv3-at vagy SUSv4-et) nézni. Épeszű platformfejlesztő azt tekinti specifikációnak és azt implementálja, a manual-ra meg vagy jut ideje, vagy nem. (A saját manual-jára sem.)
- A hozzászóláshoz be kell jelentkezni
A mi fedóránk (F16) bugos, nem fut rajta az "exploit". (5.5.18 MySQL Community Server)
Csaba
- A hozzászóláshoz be kell jelentkezni
mint fentebb láthatod, csak 64 bit és bizonyos optimalizációval történő fordítás esetén reprodukálható
- A hozzászóláshoz be kell jelentkezni
Debian testing ugy tunik, nem erintett
Centos sajat forditas: mysqld Ver 5.5.25
nem erintett.
- A hozzászóláshoz be kell jelentkezni
Képzeletbeli esemény : cracker csávó gondolja magában, hogy "indítom a brute force-ot, oszt megyek, tolok egy kávét", majd megnyomja az entert.
Azt az arcot...
- A hozzászóláshoz be kell jelentkezni
Ebben az esetben olyan gyorsan megkapja a
mysql>
promptot, hogy nincs esélye kávézni menni... ;)
- A hozzászóláshoz be kell jelentkezni
Teljesen meg lesz zavarodva, mert ha 10-szer megfuttatja a kódját, 10-szer más ("tört") jelszót kap. Nem fogja tudni, hogy mi történik.
Fuszenecker_Róbert
- A hozzászóláshoz be kell jelentkezni
"cracker csávó"
:(
--
"You're NOT paranoid, we really are out to get you!"
- A hozzászóláshoz be kell jelentkezni