Dostałem podziękowanie od Embarcadero/Borland za zgłoszony błąd
Sat, 11 March 2017
Otrzymałem odpowiedż od Embarcadero w sprawie ostatnio odkrytego przeze mnie błędu w funkcjach z rodziny scanf() manifestującego się przy wczytywaniu liczby do zmiennej typu char za pomocą specyfikator "%hhu". Sprawę dokładniej opisałem w artykule (swoją drogą artykuł dzisiaj zaktualizowałem o ciekawy przypadek w którym nadpisujemy bajt 0, który oznacza koniec ciągu i w ten sposób uzyskujemy wypisane na ekranie tajne hasło-wzorzec):
https://lukashp.pl/Hacking/Hack-Artykuly/Odkrycie_Integer_overflow_w_funkcjach_z_rodziny_scanf_w_MinGW_Cygwin_Embarcadero_C_i_innych_srodowiskach_przy_wczytywaniu_liczby_do_char_a
Embarcadero stanęło na wysokości zadania i zajęło się sprawą. W przyszłej wersji kompilatora błąd już nie będzie występował.
Thanks. Looks well worth fixing, and we'll do so in an upcoming release.
Have you managed to do anything nefarious with this? One thing I tried to do, and could not do, is overwrite an arbitrary amount of data - say with an input string. So I can get a few bytes overwritten on the stack, but not much.
Thankyou again for the email!
David M.
Sprawę zgłosiłem również do GNU C Compiler, jednak Ci odesłali mnie (i słusznie) do MinGW twierdząc, że to po ich stronie. MinGW jednak stwierdziło, że nic nie może zrobić w tej sprawie, bo problem leży w zamkniętej bibliotece Microsoftu (MSVCRT).
Do zespołu Cygwina również próbowałem sprawę zgłosić, ale straciłem cierpliwość po pół godzinie szukania na jaką listę malingową mam to zrobić (wysłałem na tą najbardziej prawdopodobną, nie otrzymałem żadnego potwierdzenia, ani zwrotki).
Podobne weblog:
- Odkrycie: Integer overflow w funkcjach z rodziny scanf() w MinGW, Cygwin, Embarcadero C i innych środowiskach przy wczytywaniu liczby do char'a
- Discovery: Integer overflow in functions from scanf() family in MinGW, Cygwin, Embarcadero C and other environments at loading a number to char variable
- Embarcadero wypuszcza hotfixa do toolchaina z powodu odkrytego przeze mnie błędu; z podziękowaniami :)
-
Język C: Czasochłonne błędy przez które
ludzieprogramiści skaczą z mostów – część 1