業界標準を再定義した13の主要ソフトウェア障害
エンジニアがどれほど入念なテストを行い、開発者が徹夜でコーディングを重ねても、単一のバグがシステム全体の障害を引き起こす可能性があります。数十億ドルの損失をもたらすソフトウェアグリッチから、致命的な事故につながるクリティカルなバグまで、ソフトウェア開発の不備がもたらす結果は壊滅的です。
ソフトウェア品質の悪さが米国企業に年間約2兆ドルのコストを与え、運用ソフトウェア障害がこれら損失の主な要因であることをご存知ですか?
ソフトウェア障害の最も一般的な理由には以下が含まれます:
- 不十分なアーキテクチャ定義と不適切な低レベル設計。
- 十分なデータと分析なしに設定された非現実的なスケジュールやマイルストーン期限。
- 進化する要件を予測し対応できないこと。
- タイムライン圧縮の試みとしてプロジェクトに過剰な人員を投入すること。
- 直感ベースまたは感情駆動のステークホルダー交渉。
- 誤解、衝突するエゴ、ネガティブなチームダイナミクス。
以下は、恥ずべき事態と巨額の財務損失を招いた主要なソフトウェア障害です。極端なケースでは、Therac-25の放射線過剰照射事件のように、ソフトウェアエラーが命を奪うことさえあります。
13. MOVEitデータ漏洩
2023年5月、Progress Softwareが開発したマネージドファイル転送ソフトウェアMOVEitに関わる大規模なデータ漏洩が発生しました。この欠陥により機密データへの不正アクセスが可能となり、世界中の数千社に影響を与える一連のサイバー攻撃を引き起こしました。
障害の理由:SQLインジェクション脆弱性
漏洩は主に、パブリックフェーシングサーバーへのSQLインジェクション攻撃を通じて実行され、攻撃者が検知されることなくデータを窃取できるようにしました。より具体的には、この欠陥により攻撃者は「LemurLoot」と呼ばれるWebシェルを展開でき、MOVEitデータベースに保存された機密データへの不正アクセスと窃取を容易にしました。
漏洩の総コスト:158億ドル
この漏洩は世界中で2,700社以上の組織に影響を与え、約9,580万人の個人データが侵害されました。IBMのデータ漏洩コスト分析によると、害されたレコードあたりの平均コストは165ドルです。
12. イギリスパスポートシステム(1999年)
1999年、英国パスポート庁はパスポート申請プロセスを合理化するため、新しいコンピュータ化処理システムを導入しました。Siemensによって開発されたこのシステムは、プロセスの近代化と効率向上を意図していました。しかし、ソフトウェアグリッチとシステム障害により、大規模な遅延が発生し、数千人の英国市民が渡航に間に合うパスポートを取得できませんでした。
障害の背景:不十分なテスト
システムは実環境下で適切にテストされず、導入時にボトルネックが発生しました。さらに、英国政府がほぼ同時期に子供向けの新しいパスポート要件を導入し、申請数が大幅に増加しましたが、システムはこれに対応する準備ができていませんでした。
エラーの総コスト:2,000万ドル
この障害により、英国政府は追加スタッフの雇用、残業、影響を受けた市民への補償を強いられ、推定2,000万ドルの財務損失が発生しました。さらに、数千人が休暇や出張を逃し、世論の怒りを買いました。
11. Mariner 1
Atlas Agena with Mariner 1 | 画像クレジット: Wikimedia
1962年7月打ち上げのMariner 1は、NASA初の惑星間ミッションで、金星をフライバイし科学データを地球に送信する予定でした。残念ながら、誘導システムの誤動作により、打ち上げから293秒後に宇宙船が破壊され、ミッションは早期に終了しました。
障害の背景:オーバーバー(平均値を示す記号)の欠落
打ち上げ直後、ロケットはコースから外れ始めました。この逸脱は誘導ソフトウェアの欠陥によって引き起こされました。具体的には、手書きの誘導方程式におけるオーバーバー(平均値を示す記号)の欠落が、ロケットに誤った誘導コマンドを送信する原因となりました。結果としてロケットはコースを外れ、レンジセーフティオフィサーが潜在的危険を防ぐため破壊を命じました。
エラーの総コスト:1,850万ドル
Mariner 1の喪失は、1962年時点で推定1,850万ドルの財務的挫折をもたらし、現在の価値で約1億9,400万ドルに相当します。
10. Mydoom
2004年1月26日に最初に検出されたMydoomは、史上最も悪名高く破壊的なコンピュータワームの一つです。メール添付ファイルとP2Pネットワークを通じて拡散し、世界中で数百万台のコンピュータを感染させました。ピーク時には、世界中で送信される全メールのほぼ8.3%を占め、史上最速で拡散したメールワームとなりました。
攻撃の理由:不明
Mydoomの正確な起源は不明ですが、一部の説では、当時Linuxソフトウェアを巡る法的紛争に関与していたSCO Groupを攻撃するために雇われたグループによって作成されたとされています。他の多くのワームとは異なり、Mydoomには金銭的動機が見られませんでした。
総コスト:380億~500億ドル
このアウトブレイクは、セキュリティコスト、生産性損失、緩和努力を含め、数十億ドルの損害をもたらしました。推定では、世界的な総財務影響は380億ドルから500億ドルの間とされています。
9. ハートフォードコロシアム崩落
画像ソース: Wikispaces
1978年1月18日、コネチカット州ハートフォードのハートフォードシビックセンターコロシアムの屋根が構造的故障により崩落しました。1万トンの屋根がアリーナの座席エリアに落下しましたが、4,700人以上の観客を集めたバスケットボール試合が開催されたわずか6時間後のことでした。幸い、当時は誰も中にいませんでした。
障害の背景:欠陥のあるCAD計算と構造設計エラー
調査により、崩落はエンジニアリングの誤計算と構造設計プロセスで使用されたコンピュータソフトウェアエラーの組み合わせだったことが明らかになりました。エンジニアは初期のコンピュータソフトウェアを使用して応力分布をモデリングしましたが、ソフトウェアが特定の荷重条件を考慮しなかったため、主要な接合部の応力レベルが過小評価されました。
トラスシステムには不十分な斜めブレーシングがあり、過度の曲げ応力を引き起こしました。積もった雪と氷(冬の嵐による)の重みが構造を限界を超えて押し上げました。
総コスト:7,000万ドル
崩落はコンピューター支援エンジニアリングへの公衆の信頼を損ない、より厳しい建築基準規制につながりました。さらに、設計会社、保険会社、請負業者に対して大規模な訴訟が提起されました。
8. Mars Climate Orbiter
Mars Climate Orbiterは、1998年にNASAによって打ち上げられた火星の大気、気候、表面変化を研究するロボット宇宙探査機でした。打ち上げから286日後、計画通り軌道に入る代わりに、火星の大気で燃え尽きました。
障害の背景:単位変換エラー
障害は、2つのNASAチーム間の単純だが壊滅的な単位変換エラーによって発生しました。宇宙船を建造したLockheed Martin(請負業者)が力の計算にヤードポンド法(帝国単位)を使用したのに対し、ミッションを制御したNASAのジェット推進研究所はメートル法を期待していました。
これらの単位が適切に変換されなかったため、Orbiterのナビゲーションシステムが軌道を誤って計算し、意図された140マイルではなく35マイルの高度で火星大気に進入しました。低高度により空気力学的力が探査機を破壊しました。
総コスト:3億2,700万ドル
ミッションの総コストは約3億2,760万ドルで、宇宙船開発、打ち上げ費用、ミッション運用を含みます。
7. IRS:詐欺検知システムの欠如
1994年、米国国税庁(IRS)は不正な納税申告を検知・防止するために電子詐欺検知システム(EFDS)を導入しました。時間の経過とともにEFDSは時代遅れになり、進化する詐欺手口に対応できなくなりました。これらの欠点を認識し、IRSは2009年にReturn Review Program(RRP)の開発を開始し、詐欺検知能力の向上とEFDSの置き換えを目指しました。
障害の背景:実装の遅延
RRPは遅延に直面し、意図した通りには完全に運用されませんでした。その結果、2006年の申告シーズン中、IRSは包括的な事前詐欺検知システムなしで運営され、納税システムが搾取に対して脆弱な状態に置かれました。
総コスト:40億ドル以上
2012年、身元盗難関連の納税詐欺により約40億ドルの不正還付が発生しました。2013年までに、納税身元盗難は77万人の納税者に影響を与えました。
6. Cluster宇宙船
Clusterミッションは、地球の磁気圏を研究するために開発された4機の同一宇宙船で構成される欧州宇宙機関(ESA)のプロジェクトでした。これらの衛星は、1996年6月4日にAriane 5ロケットの初飛行で打ち上げられる予定でした。しかし、打ち上げからわずか37秒後にロケットが空中で爆発し、4機すべての衛星が破壊されました。
障害の背景:整数オーバーフローエラー
Ariane 5ロケットは、もともとAriane 4向けに設計されたソフトウェアを使用していましたが、より速い加速がコードで考慮されていませんでした。その結果、ソフトウェアは64ビット浮動小数点数を16ビット整数に変換しようとしました。Ariane 5のより高い加速度により、値が格納限界を超え、システムクラッシュを引き起こしました。
エラーの総コスト:3億7,000万ドル
Cluster宇宙船の破壊により、3億7,000万ドルを超える財務損失が発生しました。この数字には、4機すべての宇宙船の開発と打ち上げが含まれます。金銭的影響を超えて、地球の磁気圏に関する重要な科学研究が遅れました。
5. Pentiumの長除算
1994年、IntelのPentiumマイクロプロセッサに、浮動小数点除算計算でエラーを引き起こす重大な欠陥が発見されました。このバグは後にPentium FDIVバグとして知られるようになり、特定の除算操作で誤った小数結果を返すようになりました。正確な計算に依存する研究者と企業の間で広範な懸念を引き起こしました。
約500万個の欠陥チップが流通しており、Intelは最終的に苦情を申し出たすべての人のチップを交換することを決定しました。後に、Intelは一部の欠陥プロセッサをキーホルダーに転用しました。
障害の背景:浮動小数点ユニットの欠陥除算アルゴリズム
このバグは、チップのハードウェアベース除算アルゴリズムにおけるルックアップテーブルエントリの欠落によって引き起こされました。特定の浮動小数点除算が、小数点以下8桁目以降で誤った結果を返しました。
しかし、エラーは稀で、ランダムな浮動小数点除算の約90億分の1でしか発生しませんでした。例えば、4,195,835.0を3,145,727.0で割ると、正しい1.333820449136241002ではなく、1.333739068902037589となり、0.006%の誤差でした。
推定損失:4億7,500万ドル
Intelは欠陥チップのリコールと交換により4億7,500万ドルの損失を被りました。また、この事件は同社の評判を深刻に損ない、将来のプロセッサ設計においてより高い透明性を採用するきっかけとなりました。
4. 1987年ウォール街大暴落
1987年10月19日(ブラックマンデーとしても知られる)、ダウ工業株30種平均(DJIA)は508ポイント下落し、総価値の22.61%を失い、S&P 500は20.4%下落しました。これはウォール街が1日で経験した最大の損失でした。
暴落の理由:自動取引アルゴリズム
大手機関投資家は、市場が下落した際に株を売却するプログラム取引システムを使用し、暴落を加速させました。これらのシステムはパニック駆動の市場状況を考慮しておらず、売却の自己強化フィードバックループを引き起こしました。
いくつかの企業はポートフォリオ保険を使用しました。これは損失をヘッジするために先物契約を売却するアルゴリズム戦略です。市場が下落すると、これらのアルゴリズムがさらに売却を引き起こし、下降スパイラルを悪化させました。
世界的損失は1.71兆ドルと推定
即時の経済的影響は当初懸念されたほど深刻ではありませんでしたが、暴落は市場ボラティリティの増加を招き、将来の発生を防ぐための規制変更を促しました。
3. Y2K問題
Y2Kバグ(ミレニアムバグとしても知られる)は、古いシステムでの日付の格納方法によって生じました。多くのレガシーコンピュータプログラムは、年を4桁(例:「1999」)ではなく2桁(例:「99」)で表現していました。
2000年が近づくにつれ、コンピュータが「00」を2000年ではなく1900年と解釈し、銀行、医療、航空などの業界全体で誤った計算と潜在的な経済的混乱を引き起こす懸念が高まりました。
バグの理由:初期コンピューティングの限られたメモリ
古いコンピュータは最小限のメモリとストレージで設計されていたため、プログラマーはスペースを節約するために2桁の年を使用しました。この短絡的な設計選択が、数十年後に大問題となりました。
修正の総コスト:3,000億ドル
世界的に修正作業に3,000億ドル以上かかったと推定されています。米国だけでY2K対策に約1,000億ドルを費やしました。これらの投資は、ソフトウェア更新、システム置換、テスト、緊急時計画をカバーしています。
2. ガン治療と致死的放射線療法
Therac-25は、Atomic Energy of Canada Limited(AECL)によって開発されたコンピューター制御放射線治療装置で、ガン治療用でした。1985年から1987年にかけて、少なくとも6人の患者に大量の放射線過剰照射を与えました。これらの患者は意図されたレベルの100倍の放射線量を受け、致死的な放射線火傷と深刻な組織損傷を負いました。
原因:ソフトウェアの競合状態
Therac-25は安全性を完全にソフトウェアに依存していましたが、コードのバグにより危険な状態が発生することを許していました。装置には低出力X線モードと高出力電子ビームモードの2つのモードがありました。技術者が装置が治療を開始する前にモードを素早く切り替えた場合、ソフトウェアの競合状態により減衰器が位置から外れたままになり、致死的な電子ビームが患者に直接照射される可能性がありました。
総コスト:3人の命
少なくとも3人の患者が放射線過剰照射で死亡し、他の患者は深刻な火傷、切断、臓器損傷などの生涯にわたる障害を負いました。AECLに対して複数の訴訟が提起され、財務的和解に至りました。
1. Patriotミサイル失敗
1991年2月(第1次湾戦争中)、サウジアラビアのダーランにあったアメリカのPatriotミサイルシステムが、着弾するイラクのScudミサイルを迎撃・追跡できませんでした。Scudはアメリカ陸軍の兵舎に墜落しました。
失敗の理由:浮動小数点精度による累積タイミングエラー
Patriotミサイルシステムは、時間を追跡するために24ビット浮動小数点レジスタに依存していました。しかし、累積丸め誤差により、100時間以上連続稼働した後、内部クロックが0.34秒ドリフトしました。Scudミサイルは約1,676メートル/秒で飛行するため、この微小なタイミングエラーによりレーダーがミサイルの位置を約600メートル誤って計算し、迎撃失敗につながりました。
影響:兵士28人死亡、100人負傷
この衝突で28人の米兵が死亡し、約100人が負傷しました。これは戦争中の米軍に対する最も致死的な攻撃の一つとなりました。
その他の注目すべきソフトウェア障害
Microsoft顧客が海賊版扱いされた件:Windowsチームの誰かが誤ってバグだらけのプレプロダクションソフトウェアをすべてのWindowsサーバーにインストールしました。その後19時間、すべての正規XPユーザーが海賊版ソフトウェアを実行していると通知されました。
仮釈放中の犯罪者:2011年、コンピュータプログラムコードの小さなミスにより、カリフォルニア州の郡刑務所から約450人の暴力犯が釈放されました。
第三次世界大戦(ほぼ勃発):ソ連の核早期警戒システムが、1983年9月26日にアメリカミサイルの発射を報告。ソ連システムは雲頂からの太陽光反射を誤ってミサイル発射と解釈しました。後に、ミサイル攻撃警告はソ連防空軍の将校によって誤報と特定されました。この決定により核戦争と数百万人の潜在的死者が防止されました。
大停電:2003年、8つの米国州に暗闇が広がり、5,000万人が影響を受けました。問題は、単一操作の2つの別々のスレッドがコードの同じ要素を使用したことによる競合状態でした。
Apple Mapsの失敗:iOS 6のリリースに伴い、Appleは優れたGoogle Mapsプラットフォームを放棄することを決定しました。残念ながら、これはモバイルコンピューティング業界で最も壮大な失敗の一つとなりました。2012年9月、TPMIdeaLabはソフトウェアに町全体のエントリが欠落し、位置が誤って配置され、衛星画像が雲で隠されるなどの問題を発見しました。
LAXフライト着陸停止:2007年、大量の誤ったデータが米国国境と税関管理ネットワークに送信されました。これによりLAX空港が8時間完全に閉鎖され、17,000便以上が問題解決まで着陸できませんでした。原因は単一の不具合のある組み込みソフトウェアでした。
関連記事
- 14種類のコンピュータウイルス
- 13種類のマルウェア【例付き】
産業技術