![image](https://webcf.waybackmachine.org/web/20230607172946im_/https://habrastorage.org/webt/w8/_i/iy/w8_iiy69_hqn6ax1e_8zipqbjvy.jpeg)
Уже достаточно давно баги, связанные с неправильным разыменованием нуля, были излюбленной целью эксплойта при попытках вторжения в ядро. Ещё в те времена, когда ядро могло без ограничений обращаться к пользовательскому пространству в памяти, а программы из пользовательского пространства могли отображаться на нулевую страницу, имелось множество лёгких способов эксплуатировать такие баги. Правда, со временем стали применяться современные техники предотвращения эксплойтов, в частности, SMEP и SMAP, а также вошла в обиход программа
mmap_min_addr
, не позволяющая непривилегированным программам отображать содержимое на нижние адреса. Поэтому баги, связанные с разыменованием нуля, в современных версиях ядра, как правило, не считаются особо опасными. В этом посте проиллюстрировано, как сделать эксплойт, позволяющий усомниться в безобидности этих багов. Недооценка их важности с точки зрения безопасности может дорого вам обойтись.