goo blog サービス終了のお知らせ 

OCF最新動向ブログ

オープンCADフォーマット評議会(OCF)の活動と、CIM・CALS/EC(SXF)の最新動向をお知らせします。

SXF共通ライブラリの脆弱性回避

2016年03月12日 | SXFテクニカル通信
SXF共通ライブラリVer3.30が公開されてしばらくたちましたが、
すでに新しいバージョンに更新していただけましたでしょうか?
Ver3.30はすべてのSXF共通ライブラリを利用して開発している方に
更新をお願いしています。
なぜなら、今回のバージョンアップは脆弱性に対応した重要な更新と
なっているためです。

そもそも脆弱性とはどういう事でしょうか?
「脆弱」を辞書で調べてみると、「もろくて弱いこと。また、そのさま。」
とあります。
しかし、今回指摘された脆弱性とは、共通ライブラリ自体が「もろくて
弱いのですぐに止まってしまう」と言う意味ではありません。
ソフトウエアの世界で脆弱性とは主に、実装に欠陥があったり、設計上の
仕様に問題があるため安全に使用すことができない状態を指します。
つまり共通ライブラリには、欠陥を利用すればセキュリティ上攻撃できる
「もろい箇所」が見つかったという事です。

何故、「もろい箇所」が入りこんでしまっていたのか?ですが、
共通ライブラリの大部分はMFCで作成されていますが、一部はC言語も
使用しています。
C言語は何度か仕様改定も行われており、最新の規格では脆弱性対応も
強化されています。
ただ、初期の古いC言語の仕様ではセキュリティの甘い関数がいくつか
ありました。
今回指摘を受けた脆弱性も、このセキュリティの甘い関数を使用して
いる箇所で発生していました。

現在公開中のVer3.30ではセキュリティ強化された新しい関数にすべて
書き換える事で脆弱性が発生しないように対応してあります。
もし、脆弱性を放置して古い共通ライブラリを使い続けるとどうなる
のでしょうか?
実はCADのデータ交換目的で使う人しかいない分には問題が起こることは
ありません。

では、なぜ急いで更新する事をお願いしているのかというと
悪意を持った者に攻撃を企てられると重大な危機につながる可能性が
あるためです。
今回指摘された脆弱性は「バッファオーバーフロー」と呼ばれるもので、
危険度は高めで「中の上」ぐらいに分類されています。
この脆弱性を狙って攻撃を受けると任意のコードを実行されてしまう
可能性があるとの事です。
具体的にどういう事かと言うと、攻撃者はまずsfc・p21ファイルを悪意を
持って改造し任意のコードを埋め込みます。
それを共通ライブラリを使用しているCADに読み込ませる事でPCに
バックドアを仕掛けるなど深刻な問題に発展する可能性があるとの事です。

Ver3.30はこのような改造ファイルを読込んでも任意のコードが実行
されることはありません。
ご迷惑をおかけしますが、共通ライブラリを利用して開発している方は、
対策済み最新バージョンへ更新し、ソフトウェアご利用のユーザー様への
提供をお願いします。

SXFのZIP圧縮(8)~まとめ

2015年08月19日 | SXFテクニカル通信
SXFのZIP圧縮というテーマで書いてきたシリーズも、今回が最終回です。
これまでの記事の要点を挙げてみます。
1.長らく変化していないSXF規格なわけですが、SXFがより広く使われるように
 なるために、規格を追加しましょう。
2.ZIP圧縮のメリットは、ファイルサイズ縮小と複数ファイルが1つに
 まとまることです。
3.圧縮後ファイルの拡張子はsfczとp21zが有力(当時)です。
 ※その後の検討で、3文字拡張子のsfzとp2zが浮上しています。
4.ファイル圧縮にはLZH形式もありますが、近頃使われていないし脆弱性の問題も
 あって、ZIP形式での圧縮が磐石な方針です。
5.フリーで商用利用可能なライブラリーzlibは、CADへの実装が比較的容易です。
6.CADへの実装課題その1「画像ファイルの管理」はCADの実装で工夫が必要です。
7.CADへの実装課題その2「ファイル名の整合性」は圧縮後ファイル名を正とします。

