なぜ「毎日バックアップを取っていた工場」の80%が、ランサムウェアで図面と受発注データを失ったのか? — SCS評価(★3)とZFS不変金庫
この記事の要点と4つの章のご案内
| 章構成 | 主なテーマ | 要点と確認ポイント |
|---|---|---|
| 1. 基本と全体像 | 身近なたとえで見る仕組みと公的データ | はい。国内ランサムウェア被害の63%が中小企業であり、71%で発注元や荷主への業務波及が起きています。取引先のVPNや共有フォルダを踏み台にする攻撃が急増しています。 |
| 2. 現場での進め方と対策 | 図解で見る仕組み:防火シャッターとZFS耐火金庫モデル | サプライチェーンの安全性を評価する国の新制度です。「3(25〜26項目)」は基本対策と登録情報処理安全確保支援士等の確認署名が必要となり、大手メーカー・ゼネコン・荷主との取引継続パスポートになります。 |
| 3. 関連する制度とルール | 実践のポイントと「現場の3項目チェックリスト」 | 常時接続NASだけでなく「書き換え不能(ZFS)な別金庫」へ自動保管する仕組み(エージェントレス『小規模セキュリティ基本構成』等)が最優先です。0.1秒で暗号化を凍結し、3秒で図面や台帳を復元できます。 |
| 4. 詳しい技術仕様としくみ | コラム:江戸時代の飛脚中継(西国街道)と現代のサプライチェーン通信 | CAD図面や受発注システムの防衛は「ZFS不変バックアップ」と「経産省SCS評価(★3)の25〜26項目点検」の2軸で、工場・倉庫の稼働停止を防ぎ大手取引先からの信頼を確実に守れます。 |
CAD図面や受発注システムの防衛は「ZFS不変バックアップ」と「経産省SCS評価(★3)の25〜26項目点検」の2軸で、工場・倉庫の稼働停止を防ぎ大手取引先からの信頼を確実に守れます。
01. 身近なたとえで見る仕組みと公的データ
被害63%が中小・71%が取引先波及
国内ランサムウェア被害の63%が中小企業であり、取引先への業務波及が71%に到達しています。
1,000万円以上59%・停止1ヶ月超52%
被害後の調査・復旧費用1,000万円以上が59%、操業停止1ヶ月以上が52%に上ります。
3(25〜26項目+支援士確認)
経産省「SCS評価制度(3:25〜26項目+登録セキスペ確認署名)」が大手メーカー・ゼネコン・荷主との取引継続パスポートに。
02. 図解で見る仕組み:防火シャッターとZFS耐火金庫モデル
| 項目 | 従来のリスクが高い状態 | 技術的な対策アプローチ |
|---|---|---|
| CAD・台帳保管 | 社内NAS常時接続で同時暗号化 | 0.1秒遮断+ZFS不変金庫から3秒復元 |
| 親会社調査 | 取引先ごとに調査票を個別回答 | SCS★★3取得+登録セキスペ署名で一括証明 |
| 導入コスト | 百万円超のUTM機器リース | 専用機器不要のクラウド分離+お助け隊・補助金活用 |
03. 実践のポイントと「現場の3項目チェックリスト」
1. なぜ町工場のCAD図面や倉庫のWMSが狙われるのか?
共有NASのCAD設計図(`.dwg`, `.step`)や出荷指示データ(WMS/EDI)が暗号化されると、発注元メーカーや建設現場全体が止まり、71%の確率で取引先へ被害が波及します。
2. 外付けHDDでは守れない、ZFS耐火金庫の仕組み
常時接続NASは感染時に同時破壊されます。「小規模セキュリティ基本構成」は暗号化の乱雑度上昇を0.1秒で凍結し、別OS(FreeBSD ZFS)の追記専用金庫で守るため、CAD図面も3秒で巻き戻せます。
3. 2026年「SCS評価制度(★3)」と登録セキスペ確認署名
経済産業省のSCS評価制度(3:25〜26項目)は登録情報処理安全確保支援士等の確認署名が求められます。当社なら台帳整備から支援士署名まで最短2週間で対応します。
今日から現場で確認できる「3項目チェックリスト」
コラム:江戸時代の飛脚中継(西国街道)と現代のサプライチェーン通信
高槻・芥川宿を通る江戸時代の「継飛脚」は、宿場ごとに封印と通行手形を改めることで書状の偽造や盗難を防ぎました。現代のSCS評価制度(★3)も、サプライチェーンを中継する全企業が同じ基準の手形を持つ仕組みです。
製造・物流サプライチェーンにおけるPurdueモデル(ISA-95)OT/IT境界分離とCAD図面・EDI通信の暗号学的保護
本稿では、金型・精密部品メーカーや物流倉庫を標的とするサプライチェーン攻撃・技術営業秘密(3D CAD図面・NC加工プログラム)窃取を防ぐため、(1) ISA-95 / IEC 62443(Purdue Model)に基づく工場制御系ネットワーク(OT: Level 0〜2)と情報系ネットワーク(IT: Level 4)のステートフル単方向ゲートウェイ分離、(2) Modbus/TCP(Port 502)および EtherNet/IP における不正ファンクションコード遮断、および (3) STEP/DXF 図面資産のテナント別 ZFS 暗号化データセット保護を詳解する。
1. 【なぜ工場の制御機器(PLC / NC工作機械)はランサムウェアに脆弱なのか】 製造現場で20年以上稼働し続ける NC工作機械、PLC(Programmable Logic Controller)、および自動倉庫制御盤(Purdue Model Level 1〜2)は、リアルタイム応答性と機械寿命の制約から、古い組込みOSや認証機能を持たない産業用プロトコル(Modbus/TCP、MELSEC MCプロトコル、PROFINET)で稼働している。近年、生産管理システム(Level 3/4)とのデータ連携のために工場内LANと事務所LANをルーター1台で直結した結果、事務所PCが受信した1通の標的型メールから工場全体の PLC やファイルサーバーへ感染が拡大し、数週間にわたりラインが全面停止する事案が相次いでいる。
2. 【Purdue Model Level 3.5(産業用DMZ)と Modbus/TCP ファンクションコード検査】 このリスクを構造的に排除するため、OT網(Level 0〜2)とIT網(Level 4)の間に必ず Level 3.5(Industrial DMZ)を設け、IT側からOT側への直接通信(ルーティング)を物理的・論理的に禁止する。稼働状況の収集(SCADA / IoT テレメトリ)は、OT側のエッジゲートウェイから DMZ 内の時系列バッファに対する「読み取り専用ファンクション(例:Modbus Function Code 0x03 Read Holding Registers、0x04 Read Input Registers)」のみに限定し、レジスタ書き換え命令(0x06 Write Single Register、0x10 Write Multiple Registers)やファームウェア更新命令(0x2B Encapsulated Interface Transport)はパケットフィルタ層で無条件にドロップする。
3. 【3D CAD図面(STEP/IGES/DXF)の不正持ち出し防止と電子透かし・ZFS分離】 発注元メーカーから預かる新製品の3D CAD図面は、委託先ごとに独立した OpenZFS 暗号化データセット(encryption=aes-256-gcm)へ格納し、共有リンク作成時にはダウンロード回数上限・有効期限・アクセス元IP制約・操作監査ログ(SHA-256ハッシュチェーン)を強制付与する。
| Purdue Level | Zone Function & Assets | Allowed Protocol / Direction | Blocked / Inspected Payload |
|---|---|---|---|
| Level 4 (Enterprise IT) | ERP, Email, Web, Office PCs, VPN | HTTPS / TLS 1.3 to Level 3.5 DMZ only | Direct routing to Level 0-2 OT subnet strictly dropped |
| Level 3.5 (Industrial DMZ) | Data Diode / Telemetry Broker / Jump Host | Authenticated Pull from Level 3 Historian | Blocks all SMB (445), RDP (3389), and unauthenticated RPC |
| Level 2-3 (Supervisory OT) | SCADA, HMI, MES, Warehouse WCS | Modbus/TCP FC 0x01-0x04 (Read-Only Telemetry) | Drops FC 0x05, 0x06, 0x0F, 0x10 (Unauthorized Register Write) |
| Level 0-1 (Control / Field) | PLC, NC Machine Tools, Servo Drives, Sensors | Isolated Fieldbus / Deterministic Ethernet | Zero Internet / Zero Gateway route configured |
#![forbid(unsafe_code)]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ModbusVerdict {
AllowReadTelemetry { unit_id: u8, function_code: u8 },
DropMalformedMbapHeader,
BlockUnauthorizedWriteFunction { unit_id: u8, function_code: u8 },
BlockDiagnosticOrProgrammingFunction { unit_id: u8, function_code: u8 },
}
/// Inspects a raw Modbus/TCP frame (7-byte MBAP header + 1-byte Function Code + PDU data)
/// at the Level 3.5 Industrial DMZ boundary, enforcing strict Read-Only telemetry policy.
#[inline]
pub fn inspect_modbus_tcp_frame(frame: &[u8], allow_writes: bool) -> ModbusVerdict {
// Minimum Modbus/TCP frame: TransactionID(2) + ProtocolID(2) + Length(2) + UnitID(1) + FC(1) = 8 bytes
if frame.len() < 8 {
return ModbusVerdict::DropMalformedMbapHeader;
}
let protocol_id = u16::from_be_bytes([frame[2], frame[3]]);
let declared_len = u16::from_be_bytes([frame[4], frame[5]]) as usize;
// Protocol ID must be 0x0000 for standard Modbus/TCP, and length must match remaining bytes
if protocol_id != 0x0000 || declared_len < 2 || frame.len() < 6 + declared_len {
return ModbusVerdict::DropMalformedMbapHeader;
}
let unit_id = frame[6];
let fc = frame[7];
match fc {
// Read Coils (0x01), Discrete Inputs (0x02), Holding Registers (0x03), Input Registers (0x04)
0x01..=0x04 => ModbusVerdict::AllowReadTelemetry {
unit_id,
function_code: fc,
},
// Write Single/Multiple Coils & Registers (0x05, 0x06, 0x0F, 0x10, 0x16, 0x17)
0x05 | 0x06 | 0x0F | 0x10 | 0x16 | 0x17 => {
if allow_writes {
ModbusVerdict::AllowReadTelemetry {
unit_id,
function_code: fc,
}
} else {
ModbusVerdict::BlockUnauthorizedWriteFunction {
unit_id,
function_code: fc,
}
}
}
// Diagnostics (0x08), Program Controller, Encapsulated Interface (0x2B), or Exception Masks
_ => ModbusVerdict::BlockDiagnosticOrProgrammingFunction {
unit_id,
function_code: fc,
},
}
}
動的CMS/PHPランタイム攻撃面(CVE-2024-4577等)の解剖とAstro+Rust静的分離設計
プロトコル仕様・数理モデル・Rust 2024 実装コードの詳細は、専門技術モノグラフにて公開しています。