13_03_14

13.03.14 home assignment deadline: 11.03.14. - 22.00

You may also find this map interesting [|Digital Attack Map]

1. **Individual work** Create slides (or 1 slide) for 2-min. presentation - no marks! Topic "Viruses and Other Malicious Code" Important : you should speak in front of the class standing at the blackboard upload the file here or send me by e-mail

2. choose a paragraph and translate it into Russian. Upload your translation on this page right below your paragraph.

Incomplete Mediation

 * Incomplete mediation** is another security problem that has been with us for decades. Attackers are exploiting it to cause security problems.

Definition
Consider the example of the previous section: http://www.somesite.com/subpage/userinput.asp?parm1=(808)555-1212 &parm2=2009Jan17

The two parameters look like a telephone number and a date. Probably the client's (user's) web browser enters those two values in their specified format for easy processing on the server's side. What would happen if parm2 were submitted as 1800Jan01? Or 1800Feb30? Or 2048Min32? Or 1Aardvark2Many?Something would likely fail. As with buffer overflows, one possibility is that the system would fail catastrophically, with a routine's failing on a data type error as it tried to handle a month named "Min" or even a year (like 1800) which was out of range. Another possibility is that the receiving program would continue to execute but would generate a very wrong result. (For example, imagine the amount of interest due today on a billing error with a start date of 1 Jan 1800.) Then again, the processing server might have a default condition, deciding to treat 1Aardvark2Many as 3 July 1947. The possibilities are endless.

//__Translation____to 1:__// Два параметра представлены как телефонный номер и данны е. дата Возможно, клиент (пользователь ) веб-браузер а клиента (пользователя) включает в себя вводит эти два значения в их указанном формате для легкой обработки сервером. Что произойдет, если parm2 будет представлен __(записан???)__ как 1800Jan01? Или 1800Feb30? Или 2048Min32? Или 1Aardvark2Many? Эти записи, скорее всего, будут неудачными. Что-нибудь определённо не сработает (где-нибудь произойдёт сбой). Как и с переполнением буфера, существует вероятность сбоя системы из-за обычной ошибки типа данных, когда обрабатывается месяц под названием "Мин" или даже год (представленный как 1800), находящиеся вне диапазона. Другая вероятность состоит в том, что программа будет выполняться, но будет рассчитываться неправильный результат. (Например, представьте, сумму процентов на сегодняшний день из-за ошибки составления счета с 1 января 1800.) С другой стороны, сервер обработки может иметь условия по умолчанию, решив обрабатывать 1Aardvark2Many как 3-го июля 1947 года. Возможности бесконечны. 1394468110 Алёна, а начало-то тоже нужно было перевести.

2. One way to address the potential problems is to try to anticipate them. For instance, the programmer in the examples above may have written code to check for correctness on the client's side (that is, the user's browser). The client program can search for and screen out errors. Or, to prevent the use of nonsense data, the program can restrict choices only to valid ones. For example, the program supplying the parameters might have solicited them by using a drop-down box or choice list from which only the twelve conventional months would have been possible choices. Similarly, the year could have been tested to ensure that the value was between 1995 and 2005, and date numbers would have to have been appropriate for the months in which they occur (no 30th of February, for example). Using these verification techniques, the programmer may have felt well insulated from the possible problems a careless or malicious user could cause.

__//Translation to 2://__ Одним из путей решения потенциальных проблем является попытка предвидеть их. Например, программист в приведенных выше примерах мог написать код для проверки правильности на стороне клиента (то есть, браузера пользователя). Клиентская программа может искать и отсеивать ошибки. Или, для предотвращения использования бессмысленных данных, программа может ограничивать их выбор только до корректных. корректными Например, программа запроса параметров могла запросить их с помощью выпадающего списка или списка-выбора, в котором возможными вариантами могли бы быть только 12 календарных месяцев. Точно так же тестировался бы год, чтобы гарантировать, что введенное значение было в период между 1995 и 2005 годом, и число числа месяца, что был о и бы уместн о ы для месяцев, в которых не все числа не они встречаются (не 30 февраля, например). Используя эти методы проверки, программист мог чувствовать хорошую изолированность от возможных проблем, которые могли возникнуть по неосторожности или быть вызваны злоумышленником. 1394392670

