ISO/IEC TR 24772-1:2019 プログラミング言語—プログラミング言語の脆弱性を回避するためのガイダンス—パート1:言語に依存しないガイダンス | ページ 6

※一部、英文及び仏文を自動翻訳した日本語訳を使用しています。

3 用語と定義

このドキュメントの目的のために、ISO/IEC 2382, ISO 80000-2 および以下に記載されている用語と定義が適用されます。

ISO と IEC は、次のアドレスで標準化に使用する用語データベースを維持しています。

3.1 通信に関する用語

3.1.1

プロトコル

スレッドの相互作用のためのルールとサポート構造のセット

注記 1:プロトコルは密に埋め込まれ、メモリとハードウェア内のデータに依存してスレッドの相互作用を制御することも、ネットワークとコンピュータ システムにまたがるメッセージ通信など、より疎結合の構成に適用することもできます。

3.1.2

ステートレス プロトコル

プロトコル自体に状態が保持されないスレッド間の通信または協調 (例: HTTP または共有リソースへの直接アクセス)

注記 1:スレッド間のほとんどの対話では状態を保持する必要があるため、協調するスレッドはリソース自体の値を使用するか、状態を維持するために追加の通信交換を追加する必要があります。ステートレス プロトコルでは、アプリケーションが明示的なリソース保護とロック メカニズムを提供して、リソースの正しい作成、表示、アクセス、変更、および破棄を保証する必要があります。たとえば、リソースの正しい処理に必要な状態です。

3.2 実行モデルに関する用語

3.2.1

実行のシーケンシャル ストリーム

注記 1:スレッドという用語がここで使用されており、描写されているコンテキストは、プロセスの一部として実行されている共有メモリ スレッドのコンテキストですが、文書化されているすべてのことは、プロセスによって有効にされている割り込みハンドラーなど、並行性の他のバリアントにも同様に適用されます。オペレーティング システム ルーチンを使用して同じシステム上に作成されるプロセス、またはネットワーク経由で送信された分散メッセージの結果として作成されるプロセス。緩和アプローチは、関連する脆弱性の説明に記載されているものと似ていますが、標準化への影響は、並行システムのプログラミングに提供される言語サポートの程度によって異なります。

3.2.2

スレッドのアクティブ化

スレッドが実行を開始するポイントまでのスレッドの作成とセットアップ

注記 1スレッドは、1 つ以上の他のスレッドに依存して、アクセスされる他のオブジェクトへのアクセスを定義し、その期間を決定することができます。

3.2.3

活性化されたスレッド

作成され、スレッドのアクティブ化の結果として実行を開始するスレッド

3.2.4

スレッドのアクティブ化

最初に存在し、ライブラリ呼び出しを行うスレッド、またはアクティブなスレッドをアクティブにする言語構文を含むスレッド

注記 1:アクティブ化されたスレッドは、アクティブ化されたスレッドがアクティブ化を終了するまで待機する場合と待機しない場合があり、アクティブ化が失敗した場合にエラーをチェックする場合としない場合があります。アクティブ化されたスレッドは、アクティブ化されたスレッドが終了するまで終了することを許可することも、許可しないこともできます。

3.2.5

静的スレッドのアクティブ化

プログラムの開始、オペレーティング システムまたはランタイム カーネルによるスレッドの作成と開始、または実行開始前のスレッドの宣言部分の一部としての別のスレッドによるスレッドの作成と開始

注記 1:静的アクティベーションでは、静的分析により、作成されるスレッドの数と、メモリ、プロセッサ、CPU サイクル、優先度範囲、およびスレッド間通信構造に関して、スレッドによって必要とされるリソースの量を正確に判断できます。プログラムの開始前にプログラムを実行します。

3.2.6

動的スレッドのアクティブ化

実行可能で反復可能なコマンド、ステートメント、またはサブプログラム呼び出しとしての別のスレッド (メインプログラムを含む) によるスレッドの作成および開始

3.2.7

スレッドの中止

