Кіріспе
Компьютерлік есептерде шаттерлік шабуыл - бұл сеанстағы процестер арасындағы қауіпсіздік шектеулерін айналып өту үшін Microsoft Windows операциялық жүйелерінде хакерлер қолданатын бағдарламалау әдісі. Шаттерлік шабуыл Windows-тың хабарламаларды жіберу жүйесіндегі дизайндық кемшілікті пайдаланады, осы арқылы кез келген кодты сол сессияда басқа орындалатын бағдарламаға немесе қызметке енгізуге болады, бұл хабарламалар циклін пайдаланады. Бұл артықшылықтарды арттыруды пайдаландыруға әкелуі мүмкін.
Шолу
Шаттерлік шабуылдар 2002 жылдың тамызында Крис Пейджеттің "Win32 API-дегі дизайн кемшіліктерін артықшылықтарды арттыру үшін пайдалану" атты мақаласын жариялағаннан кейін қауіпсіздік қоғамдастығында қызу әңгімеге айналды. "Шатерлік шабуыл" терминін енгізген бұл мақалада бір қолданбаның басқа қолданбада кездейсоқ кодты орындауы мүмкін процесі түсіндірілді. Бұл болуы мүмкін, өйткені Windows артықшылықтары жоқ қосымшаларға артықшылықтары жоғары қосымшалардың хабарлама циклдеріне хабарламалар жіберуге мүмкіндік береді, ал кейбір хабарламаларда олардың параметрлері ретінде қосымшаның адрестік кеңістігіндегі кері шақыру функциясының мекенжайы болуы мүмкін. Егер шабуылшы өзінің жеке тізбектерін белгілі бір жердегі артықшылықтары жоғары қосымшаның жадына (мысалы, редакциялау қорына шеллкодты жапсыру арқылы) енгізе алса, онда олар шабуылшының тізбектеріне сілтеме жасау үшін орнатылған кері шақыру функциясының параметрлері бар WM TIMER хабарламаларын жібере алады. Осы мақала жарияланғаннан бірнеше аптадан кейін Microsoft жауап беріп, былай деп атап өтті: "Мақалада бұл жағдайдың бар екендігі дұрыс айтылған және оның әсерін дұрыс сипаттайды. Бұл мақаланың қателігі - бұл Windows-тың бір кемшілігі. Шын мәнінде, кемшілік ерекше, ерекше қызметте жатыр. Дизайн бойынша интерактивті үстелдің барлық қызметтері теңдестер болып табылады және бір-біріне сұрау салулар енгізе алады. Нәтижесінде, интерактивті үстелдегі барлық қызметтердің артықшылықтары сол жердегі ең артықшылықты қызметке сәйкес келеді".
Шешімдер
2002 жылдың желтоқсан айында Microsoft Windows NT 4.0, Windows 2000 және Windows XP үшін кейбір пайдалану жолдарын жапқан жапсырма шығарды. Бұл тек ішінара шешім болды, өйткені түзету Windows-пен бірге берілген осы әдісті пайдалана алатын қызметтермен шектелген; негізгі дизайн кемшілігі әлі де бар және оны басқа қосымшаларға немесе үшінші тарап қызметтеріне бағыттауға болады. Windows Vista-да Microsoft бұл мәселені екі жолмен шешуге тырысты: Біріншіден, жергілікті пайдаланушылар енді 0 сессиясына кірмейді, осылайша тіркеліп тұрған пайдаланушының сессиясының хабарлама циклін 0 сессиясына жүктелетін жоғары артықшылықты жүйелік қызметтерден ажыратады. Екіншіден, пайдаланушы интерфейсінің артықшылықтарын оқшаулау (UIPI) деп аталатын жаңа мүмкіндік енгізілді, ол арқылы процестерді әр процеске тұтастығы деңгейін беру арқылы штратерлік шабуылдардан қорғауға болады. Жоғары тұтастық деңгейі бар процеске хабар жіберу әрекеті екі процеске де бірдей пайдаланушы ие болса да, сәтсіз болады. Алайда, UIPI әр түрлі тұтастық деңгейіндегі процестер арасындағы барлық өзара әрекеттесулерге жол бермейді. Бұл артқа қарай үйлесімділік мәселелерін тудырады, өйткені кейбір бағдарламалық жасақтама қызмет кіріп тұрған пайдаланушымен бірдей сессияда жұмыс істейді деген болжаммен жасалған. Осы көзқарасты қолдау үшін Windows Vista және Windows Server 2008 "Интерактивті қызметтерді анықтау" деп аталатын Windows қызметін енгізді, ол интерактивті қызметтер пайда болған кезде құрылған диалогтарға қол жеткізуге мүмкіндік береді. Интерактивті пайдаланушыға диалогтық қоршау көрсетіледі және диалогтық қоршауға кіру үшін 0 сессияға ауысу мүмкіндігі ұсынылады. Бұл мүмкіндік Windows 10 Creators Update-де алынып тасталды.