|
|
От: |
OCTAGRAM
|
http://octagram.name/ |
| Дата: | 04.03.07 13:38 | ||
| Оценка: | 11 (2) | ||
If any bug has achieved celebrity status, it is the
buffer overflow. It made front-page news as early
as 1987, as the enabler of the Morris worm, the first
worm to spread through the Internet. In recent years,
attacks exploiting buffer overflows have become more
frequent, and more virulent. This year, for exam-
ple, the Witty worm was released to the wild less
than 48 hours after a buffer overflow vulnerability
was publicly announced; in 45 minutes, it infected
the entire world-wide population of 12,000 machines
running the vulnerable programs.
Notably, buffer overflows are a problem only for the
C and C++ languages—Java and other “safe” lan-
guages have built-in protection against them. More-
over, buffer overflows appear in C programs written
by expert programmers who are security concious—
programs such as OpenSSH, Kerberos, and the com-
mercial intrusion detection programs that were the
target of Witty.
This is bad news for C. If security experts have
trouble producing overflow-free C programs, then
there is not much hope for ordinary C program-
mers. On the other hand, programming in Java is
no panacea; for certain applications, C has no com-
petition. From a programmer’s point of view, all the
safe languages are about the same, while C is a very
different beast.
Firefox security holes
There’s a new version of Firefox out (1.5.0.2), with fixes for 22 security issues, according to Secunia. My favorite is this one:
2) An error in the garbage collection in the JavaScript engine can be exploited to cause a memory corruption.
Successful exploitation may allow execution of arbitrary code.
Apparently garbage collectors are not perfect! Who knew.
Among the 22 issues there are a bunch that would clearly be prevented by a safe language like Cyclone:
3) A boundary error in the CSS border rendering implementation may be exploited to write past the end of an array.
4) An integer overflow in the handling of overly long regular expressions in JavaScript may be exploited to execute arbitrary JavaScript bytecode.
6) An error in the “InstallTrigger.install()” method can be exploited to cause a memory corruption.
13) An error in the processing of a certain sequence of HTML tags can be exploited to cause a memory corruption.
Successful exploitation allows execution of arbitrary code.
15) Some errors in the DHTML implementation can be exploited to cause a memory corruption.
Successful exploitation may allow execution of arbitrary code.
16) An integer overflow error in the processing of the CSS letter-spacing property can be exploited to cause a heap-based buffer overflow.
Successful exploitation allows execution of arbitrary code.
Some of the others might be safety issues as well, but it takes quite a bit of digging to figure these things out.
14 April 2006 by trevor
По настоящему важными, однако, являются следующие соображения: насколько данный
язык облегчает профессиональное изложение учебного материала и насколько он облегчает
усвоение студентами совокупности учебных дисциплин. Среди этих причин – привычки и
квалификация преподавателей, доступность литературы, изданной на бумажных носителях и
на русском языке, личные предпочтения тех, кто разрабатывает (или утверждает!) учебно-
квалификационные программы специальностей и рабочие программы конретных курсов, пред-
ставления о том, что в данный момент наиболее востребовано рынком труда. Сплошь и рядом
мы имеем совершенно ненормальные ситуации, когда основной (и нередко математизирова-
ный) курс по алгоритмам и структурам данных поддерживается ... языком Си, курс по парал-
лельному программированию и системам реального времени основывается на Джаве (которая
не для этих областей проектировалась и создавалась), а курс по методам разработки и сопро-
вождения больших программных систем использует в качестве языка сопровождающего прак-
тикума, извините, Паскаль-Дельфи. В результате существенная часть времени и сил тратится
на попытки разглядеть алгоритм (а еще того сложнее – структуру данных!) через криптогра-
фический синтаксис Си или, скажем, на то, чтобы отделить проблемы адресной арифметики от
логических и математических проблем организации сортировки и поиска. Или (в курсах по
параллельному программированию) возиться с тем, чтобы правильно переключать семафоры
и вовремя посылать сигналы (от чего всеми силами стремится уйти реальная программная ин-
дустрия!) вместо того, чтобы выделять процессы и разрабатывать модели их взаимодействия
высокоуровневыми средствами, допускающими эффективный статический и динамический
контроль. Еще конфузливей «освоение методов» проектирования и разработки больших про-
ектов и систем средствами Дельфи, предназначенной только (и в этом качестве действительно
широко и эффективно используемой) для быстрого прототипирования и создания графических
интерфейсов конкретно под Виндоуз. При этом такими реальностями больших проектов, как
полиплатформенные стандарты, Юникс-ориентированные инструменты, лицензионная чисто-
та, разумеется, даже не пахнет.