スレッドをすぐに停止してシャットダウンするように要求する

注記 1:要求は、別のスレッドからの場合は非同期であり、スレッド自体からの場合は同期です。アボート要求の効果 (例外として扱われるかどうかなど) とその即時性 (つまり、スレッドがシャットダウンされる前に実行を継続できる時間) は、言語固有の規則によって異なります。即時シャットダウンは待ち時間を最小限に抑えますが、共有データ構造が破損した状態のままになる可能性があります。

3.2.8

終了指示スレッド

1 つ以上のスレッドの中止を要求するスレッド (OS を含む)

3.2.9

スレッド終了

スレッドの完了と正常なシャットダウン。スレッドは、データ オブジェクトの一貫性を保ち、取得したリソースを解放し、依存スレッドに終了を通知することが許可されます。

注記 1:スレッドの終了には、以下に示すように多数のステップがありますが、マルチスレッド モデルによっては、これらのステップの一部が組み合わされたり、明示的にプログラムされたり、省略されたりする場合があります。
  • 同期通信の終了を含む、スレッドのプログラムされた実行の終了。
  • スレッドのローカル オブジェクトのファイナライズ。
  • スレッドに依存する可能性のあるスレッドが終了するのを待機します。
  • 依存スレッドに関連付けられた状態のファイナライズ。
  • ファイナライズが完了したという通知。これには、アクティブ化タスクの通知が含まれる可能性があります。
  • スレッド制御ブロックの削除とクリーンアップ、およびスレッドまたは外部スコープの他のスレッドによってアクセス可能な状態。

3.2.10

終了したスレッド

それ以降の実行が停止されたスレッド

3.2.11

マスタースレッド

次の実行ステップ (自身の終了を含む) を実行する前に、終了したスレッドを待機する必要があるスレッド

3.2.12

処理する

プログラムの単一実行、またはアプリケーションの一部

注記 1:プロセスは通常、共通のメモリ空間を共有しませんが、多くの場合、次のものを共有します。
  • プロセッサ;
  • 通信網;
  • オペレーティング·システム;
  • ファイリングシステム;
  • 環境変数;また
  • 他のリソース。
プロセスは通常、オペレーティング システムによって開始および停止され、他のプロセスと対話する場合と対話しない場合があります。プロセスには複数のスレッドを含めることができます。

3.3 プロパティ

3.3.1

ソフトウェア品質

ソフトウェアがその仕様によって記述された要件を実装する程度、およびソフトウェア製品の特性がその要件を満たす程度

3.3.2

予測可能な実行

すべての可能な実行がソースコードから予測できる結果を持つようなプログラムのプロパティ

3.4 セキュリティ

3.4.1

安全上の問題

危害の潜在的な原因

注記 1: IEC 61508-4 [20]は、潜在的な危害の原因として危険を定義しています。ここで、危害is、直接的または間接的に、財産または環境への損害の結果としての身体的損傷または人々の健康への損害です。 UK Defence Standard 00-56 などの一部の派生規格では、危害の定義を広げて、物的損害や環境損害を含めています (物的損害や環境損害による人への危害だけではありません)

3.4.2

安全上重要なソフトウェア

故障が人身傷害や死亡などの非常に重大な結果を引き起こす可能性があるアプリケーション向けのソフトウェア

注記 1: IEC 61508-3 [20]は、安全関連ソフトウェアas、安全関連システムで安全機能を実装するために使用されるソフトウェアと定義しています。一部のドメインでは、安全関連 (害を及ぼす可能性がある) と安全上重要 (生命を脅かす) が区別されていますが、このドキュメントでは、安全上の問題を引き起こす可能性のあるすべての脆弱性に対して安全上重要という用語を使用しています。

3.5 脆弱性

3.5.1

アプリケーションの脆弱性

セキュリティの脆弱性または安全上の問題、または欠陥

3.5.2

言語の脆弱性

その言語で書かれたプログラムのアプリケーションの脆弱性に寄与する、または強く相関する (プログラミング言語の)プロパティ

