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:
Mục tiêu học tập 5.1.A: Giải thích cách đối thủ có thể khai thác lỗ hổng ứng dụng và tệp để gây mất mát, hư hỏng, gián đoạn hoặc phá hủy.
- 5.1.A.1 Đối thủ có thể đọc bất kỳ tệp không được mã hóa nào nếu họ có quyền truy cập vào thiết bị hoặc ổ đĩa lưu trữ các tệp đó.
- 5.1.A.2 Máy tính có người dùng tiêu chuẩn và người dùng quản trị. Người dùng quản trị có quyền truy cập để điều khiển các cài đặt hệ thống và thường có thể truy cập bất kỳ tệp tin hoặc ứng dụng nào trên hệ thống. Nếu người dùng thông thường được cấp quyền quản trị trên máy tính, và một kẻ tấn công có thể chiếm đoạt tài khoản của người dùng đó, thì kẻ tấn công sẽ có quyền hạn nâng cao trên hệ thống.
- 5.1.A.3 Khi các cài đặt kiểm soát truy cập được cấu hình yếu, nhiều người dùng thường có quyền xem và đôi khi cả chỉnh sửa các tệp tin trên hệ thống. Kẻ tấn công có thể lợi dụng các cài đặt kiểm soát truy cập yếu để đánh cắp, phá hủy tệp tin hoặc làm gián đoạn một ứng dụng.
Mục tiêu học tập 5.1.B: Giải thích cách các cuộc tấn công vào ứng dụng khai thác lỗ hổng bảo mật.
- 5.1.B.1 Ứng dụng là các chương trình chạy các lệnh trên máy tính; chúng là dữ liệu có thể thực thi. Một số ứng dụng chạy cục bộ trên máy tính của người dùng, trong khi các ứng dụng khác, như ứng dụng web, chạy trên máy chủ và được người dùng truy cập thông qua mạng lưới.
- 5.1.B.2 Nhiều ứng dụng nhận đầu vào từ người dùng thông qua các trường nhập liệu mở rộng, nơi người dùng có thể gõ ký tự (ví dụ: chữ cái, số, dấu câu). Các nhà phát triển nên bao gồm các kiểm tra đầu vào người dùng trong ứng dụng của họ, chẳng hạn như yêu cầu đầu vào số khi cần số lượng mặt hàng, để đảm bảo đầu vào người dùng khớp với những gì mong đợi; ứng dụng nên từ chối đầu vào nằm ngoài tham số mong đợi. Quá trình xác minh rằng đầu vào người dùng đáp ứng các tiêu chí mong đợi trước khi xử lý nó được gọi là xác thực dữ liệu. Các ứng dụng không xác thực được đầu vào người dùng sẽ dễ bị các cuộc tấn công kiểu chèn, nơi kẻ tấn công chèn chuỗi ký tự không mong muốn vào các trường nhập liệu để thay đổi hành vi của chương trình.
- 5.1.B.3 Ngôn ngữ truy vấn có cấu trúc (SQL) là ngôn ngữ máy tính được sử dụng để yêu cầu thông tin từ cơ sở dữ liệu và thực hiện các thay đổi đối với cơ sở dữ liệu hoặc các mục trong cơ sở dữ liệu. Các ứng dụng truy vấn cơ sở dữ liệu bằng cách sử dụng đầu vào không được xác thực hoặc không được loại bỏ đặc biệt an toàn từ người dùng sẽ dễ bị tổn thương.
- 5.1.B.4 Một cuộc tấn công chèn SQL đưa các lệnh SQL và ký tự điều khiển vào một trường nhập liệu của người dùng trong ứng dụng, điều này có thể dẫn đến vi phạm tính bảo mật bằng cách khiến ứng dụng trả về nhiều thông tin hơn mức cho phép, hoặc vi phạm tính toàn vẹn bằng cách sửa đổi hoặc xóa dữ liệu trong cơ sở dữ liệu.
- 5.1.B.5 Các trang web được viết bằng ngôn ngữ đánh dấu siêu văn bản (HTML), và nhiều trang web sử dụng Javascript để tạo nội dung động trên trang web hoặc ứng dụng web. Vì các lệnh Javascript chạy trong trình duyệt của người dùng đang truy cập trang web, các lệnh đó có thể truy cập dữ liệu nhạy cảm được lưu trữ trong trình duyệt như tên người dùng, mật khẩu và khóa mã hóa.
- 5.1.B.6 Một cuộc tấn công chèn mã xuyên trang (XSS) chèn mã độc hại vào một trang web mà sau đó trình duyệt của người dùng sẽ thực thi. Mã độc hại có thể được nhúng vào liên kết mà người dùng nhấp vào (cuộc tấn công XSS phản xạ Type I hoặc Reflected XSS) hoặc nó có thể được chèn vào trang web thông qua trường bình luận, bài đăng diễn đàn hoặc nhật ký khách访问, điều này sẽ ảnh hưởng đến bất kỳ người dùng nào truy cập trang web đó (cuộc tấn công XSS lưu trữ Type II hoặc Stored XSS).
- 5.1.B.7 Khi các ứng dụng nhận đầu vào từ người dùng, đầu vào đó được ghi vào bộ đệm. Bộ đệm là một phần bộ nhớ máy tính được chỉ định với kích thước cố định. Nếu lượng dữ liệu người dùng nhập vào vượt quá kích thước của bộ đệm, nó có thể tràn sang các vị trí bộ nhớ liền kề và ghi đè lên các phần khác của bộ nhớ máy tính.
- 5.1.B.8 Một cuộc tấn công tràn bộ đệm cung cấp nhiều dữ liệu vào bộ nhớ hơn mức được phân bổ, điều này có thể khiến hệ thống bị treo hoặc thực thi mã nằm ngoài phạm vi chính sách bảo mật của chương trình, về cơ bản cho phép kẻ tấn công thực hiện các hành vi trái phép trên máy tính, chẳng hạn như truy cập, sửa đổi hoặc xóa tệp tin.
- 5.1.B.9 Các tệp chạy ứng dụng web được lưu trữ trong các thư mục trên máy chủ. Khi người dùng truy cập ứng dụng web, trình duyệt của họ gửi yêu cầu GET bằng giao thức truyền tải siêu văn bản (HTTP). Yêu cầu GET truy cập vào một tệp ở đâu đó trong hệ thống tệp của máy chủ.
- 5.1.B.10 Trong cuộc tấn công duyệt thư mục, kẻ tấn công sửa đổi URL và yêu cầu GET để cố gắng truy cập dữ liệu nhạy cảm (ví dụ: tên người dùng và mật khẩu) trên hệ thống tệp của máy chủ.
- Ví dụ minh họa cho 5.1.B.10:
- Một máy chủ web lưu trữ hình ảnh cho một trang web mà nó托管 trong thư mục /var/www/images/. Một kẻ tấn công sửa đổi URL yêu cầu một hình ảnh thành ../../../etc/passwd. Hai chấm .. di chuyển lên một thư mục trong hệ thống tệp; vì vậy, ba dấu .. liên tiếp trả về đường dẫn đến gốc, và từ đó kẻ tấn công đang cố truy cập tệp passwd sẽ trả về danh sách tất cả các tên người dùng được ủy quyền trên thiết bị.
- Ví dụ minh họa cho 5.1.B.10:
Mục tiêu học tập 5.1.C: Đánh giá và ghi lại rủi ro từ các lỗ hổng bảo mật ứng dụng và dữ liệu.
- 5.1.C.1 Rủi ro bảo mật dữ liệu có thể bao gồm sự xâm phạm tính bảo mật khi những người không có thẩm quyền truy cập dữ liệu nhạy cảm, tính toàn vẹn khi dữ liệu có thể bị thao túng hoặc thay đổi so với trạng thái ban đầu, và khả năng sẵn có khi dữ liệu có thể bị phá hủy hoặc mã hóa để ngăn người khác truy cập vào nó.
- 5.1.C.2 Rủi ro cao từ các lỗ hổng dữ liệu thường liên quan đến dữ liệu cực kỳ nhạy cảm (ví dụ: dữ liệu chịu sự điều tiết bởi luật pháp hoặc quy định) có thể bị xâm phạm thông qua việc khai thác rất có khả năng xảy ra.
- Ví dụ minh họa cho 5.1.C.2:
- Công ty đang phát triển động cơ phản lực tiếp theo sẽ được Không quân sử dụng trong máy bay của họ đang lưu trữ các thông số kỹ thuật của động cơ trên ổ đĩa chưa được mã hóa.
- Ví dụ minh họa cho 5.1.C.2:
- 5.1.C.3 Rủi ro trung bình từ các lỗ hổng dữ liệu thường liên quan đến dữ liệu nhạy cảm không có độ mã hóa đủ mạnh hoặc kiểm soát truy cập đủ nghiêm ngặt.
- Ví dụ minh họa cho 5.1.C.3:
- Một công ty lưu trữ PII của khách hàng trong một bảng tính, và bảng tính đó được mã hóa bằng một khóa nhỏ.
- Ví dụ minh họa cho 5.1.C.3:
- 5.1.C.4 Rủi ro thấp từ các lỗ hổng dữ liệu thường liên quan đến việc mã hóa thông tin ít nhạy cảm hơn bằng khóa ngắn hoặc có kiểm soát truy cập không đủ nghiêm ngặt.
- Ví dụ minh họa cho 5.1.C.4:
- CEO của một tổ chức lưu trữ các bản ghi nhớ riêng tư gửi nhân viên điều hành trên ổ chia sẻ công ty không được mã hóa và không có kiểm soát truy cập nào.
- Ví dụ minh họa cho 5.1.C.4:


