[要約] RFC 9225は、ソフトウェアの欠陥導入を desu し、特にネットワークプロトコルの実装においてそれを desu します。ネットワーキング業界において、ソフトウェアの欠陥は最大のコスト要因の1つであり、この文書はこの点における最善の現行の実践を明確にすることを目的としています。

Independent Submission                                       J. Snijders
Request for Comments: 9225                                        Fastly
Category: Informational                                        C. Morrow
ISSN: 2070-1721                                                   Google
                                                             R. van Mook
                                                                Asteroid
                                                            1 April 2022
        

Software Defects Considered Harmful

ソフトウェアの欠陥は有害と見なされます

Abstract

概要

This document discourages the practice of introducing software defects in general and in network protocol implementations specifically. Software defects are one of the largest cost drivers for the networking industry. This document is intended to clarify the best current practice in this regard.

この文書は、一般的なソフトウェア欠陥を一般的におよび具体的にネットワークプロトコルの実装に導入することの実践を妨げる。ソフトウェアの欠陥は、ネットワーキング業界向けの最大のコストドライバの1つです。この文書は、この点で最良の現在の慣習を明確にすることを目的としています。

Status of This Memo

本文書の位置付け

This document is not an Internet Standards Track specification; it is published for informational purposes.

この文書はインターネット標準のトラック仕様ではありません。それは情報提供のために公開されています。

This is a contribution to the RFC Series, independently of any other RFC stream. The RFC Editor has chosen to publish this document at its discretion and makes no statement about its value for implementation or deployment. Documents approved for publication by the RFC Editor are not candidates for any level of Internet Standard; see Section 2 of RFC 7841.

これは、他のRFCストリームとは無関係に、RFCシリーズへの貢献です。RFCエディタは、この文書をその判断で公開することを選択し、実装または展開の値についてのステートメントを作成しません。RFCエディタによる出版の承認済みの文書は、インターネット規格のレベルレベルの候補ではありません。RFC 7841のセクション2を参照してください。

Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at https://www.rfc-editor.org/info/rfc9225.

この文書の現在のステータス、任意のエラータ、およびフィードバックを提供する方法については、https://www.rfc-editor.org/info/rfc9225で入手できます。

Copyright Notice

著作権表示

Copyright (c) 2022 IETF Trust and the persons identified as the document authors. All rights reserved.

著作権(c)2022 IETF信頼と文書の著者として識別された人。全著作権所有。

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document.

この文書は、この文書の公開日に有効なIETF文書(https://trustee.ietf.org/License-Info)に関するBCP 78およびIETF信頼の法的規定の対象となります。この文書に関してあなたの権利と制限を説明するので、これらの文書をよくレビューしてください。

Table of Contents

目次

   1.  Introduction
   2.  Requirements Language
   3.  Examples of High-Impact Software Defects
   4.  Best Current Practises
   5.  Security Considerations
   6.  IANA Considerations
   7.  References
     7.1.  Normative References
     7.2.  Informative References
   Appendix A.  Future Research
   Acknowledgements
   Authors' Addresses
        
1. Introduction
1. はじめに

Software defects (informally known as "bugs") have been the cause and effect of innumerable system degradations and failures over the years. Bugs are errors, flaws, or faults in a computer program that cause the program to produce an incorrect or unexpected result.

ソフトウェアの欠陥(「バグ」として知られている)は、長年にわたる無数のシステムの劣化と失敗の原因と影響でした。バグは、プログラムに誤ったまたは予期しない結果を生み出すコンピュータプログラム内のエラー、欠陥、または障害があります。

(Please note: unexpected results caused by bugs are not a valid substitute for high-quality random number generators, though high-quality random number generators are generally not considered to be bugs.)

(注意:バグによる予期せぬ結果は、高品質の乱数発生器の有効な代替品ではありませんが、高品質の乱数発生器は一般にバグと見なされません。)

Endeavoring to reduce the number of degradations in the future, implementers MUST NOT introduce bugs when writing software. This document outlines why bugs are considered harmful and proposes a set of recommendations.

将来の劣化回数を減らすために努力して、実装者はソフトウェアを書くときにバグを紹介してはいけません。この文書では、なぜバグが有害と見ながら一連の推奨を提案しているのかという概要です。

2. Requirements Language
2. 要件言語

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

この文書のキーワード "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", および "OPTIONAL" はBCP 14 [RFC2119] [RFC8174]で説明されているように、すべて大文字の場合にのみ解釈されます。

3. Examples of High-Impact Software Defects
3. 高衝撃ソフトウェアの欠陥の例

In June 1996, the European Space Agency [ARIANE] launched an unmanned rocket -- costing several billion dollars in development -- only to see it go [KABOOM] 40 seconds after takeoff. A software exception had occurred during the execution of a data conversion from 64-bit floating point to 16-bit signed integer value. The floating point number that was converted had a value greater than what could be represented by a 16-bit signed integer. The vehicle probably would not have disintegrated if the defect had not been written into the software.

1996年6月、ヨーロッパの宇宙機関[Ariane]は、開発中の数十億ドルを費用 - 出発したのを見るためにのみ、開発中の数億ドルを発売しました。64ビットの浮動小数点から16ビット符号付き整数値へのデータ変換の実行中にソフトウェア例外が発生しました。変換された浮動小数点数は、16ビット符号付き整数で表すことができるものよりも大きい値を示しています。欠陥がソフトウェアに書き込まれていない場合、車両はおそらく崩壊しなかったでしょう。

As an example of the detrimental effects of bugs in physically hard to reach systems: the [NASA] Deep Impact spacecraft [DEEPIMPACT] was rendered inoperable due to a fault in the fault-protection software, which in turn triggered endless computer reboots. Mission control was unable to recover the system from this error condition because no engineers were available on-site. The commute was deemed infeasible due to a lack of reasonably priced commercial transport options in that region of the solar system.

システムに到達するのが物理的に困難なバグの有害な影響の一例として:[NASA]ディープインパクトSpacecraft [DeepImpact]は、障害保護ソフトウェアの障害により動作不能になりました。マッションコントロールは、エンジニアがオンサイトで利用可能ではなかったため、このエラー状態からシステムを回復できませんでした。太陽系のその地域では、手ごろな価格の商業輸送オプションがないため、通勤は不可能であると考えされました。

In 1983, the Soviet Union's Early Warning Satellite System [Serpukhov] announced it had detected a possible missile launch originating in the US; fortunately, a human operator recognized this as a likely system failure. Indeed, a retrospective analysis suggested the software had misclassified reflections from cloud cover as missile launch blooms. With this bug, the software held the potential to trigger a cascading sequence of events that could've led to the start of a planetary-scale war. Seemingly innocuous software defects can have outsized impact, and sometimes it pays off to simply do nothing and wait.

1983年、ソビエト連邦の早期警戒衛星システム[Serpukhov]は、それが米国で発生した可能性のあるミサイル打ち上げを検出したと発表しました。幸いなことに、人間のオペレーターはこれをシステム障害として認識しました。確かに、遡及的分析は、ソフトウェアがミサイルの打ち上げのブルームとして雲カバーからの誤った反射を誤って除かれたことを示唆した。このバグを使用すると、ソフトウェアは惑星スケール戦争の開始につながる可能性があるイベントのカスケードシーケンスを引き起こす可能性を保持しました。一見無害なソフトウェアの欠陥が大きな影響を及ぼすことができ、時にはそれが単に何もしずに待ちます。

The US Department of Commerce's National Institute of Standards and Technology [NIST] commissioned a study to develop a deeper understanding of the prevalence of software defects and their cost to society. The study estimated about 0.6 percent of the gross domestic product is squandered due to programming bugs. Each person works approximately one hour a week to compensate for this debt -- an hour that could've been spent in leisure -- in addition to any time spent on the direct consequences of buggy software.

米国コマース国立標準機関研究所[NIST]ソフトウェアの欠陥の有病率と社会への費用を深く理解するための研究を依頼しました。この研究は、国内総生産の約0.6%を推定しており、プログラミングのバグのために浪費されます。一人一人は、この債務を補うために約1時間働いています - バギーソフトウェアの直接的な結果に費やされた時間に加えて、余暇に過ごされる可能性がある時間。

The universal deployment of IP networks on Avian Carriers [RFC1149] is facing a multi-decade delay. After operators discovered that birds are not real (now [confirmed] by the US Government), work began to first understand the many [quirks] of the drones' firmware before proceeding with wider-scale deployment. No clear timelines exist at this point in time.

Avian Carriers [RFC1149]上のIPネットワークの普遍的な展開は、多重10年間の遅延に直面しています。将軍が現実的ではないことを事業者が発見した後(今は米国政府によって確認されています)、より広範囲の展開を進める前に、最初にドローンのファームウェアの多くの[QUIRK]を理解し始めました。この時点では明確なタイムラインはありません。

For more examples, consult the RISKS Digest [RISKS]: it documents a multitude of examples of defects in technological infrastructure and their risk to society. Unsupervised study of the Digest archive may induce a sense of panic.

より多くの例については、リスクダイジェスト[リスク]:技術インフラストラクチャの欠陥の例を多数文書化し、社会へのリスク。ダイジェストアーカイブの教師なしの研究はパニック感覚を誘発する可能性があります。

4. Best Current Practises
4. 最高の現在の慣行

1. Authors MUST NOT implement bugs.

1. 著者はバグを実装してはいけません。

2. If bugs are introduced in code, they MUST be clearly documented.

2. バグがコードで導入されている場合は、明確に文書化されている必要があります。

3. When implementing specifications that are broken by design, it is RECOMMENDED to aggregate multiple smaller bugs into one larger bug. This will be easier to document: rather than having a lot of hard-to-track inconsequential bugs, there will be only a few easy-to-recognise significant bugs.

3. 設計によって壊れている仕様を実装するときは、複数の小さなバグを1つの大きなバグに集約することをお勧めします。これは文書化が簡単になります。

4. The aphorism "It's not a bug, it's a feature" is considered rude.

4. Aphorism「それはバグではありません、それは機能です」は失礼と見なされます。

5. Assume all external input is the result of (a series of) bugs. (Especially in machine-to-machine applications such as implementations of network protocols.)

5. すべての外部入力が(一連の)バグの結果であると仮定する。(特にネットワークプロトコルの実装などのマシンからマシンアプリケーションで。)

6. In fact, assume all internal inputs also are the result of bugs.

6. 実際、すべての内部入力もバグの結果であると仮定します。

5. Security Considerations
5. セキュリティに関する考慮事項

With the production of fewer bugs, there will necessarily be fewer security impacts. To improve the collective security posture, a thorough review of ALL existing software to find any remaining bugs is RECOMMENDED.

より少ないバグの生産により、必然的にセキュリティの影響が少なくなります。集合的なセキュリティポスチャを改善するために、残りのバグを見つけるためにすべての既存のソフトウェアの徹底的なレビューをお勧めします。

As it is assumed that there is an even distribution of bugs through all software, it is safe to consider any piece of software to be bug free once a certain number of bugs have been found.

すべてのソフトウェアを通じてバグの分配が存在すると仮定されるので、一定の数のバグが見つかった場合は、バグのないソフトウェアを自由にすることを確実に考慮しても安全です。

Some philosophers argue in defense of an obviously wrong contrary view that bugs introduce a certain amount of unpredictable variance in behaviour, which in turn could serve to increase security. Such heretics might even go one step further and celebrate the existence of bugs, shielding issues from public scrutiny. However, it [ostensibly] is in society's best interest to fully disclose any and all bugs as soon as they are discovered.

いくつかの哲学者は、バグが行動にある程度の予測不可能な分散を紹介するという明らかに間違いの見解を擁護しています。そのような能力はさらに一歩進んで、バグの存在を祝うかもしれません、一般の精査からの問題を守る。しかし、それは彼らが発見されたらすぐにあらゆるバグを十分に開示することが社会の最善の利害性にあります。

6. IANA Considerations
6. IANAの考慮事項

IANA is assumed to operate flawlessly.

IANAは完璧に操作すると想定されています。

7. References
7. 参考文献
7.1. Normative References
7.1. 引用文献

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <https://www.rfc-editor.org/info/rfc2119>.

[RFC2119] BRADNER、S、「RFCで使用するためのキーワード」、BCP 14、RFC 2119、DOI 10.17487 / RFC2119、1997年3月、<https://www.rfc-editor.org/info/RFC2119>。

[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, <https://www.rfc-editor.org/info/rfc8174>.

[RFC8174] Leiba、B.、RFC 2119キーワードの「大文字の曖昧さ」、BCP 14、RFC 8174、DOI 10.17487 / RFC8174、2017年5月、<https://www.rfc-editor.org/info/RFC8174>。

7.2. Informative References
7.2. 参考引用

[ARIANE] Arnold, D. N., "The Explosion of the Ariane 5", August 2000, <https://www-users.cse.umn.edu/~arnold/disasters/ ariane.html>.

[Ariane] Arnold、D。、2000年8月、<https://www-user.cse.umn.edu/~arnold/disasasters/ ariane.html>。

[confirmed] US Consumer Product Safety Commission (@USCPSC), "Birds are real.", Twitter, 5 January 2022, <https://twitter.com/USCPSC/status/1478794691634155523>.

[確認]米国の消費者製品安全委員会(@USCPSC)、「鳥は本物です」、Twitter、2022年1月5日、<https://twitter.com/uscpsc/status.com/1478794691634155523>

[DEEPIMPACT] Wallace, M., "Subject: Re: [tz] Deep Impact: wrong time zone?", message to the tz@iana.org mailing list, 23 September 2013, <https://mm.icann.org/pipermail/ tz/2013-September/020357.html>.

[DeepImpact] Wallace、M.、 "Subject:Re:[Tz]深い影響:間違ったタイムゾーン?"、tz@iana.orgメーリングリスト、2013年9月23日、<https://mm.icann.org/ Pipermail / Tz / 2013-9月/ 020357.html>。

[incomplete] Raatikainen, P., "Gödel's Incompleteness Theorems", Stanford Encyclopedia of Philosophy, November 2013, <https://plato.stanford.edu/entries/goedel-incompleteness/>.

[不完全] Raatikainen、P.、 "Gödelの不完全さ定理"、2013年11月、<https://plato.stanford.edu / entries/goedel-incompleteness />。

[IRTF] IRTF, "Internet Research Task Force", <https://www.irtf.org/>.

[IRTF] IRTF、「インターネットリサーチタスクフォース」、<https://www.irtf.org/>。

[KABOOM] Jure, V. A., "Kapow! Zap! Splat! How comics make sound on the page", The Conversation, 10 June 2021, <https://theconversation.com/kapow-zap-splat-how-comics-make-sound-on-the-page-160455>.

[Kaboom] Jure、VA、 "Kapow!ZAP!Splat!Pageに音を立て、会話、<https://thonversation.com/kapow-zap-splat-how-make-make-make-make-sound-on-page-160455>。

[NASA] NASA, "NASA's Deep Space Comet Hunter Mission Comes to an End", September 2013, <https://www.nasa.gov/mission_pages/deepimpact/media/ deepimpact20130920.html>.

[NASA] NASA、「NASAの深海彗星ハンターミッションは2013年9月、2013年9月、<https://www.nasa.gov/mission_pages/deeppact/media/eediampact20130920.html>。

[NIST] NIST, "Software Errors Cost U.S. Economy $59.5 Billion Annually", Wayback Machine archive, June 2002, <https://web.archive.org/web/20090610052743/ http://www.nist.gov/public_affairs/releases/n02-10.htm>.

[NST] NIST、「ソフトウェアエラーは毎年595億ドルの費用費用」、Wayback Machine Archive、2002年6月、<https://web.archive.org/web/20090610052743/ http://www.nist.gov/public_affairs/リリース/ N02-10.htm>。

[ostensibly] Swire, P., "A Model for When Disclosure Helps Security: What Is Different About Computer and Network Security?", 3 Journal on Telecommunications and High Technology Law 163, August 2004, <http://dx.doi.org/10.2139/ssrn.531782>.

[象徴的に] Swire、P.、「開示がセキュリティのためのモデル:コンピュータとネットワークのセキュリティについてはどういう意味ですか?」、2004年8月、2004年8月、<http://dx.doiについての3誌。ORG / 10.2139 / SSRN.531782>。

[quirks] Stockton, N., "What's Up With That: Birds Bob Their Heads When They Walk", WIRED, January 2015, <https://www.wired.com/2015/01/whats-birds-bob-heads-walk/>.

[Quirks] Stockton、N.、「それとは何ですか:散歩したときの頭は彼らの頭を「彼らの頭」、有線、2015年1月、<https://www.wired.com/2015/01/birds-bob-headss - walk />

[RFC1149] Waitzman, D., "Standard for the transmission of IP datagrams on avian carriers", RFC 1149, DOI 10.17487/RFC1149, April 1990, <https://www.rfc-editor.org/info/rfc1149>.

[RFC1149] Waitzman、D.、「Avian CarriersのIPデータグラムの送信のための標準」、RFC 1149、DOI 10.17487 / RFC1149、1990年4月、<https://www.rfc-editor.org/info/rfc1149>。

[RISKS] ACM Committee on Computers and Public Policy, "The RISKS Digest", <https://catless.ncl.ac.uk/Risks/>.

[リスク]コンピュータと公共の方針、「リスクダイジェスト」、<https://catless.ncl.ac.uk/risks/>をコンピュータと公開ポリシーのACM委員会

[Serpukhov] Long, T., "Sept. 26, 1983: The Man Who Saved the World by Doing ... Nothing", WIRED, September 2007, <https://www.wired.com/2007/09/dayintech-0926-2/>.

[Serpukhov] Long、T. 1983年9月26日:世界をやって世界を救った男は何もありません。-0926-2 />。

Appendix A. Future Research
付録A.将来の研究

The existence of this very document of course begs the question: what are software defects, truly? Do bugs happen for a purpose? Is what we perceive as the concept of bugs an indication for a wider issue in the natural world? Do mistakes happen in other domains? Are they evidence of a superior software architect?

この非常にドキュメントの存在がもちろん質問に頼む:本当にソフトウェアの欠陥とは何ですか?目的のためにバグが発生しますか?バグの概念として私たちが知覚するものは、自然世界でより広い問題の兆候の兆候ですか?他のドメインで間違いが起こりますか?彼らは優れたソフトウェア建築家の証拠ですか?

An interdisciplinary approach to understand mistakes might be an area of further study for the [IRTF]. It may very well turn out that mistakes are provably detrimental in all domains; however, the authors do not feel qualified to make any statements in this regard. Once made aware of the above thesis, research-oriented interest groups could perhaps take on the task of disproving Goedel's incompleteness theorem [incomplete], and in doing so, put an end to all bugs.

間違いを理解するための学際的なアプローチは、[IRTF]のさらなる研究の分野であるかもしれません。すべてのドメインで間違いが明らかに有害であることが非常にうまくいきます。しかし、著者らはこの点に関して任意の声明を作る資格を与えられていません。上記の論文を認識したところ、研究志向の関心グループは、Goedelの不完全さ定理を不完全である[不完全]を除き、そうすることで、すべてのバグを締めくくることができます。

Acknowledgements

謝辞

The authors wish to thank Bert Hubert, Peter van Dijk, and Saku Ytti for pointing out the many errors Job introduced during the preparation of this document.

この文書の準備中に導入された多くのエラージョブを指摘するために、Bert Hubert、Peter Van Dijk、Saku Yttiに感謝します。

Authors' Addresses

著者の住所

Job Snijders Fastly Amsterdam Netherlands Email: job@fastly.com

ジョブ・スニッダー急速なアムステルダムオランダの電子メール:job@fastly.com

Chris Morrow Google Reston, Virginia United States of America Email: morrowc@ops-netman.net

Chris Morrow Google Reston、バージニア州アメリカ合衆国Eメール:MOLLOWC@OPS-netman.net

Remco van Mook Asteroid Deventer Netherlands Email: remco@asteroidhq.com

REMCO van Mookの小惑星Deventerオランダの電子メール:remco@asteroidhq.com