注記1:プロパティという用語は,単独または組み合わせて使用​​される特定の機能の存在または非存在を意味する場合がある。機能がない例として、カプセル化 (名前を参照できる場所の制御) は、モジュール間のインターフェイスを狭め、データの破損を防ぐのに役立つため、一般的に有益であると考えられています。したがって、プログラミング言語からのカプセル化の欠如は、脆弱性と見なすことができます。プロパティとその補完要素の両方が言語の脆弱性と見なされる可能性があることに注意してください。たとえば、自動ストレージ再利用 (ガベージ コレクション) は、時間の予測可能性を妨げ、安全上の問題を引き起こす可能性があるため、脆弱性になる可能性があります。一方、ストレージの自動再利用がないことも脆弱性になる可能性があります。これは、プログラマーが誤って時期尚早にストレージを解放し、ダングリング参照が発生する可能性があるためです。

3.5.3

セキュリティの脆弱性

情報システム、システムの弱点、セキュリティ手順、内部統制、または脅威によって悪用またはトリガーされる可能性のある実装

3.5.4

失敗

システムまたはコンポーネントの誤動作で、サブカテゴリとして、省略の失敗、手数料の失敗、タイミングの失敗、および価値の失敗があります。

3.5.5

省略失敗

要求されたが提供されなかったサービス

注記 1:クライアントは永久に待機することも、サービスの失敗 (終了) について通知を受けることもできます。

3.5.6

コミッションの失敗

予期しないアクションを開始するサービス。たとえば、受信者にとって予期しない通信

注記 1:サービスは永久に待機する可能性があり、クライアントによる後続の呼び出しで省略エラーが発生します。受信者は、正当なアクションを時間内に実行できなくなります。少なくとも、他のユーザーが必要とする可能性のあるリソースが消費されます。

3.5.7

タイミングの失敗

課せられた期限までに提供されないサービス

注記 1:これにより、システムの応答が (遅すぎる) ことになり、システムの影響を受ける現実の世界に対応する損害が生じます。

3.1.5.8

値の失敗

サービスが不正確または汚染された結果を提供する

注記 1:クライアントは、これらの破損した値を使用して計算を続行し、結果としてアプリケーション エラーが広がります。

参考文献

