Learning Objective 5.1.A: Explain how adversaries can exploit application and file vulnerabilities to cause loss, damage, disruption, or destruction.
- 5.1.A.1 An adversary can read any unencrypted files if they have access to the device or drive storing the files.
- 5.1.A.2 Computers have standard users and administrative users. Administrative users have access to control system settings and can typically access any files or applications on a system. If regular users are given administrative privileges on a computer, and an adversary can compromise a user’s account, then the adversary will have elevated privileges on the system.
- 5.1.A.3 When access control settings are weakly configured, many users often have permission to view and sometimes even edit files on a system. Adversaries can take advantage of weak access control settings to steal or destroy files or disrupt an application.
Learning Objective 5.1.B: Explain how application attacks exploit vulnerabilities.
- 5.1.B.1 Applications are programs that run instructions on computers; they are executable data. Some applications run locally on a user’s computer, while other applications, like web applications, run on a server and are accessed by users through a network.
- 5.1.B.2 Many applications take user input through open-ended input fields where users can type characters (e.g., letters, numbers, punctuation). Developers should include user input checks in their application, such as numeric input when asked for a number of items, to ensure that the user input matches what is expected; the application should reject input outside of the expected parameters. This process of verifying that user input meets expected criteria before processing it is called data validation. Applications that fail to validate user input are vulnerable to injection-type attacks, where adversaries insert unexpected character strings in input fields to alter the behavior of a program.
- 5.1.B.3 Structured query language (SQL) is a computer language used to request information from databases and make changes to databases or entries in databases. Applications that query a database using unvalidated or unsanitized input from users are vulnerable.
- 5.1.B.4 An SQL-injection attack places SQL commands and control characters into a user-input field in an application, which can lead to a breach of confidentiality by causing the application to return more information than it should, or a breach of integrity by modifying or deleting data in the database.
- 5.1.B.5 Websites are written using hypertext markup language (HTML), and many websites use Javascript to create dynamic content on websites or web applications. Because Javascript commands run in the browser of the user visiting the website, those commands can access sensitive data stored in the browser like usernames, passwords, and cryptographic keys.
- 5.1.B.6 A cross site scripting (XSS) attack injects malicious code into a website that a user’s browser then executes. The malicious code can be embedded in a link the user clicks (a Type I or Reflected XSS attack) or it can be inserted onto a website through a comment field, forum post, or visitor log, which would affect any user visiting that website (a Type II or Stored XSS attack).
- 5.1.B.7 When applications take user input, that input is written to a buffer. A buffer is a designated section of computer memory with a fixed size. If the amount of data the user enters exceeds the size of the buffer, it can overflow into adjacent memory locations and overwrite other parts of the computer’s memory.
- 5.1.B.8 A buffer overflow attack feeds more data into memory than was allotted, which can cause a system to crash or to execute code outside the scope of a program’s security policy, effectively allowing the adversary to perform unauthorized actions on a computer, such as accessing, modifying, or deleting files.
- 5.1.B.9 The files that run web applications are stored in directories on servers. When users access web applications, their browsers send GET requests using hypertext transfer protocol (HTTP). A GET request accesses a file somewhere in the filesystem of the server.
- 5.1.B.10 In a directory traversal attack, adversaries modify URLs and GET requests to attempt to access sensitive data (e.g., usernames and passwords) on a server’s file system.
- Illustrative examples for 5.1.B.10:
- A web server stores images for a website it hosts in the /var/www/images/ directory. An adversary modifies a URL requesting an image to ../../../etc/passwd. The .. moves one directory up in the file system; so the three consecutive .. returns the path to the root, and from there the adversary is attempting to access the passwd file that would return a list of all the authorized usernames on the device.
- Illustrative examples for 5.1.B.10:
Learning Objective 5.1.C: Assess and document risks from application and data vulnerabilities.
- 5.1.C.1 Data security risks can involve a compromise of confidentiality when unauthorized persons can access sensitive data, integrity when data can be manipulated or altered from its intended state, and availability when data can be destroyed or encrypted to prevent others from accessing it.
- 5.1.C.2 High risks from data vulnerabilities often involve highly sensitive data (e.g., data that is governed by laws or regulations) that could be compromised through a highly likely exploit.
- Illustrative examples for 5.1.C.2:
- The company developing the next jet engine that will be used by the Air Force in its planes is storing the technical specifications for the engine on an unencrypted drive.
- Illustrative examples for 5.1.C.2:
- 5.1.C.3 Moderate risks from data vulnerabilities often involve sensitive data not having strong enough encryption or strict enough access controls.
- Illustrative examples for 5.1.C.3:
- A company stores its customers’ PII in a spreadsheet, and the spreadsheet is encrypted using a small key.
- Illustrative examples for 5.1.C.3:
- 5.1.C.4 Low risks from data vulnerabilities often involve less sensitive information being encrypted with shorter keys or having access controls that are not strict enough.
- Illustrative examples for 5.1.C.4:
- An organization’s CEO stores his private memos to his executive staff on a company share drive that is unencrypted and has no access controls.
- Illustrative examples for 5.1.C.4:
Цель обучения 5.1.A: Объяснить, как злоумышленники могут использовать уязвимости приложений и файлов для причинения ущерба, потери, нарушения работы или уничтожения данных.
- 5.1.A.1 Злоумышленник может прочитать любые незашифрованные файлы, если у него есть доступ к устройству или диску, на котором хранятся файлы.
- 5.1.A.2 У компьютеров есть обычные пользователи и администраторы. Администраторы имеют доступ к управлению настройками системы и обычно могут получать доступ к любым файлам или приложениям на системе. Если обычным пользователям предоставляются привилегии администратора на компьютере, и злоумышленник может скомпрометировать учетную запись пользователя, то злоумышленник получит повышенные привилегии в системе.
- 5.1.A.3 Когда настройки контроля доступа настроены слабо, у многих пользователей часто есть разрешение на просмотр, а иногда и редактирование файлов в системе. Злоумышленники могут воспользоваться слабыми настройками контроля доступа для кражи или уничтожения файлов, а также для нарушения работы приложений.
Цель обучения 5.1.B: Объяснить, как атаки на приложения используют уязвимости.
- 5.1.B.1 Приложения — это программы, выполняющие инструкции на компьютерах; они являются исполняемыми данными. Некоторые приложения запускаются локально на компьютере пользователя, тогда как другие приложения, такие как веб-приложения, работают на сервере и accessed by users through a network (доступны пользователям через сеть).
- 5.1.B.2 Многие приложения принимают ввод данных от пользователей через открытые поля ввода, где пользователи могут печатать символы (например, буквы, цифры, знаки препинания). Разработчики должны включать проверки ввода данных в свои приложения, например, проверку числового ввода при запросе количества предметов, чтобы убедиться, что ввод пользователя соответствует ожидаемым параметрам; приложение должно отвергать ввод вне ожидаемых параметров. Этот процесс проверки соответствия ввода пользователя ожидаемым критериям перед его обработкой называется проверкой данных (валидацией). Приложения, не проверяющие ввод данных, уязвимы для атак типа внедрения (injection), когда злоумышленники вставляют неожиданные строки символов в поля ввода для изменения поведения программы.
- 5.1.B.3 Структурированный язык запросов (SQL) — это язык программирования, используемый для запроса информации из баз данных и внесения изменений в базы данных или записи в них. Приложения, выполняющие запросы к базе данных с использованием непроверенных или несанитизированных входных данных от пользователей, являются уязвимыми.
- 5.1.B.4 Атака SQL-инъекции помещает команды SQL и управляющие символы в поле ввода пользователя в приложении, что может привести к нарушению конфиденциальности путем возврата приложением большего объема информации, чем следует, или к нарушению целостности путем модификации или удаления данных в базе данных.
- 5.1.B.5 Веб-сайты пишутся с использованием языка разметки гипертекста (HTML), и многие веб-сайты используют JavaScript для создания динамического контента на веб-сайтах или веб-приложениях. Поскольку команды JavaScript выполняются в браузере пользователя, посещающего веб-сайт, эти команды могут получать доступ к чувствительным данным, хранящимся в браузере, таким как имена пользователей, пароли и криптографические ключи.
- 5.1.B.6 Атака межсайтового скриптинга (XSS) внедряет вредоносный код на веб-сайт, который затем выполняется браузером пользователя. Вредоносный код может быть встроен в ссылку, на которую нажимает пользователь (атака XSS Type I или Reflected XSS), или он может быть введен на веб-сайт через поле комментариев, пост на форуме или журнал посетителей, что повлияет на любого пользователя, посещающего этот веб-сайт (атака XSS Type II или Stored XSS).
- 5.1.B.7 Когда приложения принимают ввод данных от пользователей, этот ввод записывается в буфер. Буфер — это выделенный участок компьютерной памяти фиксированного размера. Если объем введенных пользователем данных превышает размер буфера, он может переполниться в соседние области памяти и перезаписать другие части памяти компьютера.
- 5.1.B.8 Атака переполнения буфера подает больше данных в память, чем было выделено, что может вызвать сбой системы или выполнение кода вне рамок политики безопасности программы, фактически позволяя злоумышленнику выполнять несанкционированные действия на компьютере, такие как доступ, модификация или удаление файлов.
- 5.1.B.9 Файлы, запускающие веб-приложения, хранятся в каталогах на серверах. Когда пользователи получают доступ к веб-приложениям, их браузеры отправляют GET-запросы с использованием протокола передачи гипертекста (HTTP). GET-запрос получает доступ к файлу в любом месте файловой системы сервера.
- 5.1.B.10 При атаке обхода каталогов злоумышленники изменяют URL-адреса и GET-запросы, пытаясь получить доступ к чувствительным данным (например, именам пользователей и паролям) в файловой системе сервера.
- Иллюстративные примеры для 5.1.B.10:
- Веб-сервер хранит изображения для размещаемого им веб-сайта в каталоге /var/www/images/. Злоумышленник изменяет URL-адрес, запрашивающий изображение, на ../../../etc/passwd. Две точки (..) перемещают на один каталог выше в файловой системе; поэтому три последовательных .. возвращают путь к корню, и оттуда злоумышленник пытается получить доступ к файлу passwd, который вернул бы список всех авторизованных имен пользователей на устройстве.
- Иллюстративные примеры для 5.1.B.10:
Цель обучения 5.1.C: Оценивать и документировать риски, связанные с уязвимостями приложений и данных.
- 5.1.C.1 Риски безопасности данных могут включать нарушение конфиденциальности, когда несанкционированные лица получают доступ к чувствительным данным, нарушение целостности, когда данные могут быть манипулированы или изменены по отношению к их исходному состоянию, и нарушение доступности, когда данные могут быть уничтожены или зашифрованы, чтобы предотвратить их доступ другими лицами.
- 5.1.C.2 Высокие риски от уязвимостей данных часто связаны с высокочувствительными данными (например, данными, регулируемыми законами или нормативными актами), которые могут быть скомпрометированы благодаря высоковозможной эксплуатации.
- Иллюстративные примеры для 5.1.C.2:
- Компания, разрабатывающая следующий реактивный двигатель, который будет использоваться ВВС в своих самолетах, хранит технические спецификации двигателя на незашифрованном диске.
- Иллюстративные примеры для 5.1.C.2:
- 5.1.C.3 Средние риски от уязвимостей данных часто связаны с тем, что чувствительные данные не имеют достаточно сильной шифровки или строгих ограничений доступа.
- Иллюстративные примеры для 5.1.C.3:
- Компания хранит персональные данные клиентов (PII) в электронной таблице, которая шифруется с использованием малого ключа.
- Иллюстративные примеры для 5.1.C.3:
- 5.1.C.4 Низкие риски от уязвимостей данных часто связаны с шифрованием менее чувствительной информации с использованием коротких ключей или наличием недостаточных ограничений доступа.
- Примеры для 5.1.C.4:
- Генеральный директор организации хранит свои личные служебные записки для исполнительного персонала в корпоративном сетевом хранилище, которое не зашифровано и не имеет ограничений доступа.
- Примеры для 5.1.C.4:


