[ Pobierz całość w formacie PDF ]

działu. Innym tego rodzaju specyfikatorem jest specyfikator , wymagający przeka-
zania wskaznika do ciągu bajtowego zakończonego bajtem zerowym. Jeżeli włamywacz
podstawi złośliwie ciąg formatujący zawierający jeden z tych specyfikatorów a do funkcji
nie zostanÄ… przekazane istniejÄ…ce adresy pami¹ci, proces zostanie zatrzymany w wyniku
próby odwoÅ‚ania si¹ do pami¹ci wskazywanej przez przypadkowe wartoÅ›ci znajdujÄ…-
ce si¹ na stosie. Może to spowodować odmow¹ obsÅ‚ugi, przy czym atak tego rodzaju
nie wymaga angażowania żadnych zaawansowanych środków.
W samej rzeczy, już wczeÅ›niej  jeszcze zanim ogół zdaÅ‚ sobie spraw¹ z powagi za-
grożenia  wiadomo było o problemach powodowanych podawaniem specyficznych
ciągów formatujących. Było na przykład powszechnie wiadomo, że przekazanie ciągu
jako parametru jednego z poleceń klienta IRC BitchX powoduje załamanie te-
go programu. Jednak, według informacji, które posiadam, aż do opublikowania exploita
demona WU-FTPD nikt nie zdawał sobie sprawy, że taki błąd można ukierunkować
i wykorzystać do własnych celów.
Niewiele wi¹cej można napisać o zaÅ‚amywaniu procesów za poÅ›rednictwem spreparo-
wanych ciągów formatujących. Istnieją za to dużo ciekawsze i bardziej przydatne meto-
dy wykorzystania tych ciÄ…gów do wÅ‚amywania si¹ do systemów komputerowych.
296 Hack Proofing Your Network. Edycja polska
Odczyt zawartości pamięci
Jeżeli ciÄ…g wynikowy skonstruowany w funkcji jest udost¹pniany na zewnÄ…trz,
atakujący może wykorzystać odpowiednio spreparowany ciąg formatujący do odczyta-
nia zawartoÅ›ci pewnego obszaru pami¹ci. Jest to poważny problem, mogÄ…cy prowadzić
do wycieków wrażliwych informacji. Przykładowo, jeżeli program przyjmuje od klien-
tów informacje uwierzytelniajÄ…ce i nie zeruje tych obszarów pami¹ci, w których byÅ‚y
one przechowywane bezpośrednio po ich wykorzystaniu, błąd ciągu formatującego
może przyczynić si¹ do ich odczytania przez wÅ‚amywacza. Najprostszym sposobem,
jakim dysponuje w tej sytuacji włamywacz, jest zmuszenie funkcji (za pośrednictwem
ciągu formatującego) do skonstruowania ciągu z nieistniejących parametrów. Funkcja od-
czytuje wartości wprowadzane do konstruowanego ciągu bezpośrednio ze stosu. Przy-
kÅ‚adowo, każde wystÄ…pienie specyfikatora w ciÄ…gu formatujÄ…cym b¹dzie zast¹powa-
ne w ciÄ…gu wynikowym 4 bajtami pami¹ci stosu. Taki odczyt pami¹ci jest ograniczony
wyÅ‚Ä…cznie do danych przechowywanych w obszarze pami¹ci stosu.
Możliwe jest jednak również odczytanie zawartoÅ›ci dowolnego obszaru pami¹ci, a to za
sprawÄ… specyfikatora . Jak już wiemy, specyfikator ten zast¹powany jest ciÄ…giem bajtów
zakończonym bajtem zerowym. Ciąg ten jest przekazywany do funkcji w po-
staci adresu pierwszego bajtu ciÄ…gu. AtakujÄ…cy może wi¹c odczytać dowolny obszar pa-
mi¹ci, gdy przekaże do funkcji specyfikator (w ciÄ…gu formatujÄ…cym) oraz
adres interesującego go obszaru. Adres, od którego atakujący chciałby rozpocząć odczyt
powinien zostać umieszczony na stosie; byłoby to konieczne również w przypadku ad-
resu korespondującego ze specyfikatorem . Obecność w ciągu formatującym specy-
fikatora wymusi na funkcji konstruującej ciąg wynikowy odczyt kolejnych bajtów
pami¹ci, od bajtu znajdujÄ…cego si¹ pod adresem podsuni¹tym przez wÅ‚amywacza aż do
pierwszego bajtu zerowego.
Możliwość odczytu dowolnego obszaru pami¹ci jest dla hakerów bardzo atrakcyjna.
Atak tego rodzaju może być łączony z innymi technikami włamaniowymi; zostanie
szczegółowo omówiony w dalszej cz¹Å›ci rozdziaÅ‚u oraz zastosowany w konkretnym
przykładzie demonstrowanym pod koniec rozdziału.
Zapis do pamięci
W treÅ›ci rozdziaÅ‚u już kilkakrotnie pojawiÅ‚a si¹ wzmianka o specyfikatorze . Zada-
niem tego specyfikatora jest oznaczanie długości konstruowanego ciągu w czasie dzia-
Å‚ania programu. ZmiennÄ… korespondujÄ…cÄ… z tym specyfikatorem jest adres. Kiedy funkcja
montujÄ…ca ciÄ…g napotyka w ciÄ…gu formatujÄ…cym specyfikator , pod adresem przeka-
zanym jako parametr korespondujÄ…cy z tym specyfikatorem zapisywana jest liczba zna-
ków skÅ‚adajÄ…cych si¹ na dotychczasowÄ… postać ciÄ…gu wynikowego.
Obecność takiego specyfikatora ma poważny wpływ na bezpieczeństwo, umożliwia on
bowiem modyfikacje pami¹ci programu. Ta cecha specyfikatora jest kluczowa dla
powodzenia ataków wykorzystujących ciągi formatujące i umożliwia wykonanie na kom-
puterze-ofierze dowolnego kodu.
Rozdział 9. f& Ciągi formatujące 297
Metoda pojedynczego zapisu [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • projektlr.keep.pl