[1]Ada の品質とスタイルとガイド、プロのプログラマーのためのガイドライン。 https://en.wikibooks.org/wiki/Ada_Style_Guide
[2]ARIANE 5: 501 便の失敗、調査委員会による報告、1996 年 7 月 19 日 http://esamultimedia.esa.int/docs/esa-x-1819eng.pdf
[3]Barnes John, 高信頼性ソフトウェア - 安全性とセキュリティへの SPARK アプローチ.アディソン・ウェズリー。 2002年
[4]Burns Alan, Wellings Andy, Real-Time Systems and Programming Languages: Ada, Real-time Java and C/Real-Time POSIX (4th Edition), Addison Wesley 2009
[5]Bhansali PV, セーフティ クリティカルなソフトウェアの安全なサブセットを特定するための体系的なアプローチ、 ACM SIGSOFT ソフトウェア エンジニアリング ノート、v.28 n.4, 2003 年 7 月
[6]CERT, CERT C++ セキュア コーディング標準。 https://wiki.sei.cmu.edu/confluence/display/c/SEI+CERT+C+Coding+Standard (2016)
[7]Christy Steve, CVE の脆弱性タイプ分布、V1.0, 2006/10/04
[8]CWE, The Common Weakness Enumeration (CWE) Initiative, MITRE Corporation, ( http://cwe.mitre.org/ )
[9]Dionisio, John David N, 型チェック。 http://myweb.lmu.edu/dondi/share/pl/type-checking-v02.pdf
[10]Einarsson Bo 編、 Accuracy and Reliability in Scientific Computing 、SIAM, 2005 年 7 月 http://www.nsc.liu.se/wg25/book
[11]レポート GAO, Patriot Missile Defense: Software Problem Led to System Failure at Dhahran, サウジアラビア、B-247094, 1992 年 2 月 4 日、 http: //archive.gao.gov/t2pbat6/145960.pdf
[12]ガッサン A, アルカディ I, 2003 年)。 OO 設計への再設計への改訂された DIT メトリックの適用。オブジェクト技術ジャーナル、127-13
[13]Ghezzi Carlo, Jazayeri Mehdi, プログラミング言語の概念、第 3 版、ISBN-0-471-10426-4, John Wiley & Sons, 1998 年
[14]Goldberg D.、What ECSSKAF-PA, ACM Computing Surveys, vol 23, issue , ISSN 0360-0300, pp 5-4
[15]Hatton Les, Safer C: 高信頼性および安全性が重要なシステム用のソフトウェアの開発マグロウヒル 1995
[16]Hoare CAR, Communicating Sequential Processes 、Prentice Hall, 1985
[17]Hogaboom Richard, A Generic API Bit Manipulation in C, Embedded Systems Programming 、Vol 12, No 7, 1999 年 7 月 http://www.embedded.com/1999/9907/9907feat2.htm (リンク切れ) サイトにまだ存在)
[18]Holzmann Garard J.、The Power of 10: Safety-Critical Code 開発のルール、Computer, vol. 39, no. 6, pp 95-97, IEEE, 2006 年 6 月、
[19]Holzmann Gerard J.、 SPIN Model Checker: Primer and Reference Manual 、Addison-Wesley, 2004
[20]IEC 61508 (すべての部分) 、機能安全: 安全関連システム
[21]ISO/IEC 1539-1, プログラミング言語 — Fortran — 1: ベース言語
[22]ISO/IEC 8652, 情報技術 — プログラミング言語 — Ada
[23]ISO/IEC 9899, 情報技術 — プログラミング言語 — C
[24]ISO/IEC 14882, プログラミング言語 — C++
[25]ISO/IEC 1540, 情報技術 — セキ​​ュリティ技術 — IT セキュリティの評価基準
[26]ISO/IEC TR 15942, 情報技術 - プログラミング言語 - 高信頼性システムにおける Ada プログラミング言語の使用ガイド
[27]ISO/IEC TR 24718, 情報技術 — プログラミング言語 — 高度な整合性システムでの Ada Ravenscar プロファイルの使用に関するガイド
[28]ISO/IEC TR 24731-1, 情報技術 — プログラミング言語、その環境、およびシステム ソフトウェア インターフェイス — C ライブラリの拡張 — 1: 境界チェック インターフェイス
[29]ISO/IEC 30170:2012, 情報技術 — プログラミング言語 — Ruby
[30]ISO/IEC/IEEE 60559:2011, 情報技術 - マイクロプロセッサ システム - 浮動小数点演算
[31]JSF, Joint Strike Fighter Air Vehicle: システム開発およびデモンストレーション プログラムの C++ コーディング標準。ロッキード・マーチン社。 2005 年 12 月。
[32]Kopetz Hermann, Real-Time Systems: Design Principles for Distributed Embedded Applications 、Springer 2011
[33]Larsen P., Wang, Model Checking for Real-Time Systems, Proceedings of the th International Conference on Fundamentals of Computation Theory, 1995
[34]ライオンズ JL, ARIANE 5 フライト 501 障害レポート。フランス、パリ: 欧州宇宙機関 (ESA) & 国立宇宙研究センター (CNES) 調査委員会、1996 年 7 月。 https://en.wikisource.org/wiki/Ariane_501_Inquiry_Board_report で入手可能
[35]MISRA Limited 、MISRA C: 2012 重要なシステムでの C 言語の使用に関するガイドライン。イギリス、ウォリックシャー: MIRA Limited, 2013 年 3 月 (ISBN 978-1-906400-10-1 および 978-1-906400-11-8) https://www.misra.org.uk/ で入手可能
[36]MISRA, Motor Industry Software Reliability Association, クリティカル システムでの C++ 言語の使用に関するガイドライン、2008 年 6 月
[37]RTCA DO178C/ED12C:2011, -米国では航空の要件と技術概念によって発行され、欧州では欧州民間航空電子機構 2011 によって発行された航空機搭載システムおよび機器認証におけるソフトウェアの考慮事項
[38]Seacord Robert, CERT C セキュア コーディング標準マサチューセッツ州ボストン: Addison-Westley, 2008 年。
[39]Seacord R. C および C++ でのセキュア コーディング。マサチューセッツ州ボストン: Addison-Wesley, 2013 年。ニュースと正誤表については、 https://www.cert.org/books/secure-coding を参照してください。
[40]Sebesta Robert W.、プログラミング言語の概念、第 8 版、ISBN-13: 978-0-321-49362-0, ISBN-10: 0-321-49362-1, ピアソン教育、ボストン、マサチューセッツ州、2008 年
[41]Skeel R., Missile RECP, SIAM News, Volume 25, Number 4, July 1992, page 11
[42]Subramanian S, Tsai WT, Rayadurgam S, 1998)セーフティ クリティカル システムにおける設計制約違反の検出。高保証システム エンジニアリングに関する第 3 回 IEEE 国際シンポジウム、109 - 11
[43]http://www.ascii.cl/control-characters.htm を参照してください。
[44]http://www.ascii.cl/control-characters.htm を参照してください。
[45]ISO/IEC 10967-1:2012, 情報技術 — 言語に依存しない算術演算 — 1: 整数および浮動小数点演算
[46]ISO/IEC 10967-2:2001, 情報技術 — 言語に依存しない算術演算 — 2: 初等数値関数
[47]ISO/IEC 10967-3:2006, 情報技術 — 言語に依存しない算術演算 — 3: 複雑な整数と浮動小数点の算術演算と複雑な初等数値関数

