Закритий код і вразливості чий млин виграв

Книги: "Створення сайтів" - "Доменні війни". Захист інформації: технічний опис TLS, тестовий серверTLS 1.3. Ресурси: LaTeX

Закритий код і вразливості: чий млин виграв?

млин
Знову доводиться чути від розробників CMS стару пісню: "ми закриваємо вихідний код, тому що там напевно вразливості, а в закритому коді знайти їх складніше". Мова про комерційну CMS, про PHP, а "закривають код", зрозуміло, за допомогою Zend Optimizer.

А ось цікаво розібратися, кому насправді потрібно, щоб код був закритий таким чином. Розбираємось. Наприклад, якщо вразливості є (а вони є), то, напевно, серед них повно шаблонних рішень. Розробники-то, власне, нормальні, як і в інших продуктів, тому потрібно чекати незнищенних SQL injection і далі за списком. Тобто, виявленню та використанню типових уразливостей закритий код не завадив. Не дивно - адже від того, що код закритий, дірки не зникли, їх просто гірше видно.

Але це одна річ. Тепер припустимо, що якийсь кваліфікований спеціаліст-хакер вирішив знайти особливу дірку в даній конкретній CMS. CMS ця не найпоширеніша, а значить, фахівця зацікавила не просто так, але з точки зору атаки конкретного сервера. Тому що заради спортивного інтересу фахівці не працюють по дрібниці, а ось на замовлення – цілком. (Замовлення може бути і "іміджевим", до речі. Для цього сайт-мета має бути дуже відомим.) Фахівець або набуває демо-версії, або купує ліцензію - і, оскільки він спеціаліст, "розкриває для себе" вихідний код і досліджує його . Тобто, особливих перешкод немає, і фахівцю "закритий код" не дуже завадить - все ж таки технології використовуються відомі. Отже, знову концепція “захованих під Zend`омдір” промахується.

А ось "хакери-діти" ("піонери"), яким не всі технології зрозумілі - може їм завадить "закритий код"? Ні, виявляється, що "піонери" або використовують готовий інструментарій, який шукає шаблонні вразливості (від доступності вихідних кодів не залежать), або просто відправляються атакувати інший сервер. Припустити, що цей тип атакуючого буде витрачати добу на ретельний аудит коду однієї CMS, коли на сайтах навколо повно інших спокус, буде м'яко кажучи, дивним - тому що це вже не хакер, що вже виходить, а той самий спец, що працює на замовлення. Тобто “закритий код” тут просто не відіграє ролі, яку йому приписують.

Отже, проти кого працюють “заховані дірки”? Виявляється, що тільки проти добропорядних веб-майстрів та адмінів, які хотіли б поверхово поглянути, що ж там усередині CMS, яку планують поставити на свій улюблений сервер. Хоча б з метою оцінити стиль, прикинути можливості "адаптації", а зовсім не для пошуку дірок. Їх створюються додаткові труднощі, цілком відчутні.

А вигода, природно, у розробників: по-перше, заховані від очей споживача дірки, огріхи та неохайний код; по-друге, можна списувати помилки і проблеми на супутні технології, тому що споживач у вихідний код пальцем ткнути не може; ну і, по-третє, можна і в уста не дмухати, вважаючи що система краще захищена, тому що Zend всі глибокі архітектурні дефекти поховав.

Так ось. Вимагайте відкритих вихідних CMS – простіше буде експлуатувати ПЗ.

Схожі записки:

Далі - думки та дискусії

Коментарі читачів блогу: 23

1. 25th January 2009, 14:49 // ЧитачVadim написав:

2. 25th January 2009, 14:56 //ОлександрВенедюхін відповів:

3. 25th January 2009, 15:11 // Читачarcman написав:

Знову чергова епідемія вибухнула через чергову критичну вразливість у “безпечних” закритих вихідниках віндовс.

Лабораторія Касперського? попереджає про суттєве зростання числа заражень кількома версіями поліморфного мережевого черв'яка Kido.

Net-Worm.Win32.Kido використовує критичну вразливість у Microsoft Windows (MS08-067) для поширення через локальні мережі та знімні носії інформації.

Черв'як відключає функцію System Restore, блокує доступ до сайтів, присвячених інформаційній безпеці, та завантажує на заражені комп'ютери додаткові шкідливі програми.

4. 25th January 2009, 20:12 // ЧитачVadim написав:

>Net-Worm.Win32.Kido використовує критичну вразливість у Microsoft Windows (MS08-067) для поширення через локальні мережі

Забули уточнити, що йдеться про Windows 2003 і молодший. Починаючи з Vista, MS08-067 віддалено не експлуатується для ASLR.

5. 26th January 2009, 12:39 // Читачarcman написав:

все залежить від реалізації, яка прихована.

та й від того, що машина повисне, а не інфікується, користувачеві легше не стане =)

6. 26th January 2009, 20:27 // ЧитачVadim написав:

Все залежить від реалізації, яка прихована. Невірно, все залежить від ASLR, яка документована.

>та й від того, що машина повисне, а не інфікується, користувачеві легше не стане =) Неправильно. По-перше, машина не повисне, по-друге, користувачеві зазвичай легше перезавантажити машину, ніж втратити пароль на webmoney або персонажа в wow.

7. 26th January 2009, 22:38 // Читачarcman написав:

Особливо цікаво, де в моїх 2-х пропозиціях помилки, містер розумник.

8. 26th January 2009, 23:23 // ЧитачVadim написав:

>Це ти молодець =) >Особливо цікаво, де в моїх 2х пропозиціях помилки, містер розумник. Коли аргументи по суті закінчуються, а визнати злив не дозволяє НСВ, відбувається перехід на особи. Типово.

9. 27th January 2009, 15:13 // Читачarcman написав:

Тобто. відповісти за свої слова не здатний, так і запишемо.

Зауважимо, що моя перша відповідь була “за темою” – “Закритий код та вразливості”. Так хто тут флудить?

> Невірно, все залежить від ASLR, яка документована. Як я розумію документації на ASLR у вас немає, виходить? Тобто. це був понт, викликаний зашкалюванням НСВ.

Далі по документації – чи треба вам пояснити, що критичні вразливості (як і помилки в реалізації) у документації не відображені?

> Неправильно. По-перше, машина не повисне. Неправильно =) Доступні лише 3 варіанти: – виняток обробиться всередині процесу і користувач нічого не помітить – процес “вивалиться” – kernel panic & BSOD

Ймовірний діагноз: Проектування свого розпухлого НСВ на оточуючих. (с.м. "психіка" "проекція")

10. 27th January 2009, 15:20 // Читачarcman написав:

До речі, ASLR є і для ХР, але у вигляді стрункого продукту на базі юніксового PaX - BufferShield.

11. 27th January 2009, 19:19 // ЧитачVadim написав:

2 arcman: А відладчик в руки так і не взяли :-) Я вже не кажу про те, щоб взяти в руки MS08-67, нацькувати на вісту і подивитися очима, який з трьох варіантів спрацює.

12. 27th January 2009, 20:55 // Читачmemo написав:

// А відладчик у руки так і не взяли :-) Я вже не кажу про те, щоб взяти в руки MS08-67

Раджу брати біту… :)

13. 27th January 2009, 22:36 //Олександр Венедюхін відповів:

Ймовірний діагноз: Проектування свого розпухлого НСВ на оточуючих.

О, психіатрія з листування! Arcman, це дивно.

14. 28th January 2009, 11:22 // Читачarcman написав:

Тут до речі питання виникло - у нас черв'як "Conficker.AA" (за класифікацією NOD32) успішно віддалено вразив машину з Vista. І продовжує вражати, незважаючи на встановлені оновлення та латки. NOD його засікає і при спробі записатися на диск "б'є по руках". Після перезавантаження все повторюється.

15. 28th January 2009, 12:36 // Читачarcman написав:

UPD: Відповідь знайдено і до того ж – зовсім без дебагера =)

16. 28th January 2009, 14:35 // ЧитачGiardo написав:

Дивно знайти в цьому блозі такий дитячий погляд. Згідно з Вашою логікою, безпека Пентагону – відстій, тому що якщо на нього скинути бомбу, йому нічого не допоможе, і, оскільки він фахівець, розкриває для себе? //Вихідний код і досліджує його. а script-kiddies (піонери у вашій термінології) туди не полізуть, вони краще бабусю в провулку пограбують. //Припустити, що цей тип атакуючого витрачатиме //добу на ретельний аудит коду однієї CMS, коли на //сайтах навколо повно інших спокус, буде, м'яко //говорячи, дивним

Є таке поняття як "складність злому". Звичайно відкритість системи цю саму складність знижує. Наскільки залежить від її якості. Але у випадку з CMS про високу якість говорити не доводиться у будь-якому випадку.

Пишіть краще про авіацію. Будь ласка:)

17. 28th January 2009, 16:30 //Олександр Венедюхін відповів:

Згідно з Вашою логікою, безпека Пентагону – відстій.

Це згідно з Вашою логікою, якоюсь особливою.

Є таке поняття як "складність злому".

Що це за поняття, поясніть? Втім, я так розумію, що, по суті, Вам сказати нічого.

Я без підказок розберуся, що мені писати.

18. 31st January 2009, 02:28 // ЧитачGiardo написав:

//Це згідно з Вашою логікою, якоюсь особливою. Це Ваша логіка мене вразила :) Втім, неважливо. // Що це за поняття, поясніть? Почну спочатку. В ІДЕАЛЬНІЙ системі немає різниці відкриті вихідні дані чи ні. Зловмисник може знати методи аутентифікації, спосіб зв'язку з БД, сервер БД та будь-яку іншу інформацію. І ніщо йому не допоможе, якщо він не знає логінів/паролів тощо. Насправді ж, хтось десь щось обов'язково забуде. Де тонко – там і рветься. Відкритий доступ до мережі для SQL сервера, можливість запустити експлойт, який просто покаже рядок коннекту до БД – швидше за все всі дірки є і у вашій CMS. Перше, що робитиме зломщик (звичайно після того, як промацає всі діри сканером уразливостей) - збере інформацію по ній. І якщо вихідники відкриті, то проблем із знаходженням дірок не буде. Для інтересу – подивіться скільки експлойтів пишуть під freebsd. і будуть писати. тому що коди відкриті. Будь ласка тільки без unux vs windows, гаразд? :) Якщо вихідних немає – то все ускладнюється. Не критично, але може виявитися простіше зв'язати охоронця і відвезти сервер додому на машині :) Складність злому системи = складності злому найслабшої ланки цієї системи, розумієте?

//Я без підказок розберуся, що мені писати. Як завгодно.Якщо вам подобається вести записки дилетанта.

19. 31st January 2009, 11:32 //Олександр Венедюхін відповів:

//Що це за поняття, поясніть? Почну спочатку. В ІДЕАЛЬНІЙ системі

На мою думку, Ви взагалі не розумієте, що таке складність. А розповідаєте якісь дурниці на кшталт “де тонко там і рветься”.

Складність злому системи = складності злому найслабшої ланки цієї системи, розумієте?

По-перше, це не складність, а вже тоді "стійкість" якась - або що там Ви мали на увазі насправді.

По-друге, "про слабку ланку" - це нісенітниця, яку, втім, раз у раз повторюють дилетанти. Систему потрібно будувати так, щоб "слабка ланка" не ламала всю систему. Взагалі це ази проектування ПЗ.

Якщо вам подобається вести записки дилетанта?

Найцікавіше, що складно придумати щось більш дилетантське і наївне, ніж "розв'язання" про те, що "закритий код робить систему безпечною". Адже це якраз і є банальне одноходове міркування, коли з розгляду викидається весь комплекс чинників крім одного – “заховати код”.

Ну і, звичайно, "ланцюгова безпека" - друга основна ознака дилетанта у питаннях безпеки. Про цю "слабку ланку" постійно доводиться чути від наївних студентів (які, проте, попрацювали і з UNIX, і, скажімо, з RAID - але висновків про реальність для себе, поки що, не зробили).

20. 31st January 2009, 14:20 // Читачarcman написав:

> Читач Giardo написав: > Для інтересу – подивіться скільки експлойтів пишуть під freebsd. і будуть писати. тому що коди відкриті.

А для MS Windows, скільки пишуть? А скільки з них можна реально використатина практиці?

> Будь ласка тільки без unux vs windows, гаразд? :) Це заздалегідь у своїй беззахисності розписався чи що? =)

21. 31st January 2009, 14:40 //Олександр Венедюхін відповів:

> Будь ласка тільки без unux vs windows, гаразд? :) Це заздалегідь у своїй беззахисності розписався чи що? =)

Ага, мабуть. До речі, вже й заява, що “експлоїти під FreeBSD пишуть тому, що коди відкриті” – видає рівень можливого “захисту” та тип підходу до проблеми.

22. 2nd February 2009, 14:18 // ЧитачGiardo написав:

> Будь ласка тільки без unux vs windows, гаразд? :) Це заздалегідь у своїй беззахисності розписався чи що? =) Просто не хотілося холівар піднімати. :)

Взагалі сперечатися з упертими дилетантами – нудно та непотрібно. Залишайтесь при своїй думці. Якщо ви і з інших тем такий самий "фахівець", то мабуть я відпишуся. :)

23. 2nd February 2009, 23:45 //Олександр Венедюхін відповів:

Ну, саме! Вразивши висловами типу “експлоїти під FreeBSD пишуть тому, що код відкритий” аудиторію, “гуру” має піти, важливо задерши носа.

Інтернет-журнал, який веде Олександр Венедюхін