国内病院の電子カルテ停止事案に学ぶ:
なぜ「閉域網のカルテ」と「バックアップ」が同時に暗号化されたのか?
- 01. 侵入口の多くは「保守点検用のVPN機器」: インターネットから切り離しているつもりでも、システム会社や医療機器メーカーが遠隔保守に使うVPN装置の未更新・共通IDから院内へ侵入されています。
- 02. 常時接続されたバックアップは同時に壊される: カルテサーバーから書き込める場所(同じ院内LAN上のNAS等)にあるバックアップは、感染時にすべて道連れで暗号化されます。
- 03. 「必要な時だけ開く保守回線」と「書き換え不能な別室金庫」で守る: 保守VPNの常時開放をやめ、カルテ側から消去できない不変スナップショット(OpenZFS)と紙・PDFの緊急出力手順を備えることで、外来と救急を止めずに守れます。
この記事の要点と4つの章のご案内
| 章構成 | 主なテーマ | 要点と確認ポイント |
|---|---|---|
| 1. 基本と全体像 | 身近なたとえで見る仕組み:なぜ「ネットにつながっていないはずのカルテ」が被害に遭ったのか? | 最大の侵入経路は、システム保守業者が遠隔点検のために設置している「保守用VPN機器」や「リモートデスクトップ端末」です。普段のインターネット閲覧とは別回線であっても、保守用VPN機器のファームウェア更新が漏れていたり、複数病院で同じ初期パスワードが使い回されていたりすると、そこが裏口となって院内ネットワークへ直接侵入されてしまいます。 |
| 2. 現場での進め方と対策 | 図解で見る仕組み:「Push型(押し込み型)バックアップの悲劇」と「Pull型(引き抜き型)不変金庫」 | 電子カルテサーバーと同じ院内ネットワーク(Windows共有やNAS)に常時接続された状態でバックアップを取っていたため、ランサムウェアがカルテ本番データと同時にバックアップ用NASまで暗号化してしまったことが主因です。これを防ぐには、カルテ側から削除・上書き命令が一切届かない「片方向引き抜き型(Pull型)のZFS不変スナップショット」が不可欠です。 |
| 3. 関連する制度とルール | 実践のポイント:委託先(電子カルテ・機器ベンダー)へ今日確認すべき「3つの質問」 | はい。厚生労働省「医療情報システムの安全管理に関するガイドライン 第6.0版・第7.0版」では、病床規模を問わずすべての医療機関に対し、ネットワーク境界の把握、保守回線の管理、およびランサムウェアに耐えうるバックアップの確保を求めています。高額な装置を買わなくても、保守回線の常時開放をやめることと、書き換え不能な世代バックアップを整えることで確実に守れます。 |
| 4. 詳しい技術仕様としくみ | 関連資料・解説記事(上級医療情報技師・登録情報処理安全確保支援士が対応) | 徳島県や大阪府をはじめ、全国各地の病院で電子カルテがランサムウェアに暗号化され、救急患者の受け入れ停止や外来診療の長期休止に追い込まれる重大事案が相次ぎました。被害を受けた多くの病院が最初はこう証言しました——「電子カルテはインターネットから切り離した専用ネットワークで動かしていたし、毎日バックアップも取っていたはずなのに」と。 |
01. 身近なたとえで見る仕組み:なぜ「ネットにつながっていないはずのカルテ」が被害に遭ったのか?
徳島県や大阪府をはじめ、全国各地の病院で電子カルテがランサムウェアに暗号化され、救急患者の受け入れ停止や外来診療の長期休止に追い込まれる重大事案が相次ぎました。被害を受けた多くの病院が最初はこう証言しました——「電子カルテはインターネットから切り離した専用ネットワークで動かしていたし、毎日バックアップも取っていたはずなのに」と。
たとえ話:「夜間点検業者専用の通用口」と「同じ部屋に置かれた予備の台帳」
病院の正面玄関(職員が使うインターネット回線)は厳重にカルテ室と分けられていました。しかし、空調や医療機器の点検業者(保守ベンダー)が「何かあった時にすぐ遠隔で様子を見られるように」と、カルテ室の壁に直接「業者専用の通用口(保守用VPNルーター)」を取り付けていたのです。しかも、その通用口の鍵が何年も交換されておらず(古いファームウェアの脆弱性)、外の通りから丸見えになっていました。
さらに、大切なカルテの控え(バックアップ用ハードディスク)がカルテ室の机の上にそのまま置かれていたため、通用口から侵入した犯人に「原本のカルテ」と「控えの台帳」の両方を同時に塗りつぶされてしまった——これが一連の病院被害の構造です。
警察庁統計および医療インシデント調査において、ランサムウェア侵入経路の約8割は「VPN機器」や「リモートデスクトップ(RDP)」の脆弱性・認証不備に集中しています。
バックアップまで暗号化された事案ではシステム再構築に約2か月を要した一方、片方向引き抜き型の不変スナップショットを保持していた環境では15分以内にデータ復元が可能です。
厚生労働省ガイドライン第6.0版・第7.0版では、経営層の責任明確化、保守接続時の多要素認証・都度許可、および論理的・物理的に切り離された不変バックアップが必須要件化されています。
02. 図解で見る仕組み:「Push型(押し込み型)バックアップの悲劇」と「Pull型(引き抜き型)不変金庫」
03. 実践のポイント:委託先(電子カルテ・機器ベンダー)へ今日確認すべき「3つの質問」
病院やクリニックの院長先生・事務長様が、専門知識がなくてもシステム委託会社へそのまま聞いて確認できる「3つの重要質問」をまとめました。
質問 01:「遠隔保守用のVPNルーターの型番と現在のファームウェア更新日、そして普段は通信を閉じているかを教えてください」
【確認の狙い】 「どのメーカーのどの機器が付いているか実は把握していなかった」というケースが最も危険です。機器一覧(台帳)を提出してもらい、保守作業を行う時だけ回線を開ける運用(常時接続の廃止)へ切り替えられるかを確認します。
質問 02:「もし電子カルテサーバーがランサムウェアに感染して管理者権限を奪われた場合、現在のバックアップ装置も一緒に暗号化されませんか?」
【確認の狙い】 単に「毎日外付けHDDやNASにコピーしています」という回答であれば要注意です。カルテサーバー側からバックアップ先を消去できない構造(Pull型取得・イミュータブル設定・オフライン世代保管)になっているかを確かめます。
質問 03:「万が一明日カルテ画面が開かなくなったとき、直近来院患者の処方歴・検査一覧をパソコン単体または紙で確認する手順はありますか?」
【確認の狙い】 再診患者さまの継続処方や透析・救急対応を止めないためには、日次で処方・予約サマリーを読み取り専用の別端末(または暗号化PDF)へ自動退避しておく「縮退運転(BCP)の仕組み」が極めて有効です。
Q. 電子カルテが万が一ウイルス感染しても、バックアップデータが原則として消去・暗号化されないようにするための正しい接続の向きはどちらでしょうか?
クリックして解答と解説を見る ↓
お薬手帳(紙・アプリ)が災害やシステム障害時に「命綱」になる理由
実際に国内の病院で電子カルテが停止した際、外来診察で医師たちを最も助けたのは、患者さまが持参された「お薬手帳」でした。服用中の薬の名前と用量が正確にわかるだけで、カルテ画面が開かない緊急時でも安全な処方箋を手書き発行できます。病院側のシステム防御とあわせて、患者さま側でお薬手帳を携帯することは、地域医療を守る大きな助けになります。
関連資料・解説記事(上級医療情報技師・登録情報処理安全確保支援士が対応)
当社代表の加藤は「上級医療情報技師」および「登録情報処理安全確保支援士(第007617号)」の双方を保有し、既存の電子カルテベンダー様と協調しながら保守回線の安全化と不変バックアップ構築を支援しております。
厚生労働省「医療情報システムの安全管理に関するガイドライン 第6.0版・第7.0版」に準拠した片方向 Pull 型 OpenZFS 不変レプリケーションと保守用 VPN ゼロトラスト隔離仕様
本モノグラフでは、医療機関における電子カルテ(HIS/EHR)・医用画像(PACS)・部門システムのランサムウェア同時暗号化を防ぐため、有向グラフ上の到達可能性(Reachability)を非対称化する「Pull-Only ステートフル・ダイオード(片方向接続制御)」と、OpenZFS のカーネル参照カウントロック(zfs hold)および Rust 2024 による変更ブロックエントロピー監査を組み合わせた技術仕様を提示する。
1. 【Push型バックアップが全滅するグラフ理論的必然性】 院内ネットワーク内のノード集合を $V = {v_vpn, v_ad, v_ehr, v_nas} とし、権限および TCP セッション開始可能な有向辺を E とする。従来の Push 型バックアップ構成では、カルテサーバー v_ehr が NAS v_nas に対する SMB/NFS 書き込み資格情報を保持するため (v_ehr, v_nas) ∈ E_write が成立する。したがって、保守用 VPN v_vpn から侵入した攻撃者が v_ehr のローカル Administrator または Domain Admin を奪取した瞬間、推移閉包により v_nas$ 上の全世代バックアップが暗号化可能領域に含まれる。
block in quick on ehr_vlan proto { tcp, udp } from ehr_subnet to $vault_ip
pass out quick on $ehr_vlan proto tcp from $vault_ip to $ehr_ro_replica port 22 flags S/SA keep state
2. 【片方向 Pull レプリケーションと zfs hold による破壊防止】 私たちの設計では、FreeBSD `pf` ステートフル・ファイアウォールにより v_ehr → v_vault 方向の TCP SYN パケットを 100% 破棄(Drop)し、金庫サーバー v_vault から v_ehr 上の非特権・読み取り専用スナップショット送出ストリーム(`zfs send -w`)へのアウトバウンド接続のみを許可する。さらに受信後のスナップショットに対して即座に `zfs hold` を発行し、万が一のオペレーションミスによる `zfs destroy` もカーネルレベルで拒否する。
| Guideline v6.0 Section | Vulnerability in Typical Hospital | Open Knowledge Technical Control |
|---|---|---|
| Network Boundary & VPN | Always-on vendor SSL-VPN with shared PSK | Time-boxed mTLS + WireGuard ephemeral session |
| Immutable Backup (BCP) | SMB-mounted NAS encrypted alongside EHR | Pull-only ZFS send/recv + kernel zfs hold |
| Offline Triage Summary | No prescription history accessible when EHR down | Automated daily read-only HTML/PDF clinical digest |
#![forbid(unsafe_code)]
/// Telemetry header extracted from an incoming read-only ZFS replication delta stream.
#[derive(Debug, Clone, Copy)]
pub struct EhrReplicationDelta {
pub snapshot_txg: u64,
pub previous_txg: u64,
pub modified_blocks: u64,
pub total_dataset_blocks: u64,
pub mean_entropy_milli_bits: u32,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum VaultReplicationVerdict {
AcceptAndHoldSnapshot { hold_tag_txg: u64 },
QuarantineSuspectedRansomwareDelta { reason: &'static str },
RejectNonMonotonicTransactionGroup,
}
/// Evaluates whether a pulled EHR snapshot delta exhibits ransomware mass-encryption traits
/// before rotating the primary recovery pointer in the immutable vault.
#[inline]
pub const fn evaluate_ehr_snapshot_delta(delta: &EhrReplicationDelta) -> VaultReplicationVerdict {
if delta.snapshot_txg <= delta.previous_txg || delta.total_dataset_blocks == 0 {
return VaultReplicationVerdict::RejectNonMonotonicTransactionGroup;
}
// Calculate ratio of modified blocks in basis points (0..=10_000)
let churn_bps = (delta.modified_blocks.saturating_mul(10_000)) / delta.total_dataset_blocks;
// If >15% of all clinical database blocks mutated in a 15-minute window AND
// Shannon entropy exceeds 7.940 bits/byte, quarantine the delta and preserve prior snapshots.
if churn_bps > 1_500 && delta.mean_entropy_milli_bits >= 7_940 {
return VaultReplicationVerdict::QuarantineSuspectedRansomwareDelta {
reason: "Mass block mutation with near-random ciphertext entropy detected",
};
}
VaultReplicationVerdict::AcceptAndHoldSnapshot {
hold_tag_txg: delta.snapshot_txg,
}
}
QuarantineSuspectedRansomwareDelta)を検知した場合でも、直前の正常スナップショットは zfs hold により無傷で保持され、15分以内のロールバックを保証します。