建設CALS/ECの一環として、SXFは誕生しました。
国が発注する公共工事で提出するCAD図面の電子ファイルフォーマットとして
創り出されました。
近い将来SXFがZIP圧縮されることで、コンパクトかつ扱いやすいファイルになります。
これからもSXFは進化を続けて、継続的な調達とライフサイクルの支援を促進させるように、
OCFは活動してまいります。

SXFのZIP圧縮(7)~ZIP圧縮・解凍プログラム実装後の課題2と対策

2015年07月26日 | SXFテクニカル通信
ZIP圧縮・解凍プログラム実装後の課題2つのもう一つ、
「ファイル名の不整合」について、お送りします。

ユーザーがエクスプローラを使って圧縮後SXFをリネームすると、
圧縮後SXFと圧縮前SXFのファイル名が不一致となります。
CADの機能でリネームするなら両者を一致させることも可能ですが、
エクスプローラによるリネームであれば、両者の不一致が必ずおきます。
不一致の場合、どちらをSXFのファイル名とするか?

圧縮後SXFファイル名を常に正とすることになるでしょう。
CADが圧縮SXF読み込んだ時は、圧縮前SXFファイル名を無視して、
圧縮後のSXFファイル名の図面として扱うことで、両者の整合性が保たれます。
つまり、SXFのZIP圧縮におけるルール(実装規約)で、
「圧縮後SXFのファイル名を常に正とする」ということを取り決めれば
よいということになります。

なお、現状のSXF実装規約では「SXFファイルと属性付加機構の
SAFファイルの名前は一致していなければならない」と定義されています。
これまではファイル名を変更する際、両者それぞれをリネームする
必要がありましたが、SXFのZIP圧縮が実現すれば、圧縮後SXFを
リネームすることで、SXFとSAFを同時に変更したことになるという
メリットが出てきます。

さて、いかがでしたでしょうか。
次回は、最終回「(8)まとめ」をお送りする予定です。

SXFのZIP圧縮(6)~ZIP圧縮・解凍プログラム実装後の課題1と対策

2015年07月13日 | SXFテクニカル通信
ZIP圧縮・解凍プログラム実装後の課題は、大きく2つあります。
今回はそのうちの一つ「画像ファイルの扱い」について、お送りします。

CADの仕様によりますが、ここでは図面に画像を配置した場合に画像ファイル
そのものを図面ファイル内に保持せずに、画像ファイルパス情報だけを
保持するCADの場合の課題になります。

CADでSXFを読み込むときは、圧縮SXFを作業領域に解凍します。
これにより画像ファイルも作業領域に配置されて、CADは作業領域の画像ファイル
パスを保持します。
作業領域に画像ファイルがあるうちは問題ないですが、圧縮SXF読み込みの度に
解凍後のファイルが増えていくと都合が悪いので、しかるべきタイミングで
画像ファイルを削除しなければなりません。

SXF読み込み直後に削除するということが考えられますが、その結果画像ファイルの
表示や編集ができなくなることがあるでしょう。
作業領域中の画像ファイルを、どのタイミングで削除すれば不都合がなくなるのか
という課題であり、そもそも解凍後の画像ファイルをどのように管理するのか
ということにまで発展します。
対策は「CAD側の実装を工夫する」ということになります。

さて、いかがでしたでしょうか。
次回は、今回の続きで「(7)ZIP圧縮・解凍プログラム実装後の課題2と対策」を
お送りする予定です。

SXFのZIP圧縮(5)~ZIP圧縮・解凍の簡単なプログラム実装方法は?

2015年05月24日 | SXFテクニカル通信
zlibというフリーのライブラリーがあります。もちろん商用利用可能です。
http://www.zlib.net/
だいぶん枯れてきた安定したライブラリであり、かつ直近では2013/4に
更新されており、きちんとメンテナンスがされているものです。
Windowsの32bit、64bitで動作可能ですし、CADのプログラム言語としては
主流であるC++での実装が容易に可能です。

zlibのライセンス条項には「できればzlibの出展を書いてください」とあります。
zlibのライセンス条項の該当部分を引用します。
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
...
翻訳すると以下の通りです。。
以下の注釈を守れば、商用であっても自由に改変、再配布してよいです。
1.製品のオリジナルソフトウェアとして言うことは駄目です。
 できれば製品に出展を書いてください。