3. However, the program is still vulnerable. By packing the result into the return URL, the programmer left these data fields in a place accessible to (and changeable by) the user. In particular, the user could edit the URL line, change any parameter values, and resend the line. On the server side, there is no way for the server to tell if the response line came from the client's browser or as a result of the user's editing the URL directly. We say in this case that the data values are not completely mediated: The sensitive data (namely, the parameter values) are in an exposed, uncontrolled condition. __//Translation to 3://__ Однако, программа все еще уязвима. Помещая результат в возвращаемый URL, программист делает эти поля данных доступными(в том числе и для изменения) пользователю. В частности, пользователь может изменить строку URL, поменять какие-либо параметры (значения параметров), и отправить её заново. На стороне сервера нет возможности узнать отправлена ли принятая строка браузером клиента или является результатом его, клиента, непосредственной правки. В этом случае мы говорим, что данные не полностью установлены: секретные данные(а именно, значения параметров) находятся в незащищенных, неконтролируемых условиях.1394473875

4. Security Implication Incomplete mediation is easy to exploit, but it has been exercised less often than buffer overflows. Nevertheless, unchecked data values represent a serious potential vulnerability. To demonstrate this flaw's security implications, we use a real example; only the name of the vendor has been changed to protect the guilty. Things, Inc., was a very large, international vendor of consumer products, called Objects. The company was ready to sell its Objects through a web site, using what appeared to be a standard e-commerce application. The management at Things decided to let some of its in-house developers produce the web site so that its customers could order Objects directly from the web.

=
Незавершенный сбор данных легко использовать, ошибки такого вида ищутся в программе но им пользуются реже чем переполнение м буфера. Тем не менее, непроверенные значения данных представляют серьезную потенциальную угрозу. Для демонстрации важности учёта таких ошибок в обеспечения безопасности, приведем пример из жизни; имя производителя было изменено для защиты виновника данного дефекта. Things Inc был крупным поставщиком потребительских товаров, Объектов. Компания была готова продать свои Объекты через интернет, используя, казалось бы, стандартную программу для электронных продаж. Руководство Things решило позволить некоторым своим штатным разработчикам сделать такой веб-сайт, который бы позволил клиентам заказать Объекты прямиком через интернет. (знаю, что очень "вольно" и неточно)1394554564 да нет, тут кусочек, "позволяющий вольности" user:H_P ======

5. To accompany the web site, Things developed a complete price list of its Objects, including pictures, descriptions, and drop-down menus for size, shape, color, scent, and any other properties. For example, a customer on the web could choose to buy 20 of part number 555A Objects. If the price of one such part were $10, the web server would correctly compute the price of the 20 parts to be $200. Then the customer could decide whether to have the Objects shipped by boat, by ground transportation, or sent electronically. If the customer were to choose boat delivery, the customer's web browser would complete a form with parameters like these: http://www.things.com/order/final&custID=101&part=555A &qy=20&price=10&ship=boat&shipcost=5&total=205

6. So far, so good; everything in the parameter passage looks correct. But this procedure leaves the parameter statement open for malicious tampering. Things should not need to pass the price of the items back to itself as an input parameter; presumably Things knows how much its Objects cost, and they are unlikely to change dramatically since the time the price was quoted a few screens earlier A malicious attacker may decide to exploit this peculiarity by supplying instead the following URL, where the price has been reduced from $205 to $25: http://www.things.com/order/final&custID=101&part=555A &qy=20&price=1&ship=boat&shipcost=5&total=25

