Google предложила инструмент защиты Java-программ от переполнения буфера

12/02/2011 23:01

Google собственными силами ведет разработку набора расширений для Java, которые позволят лучше защитить Java-программы от атак, связанных с переполнением буфера. Около недели назад интернет-гигант сообщил, что компания открыла исходники собственного проекта, который проектировался чтобы добавить новую функциональность в Java, известную как Design-By-Contract (DBC). Вариант Google получил название Contracts for Java или сокращенно "Cofoja". Базируется эта разработка на наборе Java-аннотаций Modern Jass, созданных Йоханнесом Рикеном. Изначально созданная для облегчения программирования, Cofoja также позволяют программистам бороться с будущими атаками, связанными с переполнением буфера в системе. По словам специалистов, переполнение буфера - это один из самых старых видов атак, но он по-прежнему остается одним из главных в арсенале злоумышленников. Особенно активно переполнение буфера используется в JRE (Java Runtime Engine). Основной принцип работы Cofoja заключается в том, чтобы каждый раз вызываемый метод в работающей программе, любые значения этого метода и иные данные соответствовали заранее определенным критериям. Кроме того, возвращаемые данные, также должны соответствовать критериям. "DBC следует понимать, как контракт между компонентами программного обеспечения", - говорит Рикен. Изначально данная идея была позаимствована из языка программирования Eiffel, где такая концепция известна как Design-By-Contract. В блоге Google для разработчиков компания призывает активнее использовать Cofoja еще и как средство для выявления багов и неверно функционирующего кода. Адреса Лейтнер, инженер по тестированию программного кода Google, говорит, что в Cofoja эти задачи были усовершенствованы, чтобы программисты могли выявлять ошибки на самых ранних этапах создания программ. Кроме того, компания усовершенствовала систему аннотирования кода при помощи Cofoja, таким образом, чтобы программист получал данные о необычных состояниях программы, когда та при обработке сборного кода не завершается аварийно, но начинает вести себя необычно. Также эта система позволяет бороться с переполнением буфера.
Источник