...

具体的にどうすればよいのかってことになりますので、C++での実装概要を
以下に記します。
1.zlibのトップページにアクセス
 http://www.zlib.net/
2.zlibを使ったツールページにアクセス
 1の中をスクロールさせて、真ん中より少し下の「Related External Links」の中の
 「zlib for Windows 9x/NT/2000/XP/2003 (DLL version, plus related utilities) 」
 をクリックする
3.ファイルをダウンロード
 2のページ上のほうにCurrent version(1.2.5)のすぐ下、「zlib125.zip」と
 「zlib125dll.zip」をダウンロードする
4.使うファイルを探し出す
 3の解凍結果から以下ファイルを使う。
 【DLL】
 dll32\zlibwapi.dll
 dllx64\zlibwapi.dll ※CADが64bitネイティブアプリの場合のみ
 【ヘッダー】
 zlib-1.2.5\zlib.h
 zlib-1.2.5\zconf.h
 zlib-1.2.5\contrib\minizip\crypt.h
 zlib-1.2.5\contrib\minizip\zip.h
 zlib-1.2.5\contrib\minizip\unzip.h
 zlib-1.2.5\contrib\minizip\iowin32.h
 zlib-1.2.5\contrib\minizip\ioapi.h
5.実装する
 zlibのトップページから日本語情報へのリンクが貼ってあります。
 下の方の「zlib information in Japanese」
 http://oku.edu.mie-u.ac.jp/~okumura/compression/zlib.html
 zlibの基本を押さえるには、これが参考になります。

すでにzlibを実装されているCADベンダーさんは多いかと思います。
ただ、現在実装されていないCADベンダーさんが初めて実装するとなれば。
それなりのコストと負荷がかかるかと思いますので、できるだけ容易に
実装してもらうべく、サンプルプログラムを公開することを検討しています。

さて、いかがでしたでしょうか。
次回は「(6)ZIP解凍プログラム実装時の課題と対策」をお送りする予定です。

SXFのZIP圧縮(4)~ZIPじゃなくてLZHもあるじゃないか!?

2015年05月09日 | SXFテクニカル通信
圧縮形式として日本で長年親しまれてきたLZHを採用するのもありでしょうか。
答えはノーです。
近頃、LZHファイルを見かけることはないですよね?

UNLHA32.DLLやその他派生アプリの開発は停止していて、LZHの使用中止を
呼びかけているという情報が出回ったのが2010年6月でした。
情報の出元は、LZH開発者の吉崎氏、Micco氏です。
なぜ使用中止を呼びかけているかというと、
・多くの圧縮ファイルにおいて、アンチウィルスのチェックを逃れる脆弱性がみつかる
・アンチウィルスや関連団体は、ZIP/CAB/7z等に対して脆弱性を認め対策を行った
・一方、LZHについては非受理となり、アンチウィルスによる対策が行われなかった
・非受理になった原因は、LZHが国際的にはマイナーな形式であるためだと思われる

関係する記事は以下の通りです。
Claybirdの日記 Unlha32.dll等開発停止、LHA書庫の使用中止呼びかけ
Gigazine 国産の圧縮形式「LZH」のUNLHA32.DLLの開発中止へ、LZH形式使用中止を呼びかけ
CAD日記 消えゆくLZH

要するに、LHA書庫に対してウイルス対策ソフトが正しく扱うことができなく
なってしまい、バッファーオーバーフローやウイルス感染という脆弱性が
強まったということなのです。

よって、LZHを採用することはできません。
Windows標準機能でもzipの圧縮と解凍ができるほど、zipは広まっています。
SXFを圧縮するならzip形式、ということで盤石な方針でしょう。

さて、いかがでしたでしょうか。
次回は「(5)ZIP圧縮・解凍のプログラム実装って難しいの?」をお送りする予定です。

SXFのZIP圧縮(3)~ZIP圧縮後の拡張子は?