7. Surprise! It worked. The attacker could have ordered Objects from Things in any quantity at any price. And yes, this code was running on the web site for a while before the problem was detected. From a security perspective, the most serious concern about this flaw was the length of time that it could have run undetected. Had the whole world suddenly made a rush to Things's web site and bought Objects at a fraction of their price, Things probably would have noticed. But Things is large enough that it would never have detected a few customers a day choosing prices that were similar to (but smaller than) the real price, say 30 percent off. The e-commerce division would have shown a slightly smaller profit than other divisions, but the difference probably would not have been enough to raise anyone's eyebrows; the vulnerability could have gone unnoticed for years. Fortunately Things hired a consultant to do a routine review of its code, and the consultant found the error quickly. Translation to 7: Неожиданно! Это сработало. Злоумышленник смог заказывать объекты из Things в любом количестве и по любой цене. И да, этот код исполняется исполнялся на веб-сайте некоторое время, до того,пока эта проблема не была обнаружена. С точки зрения безопасности, наибольшее беспокойство по поводу этого недостатка представлял отрезок времени, когда исполнение кода могло быть незамеченным. Если бы весь мир вдруг бросился на веб-сайт Things и купил объекты за долю их цены, Things вероятно заметил бы это. Но Things настолько большой, что он никогда бы не обнаружил, что несколько клиентов в день выбирают ценник, который схож( но конечно меньше) чем реальный, скажем на 30 процентов. Подразделение электронной коммерции показало бы немного меньшую прибыль, чем другие подразделения, но разница, вероятно, не была бы достаточной, чтобы хоть кто-то обратил на это внимание (raise anyone's eyebrows); уязвимость может остаться незамеченной в течение многих лет. К счастью, Things нанял консультанта, для того чтобы сделать рутинную проверку кода, и консультант быстро нашел ошибку. 1394465868

8. This web program design flaw is easy to imagine in other web settings. Those of us interested in security must ask ourselves how many similar problems are there in running code today? And how will those vulnerabilities ever be found? __Translate to 8:__ __Этот недоработанный программный - веб проект легко показывает себя на других веб - настройках.__ Этот изъян дизайна программы легко представить в других сетевых (интернет) условиях. Те из нас, кто заинтересован в безопасности должны спросить себя, какие ещё типичные схожие ошибки в работе кода существуют в настоящее время? И как эти уязвимости найти?1394468875

9. Time-of-Check to Time-of-Use Errors The third programming flaw we investigate involves synchronization. To improve efficiency, modern processors and operating systems usually change the order in which instructions and procedures are executed. In particular, instructions that appear to be adjacent may not actually be executed immediately after each other, either because of intentionally changed order or because of the effects of other processes in concurrent execution.

Ошибки, вызванные изменениями в системе между проверками состояния. Третья ошибка программирования, исследуемая нами, включает синхронизацию. Для повышения эффективности современные процессоры и операционные системы, как правило, меняют порядок выполнения инструкций и процедур. В частности, инструкции, которые находятся рядом, на самом деле могут выполняться не сразу после друг друга либо из-за намеренно измененного порядка или из-за влияния других процессов, выполняющихся параллельно. 1394466491 Очень прилично user:H_P

10 Definition Access control is a fundamental part of computer security; we want to make sure that only those who should access an object are allowed that access. (We explore the access control mechanisms in operating systems in greater detail in Chapter 4.) Every requested access must be governed by an access policy stating who is allowed access to what; then the request must be mediated by an access policy enforcement agent. But an incomplete mediation problem occurs when access is not checked universally. The time-of-check to time-of-use (TOCTTOU) flaw concerns mediation that is performed with a "bait and switch" in the middle. It is also known as a serialization or synchronization flaw.

Контроль доступа является фундаментальной частью компьютерной безопасности. Мы хотим убедиться в том, что доступ к объекту должны получить только те, кому он разрешён. (Мы исследуем механизмы контроля доступа в операционных системах более подробно в Главе 4.) Каждый запрошенный доступ должен управляться политикой доступа, указывающей, кто к чему имеет доступ.Затем запрос должен быть опосредован(???) передан агентом применения политик доступа. Но, когда нет универсальной проверки доступа, возникает незавершённая(?) проблема посредничества. незавершённой передачи данных Дефект в ПО, вызванный изменениями в системе, которые происходят между проверкой состояния и использованием результатов этой проверки (определение бага The time-of-check to time-of-use), относится к __посредничеству__, передаче которое выполняется с "заманиванием и подменой". (in the middle - я так понял, означает, между проверкой и использованием результатов проверки (из определения) молодец! :) ). Он так же известен как дефект сериализации или синхронизации. 1394365497

11 To understand the nature of this flaw, consider a person's buying a sculpture that costs $100. The buyer removes five $20 bills from a wallet, carefully counts them in front of the seller, and lays them on the table. Then the seller turns around to write a receipt. While the seller's back is turned, the buyer takes back one $20 bill. When the seller turns around, the buyer hands over the stack of bills, takes the receipt, and leaves with the sculpture. Between the time when the security was checked (counting the bills) and the access (exchanging the sculpture for the bills), a condition changed: what was checked is no longer valid when the object (that is, the sculpture) is accessed.