3 Terms and definitions

For the purposes of this document, the terms and definitions given in ISO/IEC 2382, ISO 80000-2 and the following apply.

ISO and IEC maintain terminological databases for use in standardization at the following addresses:

3.1 Terms related to communication

3.1.1

protocol

set of rules and supporting structures for the interaction of threads

Note 1 to entry: A protocol can be tightly embedded and rely on data in memory and hardware to control interaction of threads or can be applied to more loosely coupled arrangements, such as message communication spanning networks and computer systems.

3.1.2

stateless protocol

communication or cooperation between threads where no state is preserved in the protocol itself (example HTTP or direct access to a shared resource)

Note 1 to entry: Since most interaction between threads requires that state be preserved, the cooperating threads needs to use values of the resources(s) themselves or add additional communication exchanges to maintain state. Stateless protocols require that the application provide explicit resource protection and locking mechanisms to guarantee the correct creation, view, access to, modification of, and destruction of the resource – for example, the state needed for correct handling of the resource.

3.2 Terms related to execution model

3.2.1

thread

sequential stream of execution

Note 1 to entry: Although the term thread is used here and the context portrayed is that of shared-memory threads executing as part of a process, everything documented applies equally to other variants of concurrency such as interrupt handlers being enabled by a process, processes being created on the same system using operating system routines, or processes created as a result of distributed messages sent over a network. The mitigation approaches will be similar to those listed in the relevant vulnerability descriptions, but the implications for standardization would be dependent on how much language support is provided for the programming of the concurrent system.

3.2.2

thread activation

creation and setup of a thread up to the point where the thread begins execution

Note 1 to entry: A thread can depend on one or more other threads to define its access to other objects to be accessed and to determine its duration.

3.2.3

activated thread

thread that is created and then begins execution as a result of thread activation

3.2.4

activating thread

thread that exists first and makes the library calls or contains the language syntax that causes the activated thread to be activated

Note 1 to entry: The activating thread may wait, or not, for the activated thread to finish activation and may or may not check for errors if the activation fails. The activating thread can be permitted, or not, to terminate until after the activated thread terminates.

3.2.5

static thread activation