2015年04月21日 | SXFテクニカル通信
ZIP圧縮後の拡張子の名前をどうするかというお話です。
既存のsfc/p21をそのまま使ってしまったら、現行SXFと互換性が維持できなく
なるので論外ですし、sfz/z21みたいに3文字拡張子のままとするのは、
ロングファイル名が使えるようになって久しいこの時代にイケてない感じがします。

MS Officeのように「x」を付けるのがクールであるところ、これはOffice
ドキュメントがOpen XML化したときの「x」であり、saf以外でxmlを使って
いないSXFで採用するのには無理があります。
既存の拡張子にzipの「z」を付けた、sfcz/p21zとしようと考えています。
※拡張子の大文字/小文字はどちらがいいのか、どちらでもいいのかという議論も
 ありますが、この記事では小文字で統一して表現します。

ともあれ、拡張子が変わることで現行SXFとの扱いをユーザーおよびアプリが
判別できることが重要なことなのです。

さて、いかがでしたでしょうか。
次回は「(4)ZIPじゃなくてLZHもあるじゃないか!?」をお送りする予定です。

SXFのZIP圧縮(2)~ZIP圧縮するメリットは?

2015年03月22日 | SXFテクニカル通信
前回、現状のSXFデータ交換の弊害2点(ファイルサイズ大、ファイル分割)に
ついて軽く触れました。
その弊害がどんなもので、どのように解決するのかを、メリットという観点で
以下に記します。

1.ファイルサイズが小さくなる
 SXFファイルはテキストファイルなので、圧縮によるファイルサイズの縮小が
 著しく表れます。約10%のサイズとなるので、1/10です。
 5MBのファイルが500KBになるわけで、CDへの書き込み、メール送信など大いに
 やりやすくなることでしょう。
 SXFに画像が配置されていると、画像ファイルの圧縮率がテキストファイルに
 対して低くなるため、図面全体での圧縮率は低下しますけれども。

2.複数ファイルがまとまって1ファイルになる
 画像や属性を付加すると、SXFは複数ファイルになってしまいます。
 属性であれば同じファイル名なので探しやすいですが、画像は自由な名前で
 複数付加できるので、どれがどこで使われているかを把握するのが困難です。
 SXFはデータ交換が目的なわけで、その際ファイルが足りないためにトラブルに
 なったということが少なくない数あったとすれば、その回避策になります。
 なお、SXFには朱書きという仕組みがあり別ファイルで管理しますが、これは
 図面 本体とは別に扱う特性が強いので、圧縮の対象外とする案が有力です。

さて、いかがでしたでしょうか。
次回は「(3)ZIP圧縮後の拡張子は?」をお送りする予定です。

SXFのZIP圧縮(1)~はじめに

2015年02月27日 | SXFテクニカル通信
OCFの活動に以下のようなものがあります。
オープンCADフォーマット協議会設立趣旨(抜粋)
http://www.ocf.or.jp/top/outline.shtml
・CADのデータフォーマットに関する情報収集、分析等調査研究
・CALSで利用される、CADデータの交換用ファイル形式の策定支援と普及活動
・CADデータの互換性検証、実証実験、並びに標準化規格の策定及び普及
そこで、現在行っている活動の一部を、ブログという媒体を使って、
会員の皆さまだけでなく、広く世の中に発信することとしました。
まずは、現在、技術部会で検討を行っている「SXFのZIP圧縮」を全7回で発信します。

皆様ご存知のようにSXFにはsfcとp21があり、いずれもテキスト形式であるため
ファイルサイズが大きくなりがちだったり、画像や属性を付加することで
ファイルが分割されたりします。
SXFによるデータ交換では、ファイルサイズとファイル分割は弊害となります。
こんな弊害を解決する手法として「SXFのZIP圧縮」するのはどうでしょうか?
という提案になります。
SXFの規格は、レベル2 Ver3.1が最新です。
その運用が始まってから結構な年数を経て、枯れた(安定した)技術となっています。
このあたりで新たな規格を定義し、SXFを盛り上げ、CADのデータ交換ファイルとして
SXFがより広く使われるようになって欲しい、というわけなのです。

さて、いかがでしたでしょうか。
次回は「(2)ZIP圧縮するメリットは?」をお送りする予定です。