Слово и дело
АрхивСовременные технологииНовый язык программирования позволит избежать уязвимостей в системах защиты программных продуктов
Казалось бы, зачем придумывать языки программирования, если существующие полностью удовлетворяют практически всем потребностям разработчиков программного обеспечения? Есть специализированные языки для работы с базами данных, языки для написания компактных системных утилит, специализированные математические языки программирования, но идеологи лингвистического наполнения среды разработки не сидят сложа руки. Периодически появляются сообщения о появлении новых библиотек функций, облегчающих труд программистов, совершенствуется среда графической разработки программного обеспечения.
И вот недавно группа программистов из Корнеллского университета (Cornell University) и специалисты лаборатории AT&T из Нью-Йорка разработала новый язык программирования - Cyclone. Он очень похож на используемый многими программистами язык C. Но есть и важные различия. Кстати, именно благодаря им продвижение новинки может оказаться весьма успешным.
Специалисты отмечают, что программы, написанные на C, нередко содержат ошибки, которые проявляются только после запуска готовой программы. Их возникновение трудно предвидеть заранее. А впоследствии «дыры», которые вовремя не были замечены разработчиками, с успехом используют хакеры.
Используя Cyclone, можно избежать появления различных уязвимостей в системах защиты программных продуктов. Как правило, ошибки в программах возникают из-за отсутствия проверки переполнения буфера у переменных. В Cyclone реализована проверка переполнения буферов. Таким образом, новый язык наделен огромными возможностями C и при этом - системой проверки переполнения буферов из других языков высокого уровня. Появление Cyclone должно освободить разработчиков программного обеспечения от выпуска все новых и новых заплаток и сервис-паков.
Фактически синтаксис языка Cyclone является копией языка C. Отличие заключается в том, что на процессе компиляции программы к коду добавляются различные проверки на переполнение буфера и на возникновение других критических для работы программы ситуаций.
Выявление «дырок» в программе компилятор Cyclone осуществляет с помощью встроенного механизма контроля типов. Перед компиляцией программы он построчно проверяет исходный текст, проводит его анализ на наличие потенциальных уязвимостей и сигнализирует о наличии опасных участков программы.
Разработчики предлагают всем программистам использовать компилятор Cyclone для анализа своих исходных текстов программ на языке C. С его помощью они смогут выявить все возможные ошибки типов, которые впоследствии могут привести к переполнению буферов. По выбору программиста компилятор может сам переписать текст программы, исключив из него уязвимые места, или предложит программисту необходимые исправления для удаления уязвимых мест. Даже если во время выполнения программы произойдет переполнение буфера, аварийное завершение программы все равно не случится - программа корректно завершит свою работу.
Создатели Cyclone уже написали несколько программ на новом языке. В их числе - простенький веб-сервер, который невосприимчив к багам, и, следовательно, не является подходящей мишенью для хакерских атак. По мнению разработчиков, попытки его взлома в любом случае окажутся безуспешными. В ближайшее время команда планирует создание клона операционной системы Linux, построенной на новом языке программирования Cyclone.
Пока Cyclone еще не получил большого распространения. Поворотным пунктом в судьбе этого языка программирования стала "Конференция по разработке и реализации языков программирования" (Programming Language Design and Implementation Conference), которая состоялась летом 2002 года в Германии. На ней разработке программистов Корнельского университета была дана высокая оценка. По заключению экспертов, Cyclone является языком следующего поколения и обязательно займет достойную нишу в среде разработчиков программного обеспечения. Большим плюсом для российских программистов является то, что компилятор Cyclone является бесплатным ПО, а это служит дополнительным стимулом к переходу на этот язык программирования.