creation and initiation of a thread by program initiation, an operating system or runtime kernel, or by another thread as part of a declarative part of the thread before it begins execution

Note 1 to entry: In static activation, a static analysis can determine exactly how many threads will be created and how much resource, in terms of memory, processors, CPU cycles, priority ranges and inter-thread communication structures, will be needed by the executing program before the program begins.

3.2.6

dynamic thread activation

creation and initiation of a thread by another thread (including the main program) as an executable, repeatable command, statement or subprogram call

3.2.7

thread abort

request to stop and shut down a thread immediately

Note 1 to entry: The request is asynchronous if from another thread, or synchronous if from the thread itself. The effect of the abort request (such as whether it is treated as an exception) and its immediacy (that is, how long the thread can continue to execute before it is shut down) depend on language-specific rules. Immediate shutdown minimizes latency but can leave shared data structures in a corrupted state.

3.2.8

termination-directing thread

thread (including the OS) that requests the abortion of one or more threads

3.2.9

thread termination

completion and orderly shutdown of a thread, where the thread is permitted to make data objects consistent, release any acquired resources, and notify any dependent threads that it is terminating

Note 1 to entry: There are a number of steps in the termination of a thread as listed below, but depending on the multithreading model, some of these steps can be combined, explicitly programmed, or missing:
  • the termination of programmed execution of the thread, including termination of any synchronous communication;
  • the finalization of the local objects of the thread;
  • waiting for any threads that can depend on the thread to terminate;
  • finalization of any state associated with dependent threads;
  • notification that finalization is complete, including possible notification of the activating task;
  • removal and clean-up of thread control blocks and any state accessible by the thread or by other threads in outer scopes.

3.2.10

terminated thread

thread that has been halted from any further execution

3.2.11

master thread

thread which needs to wait for a terminated thread before it can take further execution steps (including termination of itself)

3.2.12

process

single execution of a program, or portion of an application

Note 1 to entry: Processes do not normally share a common memory space, but often share:
  • processor;
  • network;
  • operating system;
  • filing system;
  • environment variables; or
  • other resources.
Processes are usually started and stopped by an operating system and may or may not interact with other processes. A process can contain multiple threads.

3.3 Properties

3.3.1

software quality

degree to which software implements the requirements described by its specification and the degree to which the characteristics of a software product fulfil its requirements

3.3.2

predictable execution

property of the program such that all possible executions have results that can be predicted from the source code

3.4 Safety

3.4.1

safety hazard

potential source of harm

Note 1 to entry: IEC 61508–4[20] defines a Hazard as a potential source of harm, where harmisphysical injury or damage to the health of people either directly or indirectly as a result of damage to property or to the environment. Some derived standards, such as UK Defence Standard 00-56, broaden the definition of harm to include material and environmental damage (not just harm to people caused by property and environmental damage).

3.4.2

safety-critical software

software for applications where failure can cause very serious consequences such as human injury or death

Note 1 to entry: IEC 61508–3[20] defines Safety-related softwareassoftware that is used to implement safety functions in a safety-related system. Although, in some domains a distinction is made between safety-related (can lead to any harm) and safety-critical (life threatening), this document uses the term safety-critical for all vulnerabilities that can result in safety hazards.

3.5 Vulnerabilities

3.5.1

application vulnerability

security vulnerability or safety hazard, or defect

3.5.2

language vulnerability

property (of a programming language) that can contribute to, or that is strongly correlated with, application vulnerabilities in programs written in that language.

Note 1 to entry: The term property can mean the presence or the absence of a specific feature, used singly or in combination. As an example of the absence of a feature, encapsulation (control of where names can be referenced from) is generally considered beneficial since it narrows the interface between modules and can help prevent data corruption. The absence of encapsulation from a programming language can thus be regarded as a vulnerability. Note that a property together with its complement can both be considered language vulnerabilities. For example, automatic storage reclamation (garbage collection) can be a vulnerability since it can interfere with time predictability and result in a safety hazard. On the other hand, the absence of automatic storage reclamation can also be a vulnerability since programmers can mistakenly free storage prematurely, resulting in dangling references.

