W^X
W^X (wymawiane W xor X) – technika związanej z bezpieczeństwem informatycznym, obecna w systemie operacyjnym OpenBSD. W^X po raz pierwszy pojawiła się w systemie OpenBSD w wersji 3.3.
Szczegóły techniczne
edytujW^X 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 oznaczanie 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ę w danej stronie pamięci. W przypadku procesorów zgodnych z 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.