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:
Tujuan Pembelajaran 5.1.A: Jelaskan bagaimana penyerang dapat mengeksploitasi kerentanan aplikasi dan file untuk menyebabkan kerugian, kerusakan, gangguan, atau kehancuran.
- 5.1.A.1 Penyerang dapat membaca semua file yang tidak dienkripsi jika mereka memiliki akses ke perangkat atau drive yang menyimpan file tersebut.
- 5.1.A.2 Komputer memiliki pengguna standar dan pengguna administratif. Pengguna administratif memiliki akses untuk mengontrol pengaturan sistem dan biasanya dapat mengakses semua file atau aplikasi pada sistem. Jika pengguna biasa diberikan hak akses administratif pada komputer, dan penjahat siber berhasil meretas akun pengguna, maka penjahat tersebut akan memiliki hak akses yang ditingkatkan pada sistem.
- 5.1.A.3 Ketika pengaturan kontrol akses dikonfigurasi dengan lemah, banyak pengguna sering kali memiliki izin untuk melihat dan terkadang bahkan mengedit file pada sistem. Penjahat siber dapat memanfaatkan pengaturan kontrol akses yang lemah untuk mencuri atau menghancurkan file, atau mengganggu sebuah aplikasi.
Tujuan Pembelajaran 5.1.B: Jelaskan bagaimana serangan aplikasi mengeksploitasi kerentanan.
- 5.1.B.1 Aplikasi adalah program yang menjalankan instruksi pada komputer; mereka merupakan data yang dapat dieksekusi. Beberapa aplikasi berjalan secara lokal di komputer pengguna, sementara aplikasi lain, seperti aplikasi web, berjalan di server dan diakses oleh pengguna melalui jaringan.
- 5.1.B.2 Banyak aplikasi menerima input pengguna melalui bidang input terbuka di mana pengguna dapat mengetik karakter (misalnya, huruf, angka, tanda baca). Pengembang harus menyertakan pemeriksaan input pengguna dalam aplikasi mereka, seperti memasukkan input numerik ketika diminta jumlah item, untuk memastikan bahwa input pengguna sesuai dengan yang diharapkan; aplikasi harus menolak input di luar parameter yang diharapkan. Proses memverifikasi apakah input pengguna memenuhi kriteria yang diharapkan sebelum memprosesnya disebut validasi data. Aplikasi yang gagal memvalidasi input pengguna rentan terhadap serangan jenis injeksi, di mana penjahat siber menyisipkan string karakter tak terduga di bidang input untuk mengubah perilaku program.
- 5.1.B.3 Structured Query Language (SQL) adalah bahasa pemrograman yang digunakan untuk meminta informasi dari basis data dan melakukan perubahan pada basis data atau entri dalam basis data. Aplikasi yang querying basis data menggunakan input yang tidak divalidasi atau tidak dibersihkan dari pengguna rentan terhadap serangan ini.
- 5.1.B.4 Serangan SQL-injection menempatkan perintah SQL dan karakter kontrol ke dalam bidang input pengguna pada aplikasi, yang dapat menyebabkan pelanggaran kerahasiaan dengan membuat aplikasi mengembalikan lebih banyak informasi daripada seharusnya, atau pelanggaran integritas dengan memodifikasi atau menghapus data dalam basis data.
- 5.1.B.5 Website ditulis menggunakan hypertext markup language (HTML), dan banyak website menggunakan Javascript untuk membuat konten dinamis pada website atau aplikasi web. Karena perintah Javascript berjalan di browser pengguna yang mengunjungi website, perintah-perintah tersebut dapat mengakses data sensitif yang disimpan di browser seperti nama pengguna, kata sandi, dan kunci kriptografi.
- 5.1.B.6 Serangan cross-site scripting (XSS) menyisipkan kode berbahaya ke dalam website yang kemudian dieksekusi oleh browser pengguna. Kode berbahaya dapat tertanam dalam tautan yang diklik pengguna (serangan XSS Tipe I atau Reflected XSS) atau dapat disisipkan ke dalam website melalui bidang komentar, postingan forum, atau log pengunjung, yang akan mempengaruhi setiap pengguna yang mengunjungi website tersebut (serangan XSS Tipe II atau Stored XSS).
- 5.1.B.7 Ketika aplikasi menerima input pengguna, input tersebut ditulis ke dalam buffer. Buffer adalah bagian memori komputer yang ditunjuk dengan ukuran tetap. Jika jumlah data yang dimasukkan pengguna melebihi ukuran buffer, data tersebut dapat meluber ke lokasi memori tetangga dan menimpa bagian lain dari memori komputer.
- 5.1.B.8 Serangan buffer overflow memasukkan lebih banyak data ke dalam memori daripada yang dialokasikan, yang dapat menyebabkan sistem crash atau menjalankan kode di luar jangkauan kebijakan keamanan program, sehingga secara efektif memungkinkan penjahat siber untuk melakukan tindakan tidak sah pada komputer, seperti mengakses, memodifikasi, atau menghapus file.
- 5.1.B.9 File yang menjalankan aplikasi web disimpan dalam direktori pada server. Ketika pengguna mengakses aplikasi web, browser mereka mengirim permintaan GET menggunakan hypertext transfer protocol (HTTP). Permintaan GET mengakses file di suatu tempat di filesystem server.
- 5.1.B.10 Dalam serangan directory traversal, penjahat siber memodifikasi URL dan permintaan GET untuk mencoba mengakses data sensitif (misalnya, nama pengguna dan kata sandi) pada filesystem server.
- Contoh ilustratif untuk 5.1.B.10:
- Server web menyimpan gambar untuk website yang dihosting-nya di direktori /var/www/images/. Penjahat siber memodifikasi URL yang meminta gambar menjadi ../../../etc/passwd. Tanda .. memindahkan satu direktori naik dalam filesystem; jadi tiga tanda .. berturut-turut mengembalikan path ke root, dan dari sana penjahat siber mencoba mengakses file passwd yang akan mengembalikan daftar semua nama pengguna berwenang pada perangkat.
- Contoh ilustratif untuk 5.1.B.10:
Tujuan Pembelajaran 5.1.C: Menilai dan mendokumentasikan risiko dari kerentanan aplikasi dan data.
- 5.1.C.1 Risiko keamanan data dapat melibatkan kompromi kerahasiaan ketika orang tak berwenang dapat mengakses data sensitif, integritas ketika data dapat dimanipulasi atau diubah dari keadaan aslinya, dan ketersediaan ketika data dapat dihancurkan atau dienkripsi untuk mencegah orang lain mengaksesnya.
- 5.1.C.2 Risiko tinggi dari kerentanan data sering melibatkan data yang sangat sensitif (misalnya, data yang diatur oleh undang-undang atau peraturan) yang dapat dikompromikan melalui eksploitasi yang sangat mungkin terjadi.
- Contoh ilustratif untuk 5.1.C.2:
- Perusahaan yang mengembangkan mesin jet berikutnya yang akan digunakan oleh Angkatan Udara dalam pesawatnya menyimpan spesifikasi teknis mesin tersebut pada drive tanpa enkripsi.
- Contoh ilustratif untuk 5.1.C.2:
- 5.1.C.3 Risiko sedang dari kerentanan data sering melibatkan data sensitif yang tidak memiliki enkripsi yang cukup kuat atau kontrol akses yang ketat.
- Contoh ilustratif untuk 5.1.C.3:
- Sebuah perusahaan menyimpan PII pelanggannya dalam spreadsheet, dan spreadsheet tersebut dienkripsi menggunakan kunci kecil.
- Contoh ilustratif untuk 5.1.C.3:
- 5.1.C.4 Risiko rendah dari kerentanan data sering kali melibatkan informasi yang kurang sensitif yang dienkripsi dengan kunci yang lebih pendek atau memiliki kontrol akses yang tidak cukup ketat.
- Contoh ilustratif untuk 5.1.C.4:
- CEO sebuah organisasi menyimpan memo pribadinya kepada staf eksekutif pada drive berbagi perusahaan yang tidak terenkripsi dan tidak memiliki kontrol akses.
- Contoh ilustratif untuk 5.1.C.4:


