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 コンピュータには標準ユーザーと管理者ユーザーがあります。管理者ユーザーはシステム設定の制御にアクセスでき、通常、システム上のすべてのファイルやアプリケーションにアクセスできます。標準ユーザーに管理者権限が与えられており、攻撃者がユーザーのアカウントを乗っ取った場合、攻撃者はシステム上で elevated privileges( comented privileges )を獲得することになります。
- 5.1.A.3 アクセス制御設定が緩く設定されている場合、多くのユーザーがシステム上のファイルの表示、さらには編集へのアクセス権限を持つことがあります。攻撃者はこれらの弱いアクセス制御設定を利用し、ファイルを盗み出したり破棄したり、アプリケーションを妨害したりすることがあります。
学習目標 5.1.B: アプリケーション攻撃が脆弱性をどのように利用するかを説明する。
- 5.1.B.1 アプリケーションはコンピューターで命令を実行するプログラムであり、実行可能なデータです。一部のアプリケーションはユーザーのコンピューター上でローカルに動作しますが、Webアプリケーションなどの他のアプリケーションはサーバー上で動作し、ユーザーがネットワークを通じてアクセスします。
- 5.1.B.2 多くのアプリケーションは、ユーザーが文字(例:アルファベット、数字、記号)を入力できるオープンエンドの入力フィールドを通じてユーザー入力を取得します。開発者は、アイテム数を問われた際に数値入力を行うようにするなどの、ユーザー入力の検証をアプリケーションに含めるべきです。これにより、ユーザー入力が期待される内容と一致していることを確認でき、期待されるパラメータ外の入力は拒否されます。このように、処理前にユーザー入力が期待される基準を満たしているかを検証するプロセスは「データバリデーション」と呼ばれます。ユーザー入力を検証しないアプリケーションは、攻撃者が入力フィールドに予期せぬ文字列を挿入してプログラムの動作を変更する注入型攻撃に対して脆弱となります。
- 5.1.B.3 スtructured query language (SQL) は、データベースから情報を要求したり、データベースやそのエントリの変更を行ったりするために使用されるコンピューター言語です。ユーザーからの検証されていないまたは清浄化されていない入力でデータベースを照会するアプリケーションは脆弱性があります。
- 5.1.B.4 SQLインジェクション攻撃では、SQLコマンドや制御文字がアプリケーションの入力フィールドに配置され、これが機密性の侵害(アプリケーションが返すべき以上の情報を返すこと)、または整合性の侵害(データベース内のデータの修改や削除)を引き起こすことがあります。
- 5.1.B.5 ウェブサイトはhypertext markup language (HTML) で記述されており、多くのウェブサイトではdynamic content(動的コンテンツ)を作成するためにJavascriptを使用しています。 Javascriptコマンドは訪問者のブラウザ内で実行されるため、それらのコマンドはブラウザ内に格納されたユーザー名、パスワード、暗号鍵などの敏感なデータにアクセスできます。
- 5.1.B.6 A cross site scripting (XSS) attack(クロスサイトスクリプティング攻撃)では、悪意のあるコードがウェブサイトへ注入され、ユーザーのブラウザによって実行されます。悪意のあるコードは、ユーザーがクリックするリンクに埋め込まれている場合(Type I または Reflected XSS 攻撃)や、コメント欄、フォーラム投稿、访客日志(visitor log)を介してサイトに挿入され、そのサイトを訪問するすべてのユーザーに影響を与える場合(Type II または Stored XSS 攻撃)があります。
- 5.1.B.7 アプリケーションがユーザー入力を取得すると、その入力はバッファに書き込まれます。バッファとは、固定サイズを持つコンピューターメモリの指定された領域です。ユーザーが入力したデータ量がバッファのサイズを超えると、隣接するメモリ領域にオーバーフローし、コンピューターのメモリの他の部分を上書きすることがあります。
- 5.1.B.8 バッファオーバーフロー攻撃では、割り当てられた量よりも多くのデータをメモリに供給することで、システムがクラッシュしたり、プログラムのセキュリティポリシーの範囲外でコードを実行したりすることがあり、結果として攻撃者にファイルのアクセス、修改、または削除など、コンピューター上での不正操作を許可することになります。
- 5.1.B.9 Webアプリケーションを実行するファイルは、サーバー上のディレクトリに保存されています。ユーザーがWebアプリケーションにアクセスすると、そのブラウザはhypertext transfer protocol (HTTP) を用いてGETリクエストを送信します。GETリクエストはサーバーのファイルシステム内のどこかのファイルにアクセスします。
- 5.1.B.10 ディレクトリトラバーサル攻撃では、攻撃者はURLやGETリクエストを改変し、サーバーのファイルシステム上の敏感なデータ(例:ユーザー名とパスワード)にアクセスしようと試みます。
- 5.1.B.10 の具体例:
- 某ウェブサーバーがホストするサイトの画像を /var/www/images/ デレクトリに格納しています。攻撃者は画像を要求するURLを ../../../etc/passwd に変更します。 .. はファイルシステム内で1つ上のディレクトリを示すため、3つの連続する .. はルートパスを指し示し、そこから攻撃者は passwd ファイルにアクセスしようとし、これはデバイス上のすべての承認済みユーザー名のリストを返します。
- 5.1.B.10 の具体例:
学習目標 5.1.C: アプリケーションおよびデータの脆弱性からのリスクを評価・文書化する。
- 5.1.C.1 データセキュリティリスクには、未授权者(unauthorized persons )が敏感なデータにアクセスできることで機密性が侵害されること、データが意図した状態から操作・修改されることで整合性が侵害されること、データが破壊または暗号化されて他者がアクセスできなくなることで可用性が侵害されることが含まれます。
- 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 の例:
- 組織のCEOが、暗号化されておらずアクセス制御も設定されていない会社共用ドライブに、役員への私人メモを保管している。
- 5.1.C.4 の例:


