Одна з доповідей на BlackHat Europe 2017 вказала на серйозні недоліки в деяких мовах програмування


Дізнайтесь більше про нові кар'єрні можливості в EchoUA. Цікаві проекти, ринкова оплата, гарний колектив. Надсилайте резюме та приєднуйтеся до нас.

Йдеться про дослідження, представлене на конференції з комп’ютерної безпеки Black Hat Europe 2017. Згідно з ним, у деяких скриптових мовах програмування є вразливості, які наражають на небезпеку написані на них пристрої.

Автором доповіді виступив експерт IOActive з питань безпеки Фернандо Арнабольді. Він використав фаззінг – автоматизовану систему тестування ПЗ – для виявлення вразливостей у п’яти популярних мовах програмування. Дослідженням піддалися JavaScript, PHP, Ruby, Perl і Python.

Список протестованих інтерпретаторів:

  • JavaScript: v8, ChakraCore, SpiderMonkey, NodeJS (v8), Node (ChakraCore);
  • PHP – PHP, HHVM;
  • Ruby – Ruby, JRuby;
  • Perl – Perl, ActivePerl;
  • Python – CPython, PyPy, Jython.

Суть фаззінгу як методики тестування полягає в тому, що система передає додатку на вихід неправильні, несподівані або випадкові дані. Такий метод ефективний для відвертання витоків пам’яті, які призводять до зависання або аварійного завершення роботи програм. Зазвичай такі проблеми легко вирішуються оптимізацією початкового коду, але іноді вони криють у собі проблеми, пов’язані з безпекою, і не залежать від розробників кінцевого ПЗ.

Жодна з мов не пройшла перевірку на міцність

Арнабольді використав для спостережень самописний фреймворк XDiFF (Extended Differential Fuzzing Framework – розширений диференціальний фреймворк для фаззінгу), який пристосований для аналізу структури мов програмування та їх поведінки. Дослідник “розібрав” мови до базових функцій, а потім протестував кожну з них за допомогою XDiFF.

Загальна кількість протестованих функцій:

  • JavaScript – 450 функцій;
  • PHP – 1405 функцій;
  • Ruby – 2483 функції;
  • Perl – 3105 функцій;
  • Python – 3814 функції.

У результаті виконана робота допомогла виявити серйозні вразливості в усіх п’яти мовах програмування:

  • Ядро Python містить недокументовані методи і змінне оточення, яке може бути використане для виконання команд операційної системи.
  • У Perl виявлена typemap-функція, здатна виконувати код аналогічно функції eval.
  • Повідомлення про помилки в NodeJS можуть частково розкривати вміст файлів.
  • JRuby може видалено запускати код за допомогою функцій, спроектованих не для цього.
  • Імена констант в PHP можуть бути використані, щоб виконати видалений запуск команд.

Перед вразливостями безсилі навіть найзахищеніші програми

Як запевняє Арнабольді, зловмисники здатні використати вади інтерпретаторів навіть проти найстійкіших пристроїв, над захистом яких працювали кваліфіковані фахівці. Все через те, що розробники можуть включити в ПЗ рядки коду, які можуть бути використані непередбаченим шляхом.

Коментарів від розробників відповідних мов програмування не надходило.

Автор проекту опублікував початковий код XDiFF на GitHub. Детальний опис вразливостей і процесу тестування доступний в доповіді “Exposing Hidden Exploitable Behaviors in Programming Languages Using Differential Fuzzing”.

Джерело: bleepingcopmuter.com

Київ, Харків, Одеса, Дніпро, Запоріжжя, Кривий Ріг, Вінниця, Херсон, Черкаси, Житомир, Хмельницький, Чернівці, Рівне, Івано-Франківськ, Кременчук, Тернопіль, Луцьк, Ужгород, Кам'янець-Подільський, Стрий - за статистикою саме з цих міст програмісти найбільше переїжджають працювати до Львова. А Ви розглядаєте relocate?


Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *