全国銀行データ通信システム(全銀システム)が10月10~11日にかけて停止した問題で、運営元の全国銀行資金決済ネットワーク(全銀ネット)と、システム開発を担当したNTTデータが12月1日に都内で説明会を開催し、障害の全容を明らかにした。金融機関同士の送金や手数料などを算出する中継コンピューター(RC)を更改した際のプログラム製作に手違いがあったことに加え、万が一更改がうまくいかなかったときに、前バージョンに巻き戻す、冗長化してあるバックアップシステムに切り替えるといった措置も機能しなかった。
(安藤章司)
RCが停止した直接的な原因は、保守期限を迎えた古い「RC17」から新しい「RC23」に移行するプログラム改修作業の中で、メモリ領域の指定を誤ったことにある。RCではアプリが検索などで利用する金融機関名を記したテーブルを作成するが、そのテーブルは「金融機関名テーブル」と「正読金融機関名」「略読金融機関名」「金融機関コード」の計4点のインデックステーブルがあり、合計で所定のメモリ領域内に収める必要があった(図参照)。
全銀ネットの辻松雄理事長(左)とNTTデータの佐々木裕社長
しかし、実際は「四つのテーブルそれぞれが所定のメモリ領域のなかに収まればよし」とプログラム製作者が受け取り、四つを合計すると所定のメモリ領域の容量を超えてしまった。プログラム製作後の試験段階ではうまく動作したものの、肝心の本番環境では、メモリ領域のあふれた部分をほかのアプリが使用していたことからテーブルが破損。連鎖的にRCがエラーを起こしてシステム全体が停止してしまった。
システム停止に至る前に誤りに気づく機会はいくつかあった。RC17からRC23への更改はLinux系のOSで動作するプログラムを32ビットから64ビットへ切り替えるもので、プログラムの中身に変更はなかった。64ビット化したことで金融機関名テーブルの容量が増えたが、前述のプログラム製作者の思い違いからメモリ容量の指定を誤った。プログラムの設計者は当該仕様を知っていたが、「製作者との意思疎通が十分にできず」(NTTデータの佐々木裕社長)に見過ごしてしまったという。
次に10月10日の本番稼働で障害が発生したとき、正常に動作していた環境に巻き戻す後退復帰(ロールバック)ができなかった。後退復帰するには本番稼働中の全銀システム全体を停止しなければならず、その場合「更改対象のRCを利用している10行だけでなく、全銀システムを利用する全国1100余りの金融機関に影響が及ぶ」(NTTデータの鈴木正範・取締役副社長執行役員)ことから断念した。
また、RCは東京系と大阪系の2系統があり、どちらか片方が停止しても、もう片方で業務を継続できる仕組みになっていた。ところが、更改対象の金融機関のなかで東京系、大阪系の両方を利用しているケースがあり、両方同時に更改する必要があったことから冗長化の仕組みも機能しなかった。全銀ネットの辻松雄理事長は、今回の教訓を踏まえて、今後は「東阪のRCを片方ずつ更改する方策や、万が一に備えて後退復帰できるよう検討する」とコメントしている。
RC停止の影響を受けたのは三菱UFJ銀行やりそな銀行、山口銀行など10行で、金融機関同士で振り込みや決済などを行うテレ為替業務が一時できなくなった。現在は暫定的な措置としてRCの手数料欄を0円に設定して運営中で、本格的な復旧は年末から2024年1月にかけて順次実施する予定。手数料は全銀ネット側で集計して後日精算するとしている。