3.5.3

security vulnerability

weakness in an information system, system security procedures, internal controls, or implementation that can be exploited or triggered by a threat

3.5.4

failure

malfunction of the system or component which has as subcategories omission failure, commission failure, timing failure and value failure

3.5.5

omission failure

service that is requested but never rendered

Note 1 to entry: The client can wait forever or can be notified about the failure (termination) of the service.

3.5.6

commission failure

service that initiates unexpected actions, e. g., communication that is unexpected by the receiver

Note 1 to entry: The service can wait forever, causing omission failures for subsequent calls by clients. The receiver can be hindered to do its legitimate actions in time. At a minimum, resources are consumed that are possibly needed by others.

3.5.7

timing failure

service that is not rendered before an imposed deadline

Note 1 to entry: This results in a system response that is (too) late, causing corresponding damages to the real world affected by the system.

3.1.5.8

value failure

service delivers incorrect or tainted results

Note 1 to entry: The client continues computations with these corrupted values, causing a spread of consequential application errors.

Bibliography

[1]Ada Quality and Style and Guide, Guidelines for professional programmers. https://en.wikibooks.org/wiki/Ada_Style_Guide
[2]ARIANE 5: Flight 501 Failure, Report by the Inquiry Board, July 19, 1996 http://esamultimedia.esa.int/docs/esa-x-1819eng.pdf
[3]Barnes John, High Integrity Software - the SPARK Approach to Safety and Security. Addison-Wesley. 2002.
[4]Burns Alan, Wellings Andy, Real-Time Systems and Programming Languages: Ada, Real-time Java and C/Real-Time POSIX (4th Edition), Addison Wesley 2009
[5]Bhansali P. V., A systematic approach to identifying a safe subset for safety-critical software, ACM SIGSOFT Software Engineering Notes, v.28 n.4, July 2003
[6]CERT, CERT C++ Secure Coding Standard. https://wiki.sei.cmu.edu/confluence/display/c/SEI+CERT+C+Coding+Standard (2016).
[7]Christy Steve, Vulnerability Type Distributions in CVE, V1.0, 2006/10/04
[8]CWE, The Common Weakness Enumeration (CWE) Initiative, MITRE Corporation, ( http://cwe.mitre.org/ )
[9]Dionisio, John David N, Type Checking. http://myweb.lmu.edu/dondi/share/pl/type-checking-v02.pdf
[10]Einarsson Bo, ed. Accuracy and Reliability in Scientific Computing, SIAM, July 2005 http://www.nsc.liu.se/wg25/book
[11]Report G.A.O., Patriot Missile Defense: Software Problem Led to System Failure at Dhahran, Saudi Arabia,B-247094, Feb. 4, 1992, http://archive.gao.gov/t2pbat6/145960.pdf
[12]Ghassan A., Alkadi I., 2003). Application of a Revised DIT Metric to Redesign an OO Design. Journal of Object Technology, 127-134.
[13]Ghezzi Carlo, Jazayeri Mehdi, Programming Language Concepts, 3rd edition, ISBN-0-471-10426-4, John Wiley & Sons, 1998
[14]Goldberg D., What E.C.S.S.K.A.F.-P.A., ACM Computing Surveys, vol 23, issue 1 (March 1991), ISSN 0360-0300, pp 5-48.
[15]Hatton Les, Safer C: developing software for high-integrity and safety-critical systems. McGraw-Hill 1995
[16]Hoare C.A.R., Communicating Sequential Processes, Prentice Hall, 1985
[17]Hogaboom Richard, A Generic API Bit Manipulation in C, Embedded Systems Programming, Vol 12, No 7, July 1999 http://www.embedded.com/1999/9907/9907feat2.htm (Link Broken) still exists on site)
[18]Holzmann Garard J., The Power of 10: Rules for Developing Safety-Critical Code, Computer, vol. 39, no. 6, pp 95-97, IEEE, June 2006,
[19]Holzmann Gerard J., The SPIN Model Checker: Primer and Reference Manual, Addison-Wesley, 2004
[20]IEC 61508 (all parts), Functional safety: safety-related systems
[21]ISO/IEC 1539-1, Programming languages — Fortran — 1: Base language
[22]ISO/IEC 8652, Information technology — Programming languages — Ada
[23]ISO/IEC 9899, Information technology — Programming languages — C
[24]ISO/IEC 14882, Programming languages — C++
[25]ISO/IEC 15408 (all parts), Information technology — Security techniques — Evaluation criteria for IT security
[26]ISO/IEC TR 15942, Information technology — Programming languages — Guide for the use of the Ada programming language in high integrity systems
[27]ISO/IEC TR 24718, Information technology — Programming languages — Guide for the use of the Ada Ravenscar Profile in high integrity systems
[28]ISO/IEC TR 24731-1, Information technology — Programming languages, their environments and system software interfaces — Extensions to the C library — 1: Bounds-checking interfaces
[29]ISO/IEC 30170:2012, Information technology — Programming languages — Ruby
[30]ISO/IEC/IEEE 60559:2011, Information technology — Microprocessor Systems — Floating-Point arithmetic
[31]JSF, Joint Strike Fighter Air Vehicle: C++ Coding Standards for the System Development and Demonstration Program. Lockheed Martin Corporation. December 2005.
[32]Kopetz Hermann, Real-Time Systems: Design Principles for Distributed Embedded Applications, Springer 2011
[33]Larsen P., Wang, Model Checking for Real-Time Systems, Proceedings of the 10th International Conference on Fundamentals of Computation Theory, 1995
[34]Lions J.L., ARIANE 5 Flight 501 Failure Report. Paris, France: European Space Agency (ESA) & National Center for Space Study (CNES) Inquiry Board, July 1996. Available at https://en.wikisource.org/wiki/Ariane_501_Inquiry_Board_report
[35]MISRA Limited, MISRA C: 2012 Guidelines for the Use of the C Language in Critical Systems. Warwickshire, UK: MIRA Limited, March 2013 (ISBN 978-1-906400-10-1 and 978-1-906400-11-8). Available at https://www.misra.org.uk/
[36]MISRA, Motor Industry Software Reliability Association, Guidelines for the Use of the C++ Language in critical systems, June 2008
[37]RTCA DO178C/ED12C:2011,-Software Considerations in Airborne Systems and Equipment Certification Issued in the USA by the Requirements and Technical Concepts for Aviation and in Europe by the European Organization for Civil Aviation Electronics 2011
[38]Seacord Robert, The CERT C Secure Coding Standard. Boston, MA: Addison-Westley, 2008.
[39]Seacord R., Secure Coding in C and C++. Boston, MA: Addison-Wesley, 2013. See https://www.cert.org/books/secure-coding for news and errata.
[40]Sebesta Robert W., Concepts of Programming Languages, 8th edition, ISBN-13: 978-0-321-49362-0, ISBN-10: 0-321-49362-1, Pearson Education, Boston, MA, 2008
[41]Skeel R., Missile R.E.C.P., SIAM News, Volume 25, Number 4, July 1992, page 11
[42]Subramanian S., Tsai W.-T., Rayadurgam S., 1998). Design Constraint Violation Detection in Safety-Critical Systems. The 3rd IEEE International Symposium on High-Assurance Systems Engineering, 109 - 116.
[43]See http://www.ascii.cl/control-characters.htm
[44]See http://www.ascii.cl/control-characters.htm
[45]ISO/IEC 10967-1:2012, Information technology — Language independent arithmetic — 1: Integer and floating point arithmetic
[46]ISO/IEC 10967-2:2001, Information technology — Language independent arithmetic — 2: Elementary numerical functions
[47]ISO/IEC 10967-3:2006, Information technology — Language independent arithmetic — 3: Complex integer and floating point arithmetic and complex elementary numerical functions