W^X
Z Wikipedii
W^X (wymiawiane W xor X) – to nazwa techniki związanej z bezpieczeństwem informatycznym, obecnej w systemie operacyjnym OpenBSD. Technika W^X po raz pierwszy pojawiła się w systemie OpenBSD w wersji 3.3.
Spis treści |
[edytuj] Szczegóły techniczne
W^X jest techniką ochrony pamięci, która uniemożliwia wykonanie kodu znajdującego się na stronach pamięci posiadających ustawiony atrybut W (ang. Writeable - zapisywalny). Atrybut ten umożliwia modyfikację zawartości stron pamięci. Nazwa XOR odnosi się do operacji logicznej - alternatywy wykluczającej, i oznacza konieczność wyboru pomiędzy możliwością wykonywania kodu maszynowego znajdującego się na danej stronie pamięci, a możliwością modyfikacji jej zawartości.
Sytuacją wymagającą specjalnego potraktowania w trakcie prac zmierzających do zaimplementowania techniki W^X, była cecha architektury IA-32, która uniemożliwia oznaczenie stron pamięci w tablicy stron jednostki MMU, jako służących jedynie do odczytu. Atrybut R (ang. Readable - odczytywalny) umożliwia zarówno odczyt danych i jak wykonanie kodu znajdującego się danej stronie pamięci. W przypadku procesorów zgodnych a architekturą IA-32 cele techniki W^X są osiągane przy użyciu mechanizmu segmentacji pamięci, standardowo niewykorzystywanego w nowoczesnych systemach typu Unix[1].
Większość systemów mikroprocesorowych, w tym także nowszych mikroprocesorów serii x86 produkowanych przez firmę AMD (seria AMD64), posiada możliwość oznaczenia stron pamięci, jako pozbawionych prawa do wykonania kodu.
Wprowadzenie techniki W^X w systemie OpenBSD wiązało się ze zmianami w kompilatorze języka C (gcc), umożliwiającymi tworzenie programów, przeznaczonych dla systemów operacyjnych posiadających aktywną funkcjonalność W^X. Modyfikacje dotyczyły m.in. formatu i zawartości niektórych sekcji plików ELF oraz obsługi trampolin.