Чтобы понять природу этого дефекта, рассмотрим человека, который покупает скульптуру за 100 долларов. Покупатель достаёт пять 20 долларовых банкнот из бумажника, тщательно пересчитывает их перед продавцом, и кладет их на стол. После этого продавец отворачивается, чтобы написать квитанцию. Пока продавец повёрнут спиной, покупатель забирает обратно одну __100(20 все-таки1394553520__ :)) user:H_P __)__ долларовую банкноту. Когда продавец оборачивается, покупатель протягивает стопку купюр, берет квитанцию​​, и уходит со скульптурой. В промежутке времени между проверкой безопасности (подсчёт банкнот) и доступом (обмен скульптуры на банкноты), условие изменилось: то, что было проверено, больше не действительно, в то время, как к доступ к объекту уже получен. 1394552829

12 A similar situation can occur with computing systems. Suppose a request to access a file were presented as a data structure, with the name of the file and the mode of access presented in the structure. An example of such a structure is shown in Figure 3-2. FIGURE 3-2 Data Structure for File Access.

Подобная ситуация может возникнуть в вычислительных системах. Допустим, запрос на доступ к файлу представили в виде структуры данных, с именем файла и правом доступа (представленными в структуре). Пример такой структуры показан на рисунке 3-2. Рисунок 3-2 Структура данных для доступа к файлу. 1394380134 OKuser:H_P
 * мой_файл || изменить байт 4 на "A" ||

13 The data structure is essentially a "work ticket," requiring a stamp of authorization; once authorized, it will be put on a queue of things to be done. Normally the access control mediator receives the data structure, determines whether the access should be allowed, and either rejects the access and stops or allows the access and forwards the data structure to the file handler for processing. Структуры данных – это по-существу «рабочее поле» требующее отметку об авторизации; однажды авторизованный может встать в очередь на исполнение. __В привычной ситуации, доступ к контролирующему агенту получает структура, которой это разрешено, либо другая, запрос которой был отклонен, а сама служба остановлена, или разрешен доступ главной структуре данных файла, исполняемого процесса__. Обычно агент (медиатор) контроля доступа получает структуру данных, затем определяет, можно ли разрешить доступ, и либо запрещает доступ и останавливает файл, либо разрешает доступ и передает структуру дальше обработчику файлов. user:H_P

14 To carry out this authorization sequence, the access control mediator would have to look up the file name (and the user identity and any other relevant parameters) in tables. The mediator could compare the names in the table to the file name in the data structure to determine whether access is appropriate. More likely, the mediator would copy the file name into its own local storage area and compare from there. Comparing from the copy leaves the data structure in the user's area, under the user's control.

Для выполнения этой последовательности авторизации, посреднику контроля доступа придется искать имя файла (и идентификатор пользователя и любые другие соответствующие параметры) в таблицах.Посредник может сравнить имена в таблице с именем файла в структуре данных, чтобы определить, является ли доступ уместным. Более вероятно, что посредник скопирует имя файла в собственную локальную область хранения и сравнит оттуда. Сравнение из копии покидает оставляет структуру данных в области пользователя под контролем пользователя.1394448113

15 It is at this point that the incomplete mediation flaw can be exploited. While the mediator is checking access rights for the file my_file, the user could change the file name descriptor to your_file, the value shown in Figure 3-3. Having read the work ticket once, the mediator would not be expected to reread the ticket before approving it; the mediator would approve the access and send the now-modified descriptor to the file handler. По этой причине Именно в этот момент (в этом месте) неполный цикл __проверки__ передача? может быть использован. Пока медиатор проверяет права доступа к файлу с именем "my_file", пользователь может поменять имя данного файла на "your_file"(см. рис. 3-3). Т.к. от медиатора на требуется чтение квитанции ещё один раз, то он будет работать с изначально полученными данными. Здорово! Медиатор разрешит доступ и отправит только что исправленный дескриптор в точку возврата из подпрограммы. **Stepanov A.P.** FIGURE 3-3 Modified Data.

16 The problem is called a time-of-check to time-of-use flaw because it exploits the delay between the two times. That is, between the time the access was checked and the time the result of the check was used, a change occurred, invalidating the result of the check.

Проблема называется «от времени-проверки до времени использования» (прилагательное, которое не переводится дословно на русский см. перевод Димы Петухова ) дефектом, потому что она использует задержку между двумя временами. То есть, с момента, когда доступ был проверен, до времени, когда результат проверки был использован, произошло изменение, которое аннулировало результат проверки. 1394549863 OKuser:H_P