Top > OOobbs2 > 70

OOobbs2/70 Edit

  • サマリ: マクロとセキュリティ
  • 環境: General
  • 状態: 投稿
  • 投稿者: はにゃ??
  • 投稿日: 2007-09-24 (月) 15:19:02

質問 Edit

なし

回答 Edit

OpenOffice.org マクロで悪戯ができる可能性を見ていきます。ハッカー用の本などが本屋などで売られていますが、防衛側が読むものだという話を聞いたことがあります。

というわけで、悪意のある可能性があるマクロの例などを見ていきます。

注)全て一回以上マクロが実行されないと不可能なものばかりです。そのため、セキュリティレベルが「高」以上であれば問題ありません。(間違って許可するディレクトリから実行しなければ)

OOo 2.3 のマクロセキュリティレベル Edit

OpenOffice.org 2.3 からドキュメント同梱のマクロの実行セキュリティレベルが変更されています。以前は「中」でしたが、デフォルトで「高」になりました。

レベル
最高指定したディレクトリにあるファイルのみ。そのほかは証明書があっても無効
指定したディレクトリまたは証明書付きファイル
指定したディレクトリ以外のファイルの場合には確認ダイアログを開く
すべて実行可能

指定したディレクトリというのは、信頼されたファイル位置で設定したディレクトリです。以前の設定ファイルが残っていなければ始めはエントリーがありません。

セキュリティの設定は OpenOffice.org/registry/data/org/openoffice/Office/Common.xcu に保存されます。

悪戯するのに困るセキュリティですが、悪戯は注意していない人を対象にします。外部からこのセキュリティを変更することはできません。悪戯に重要なのは不注意で実行してしまったときです。

イベント Edit

OOo はアプリケーションのスタート時やドキュメントを開いたときにマクロなどのアクションを実行するイベントを駆動できます。このイベントの設定はアプリケーション以外にドキュメントにも保存でき、そのドキュメントを開いたときにイベントが実行されます。

マクロを含むドキュメントであればイベントを設定することで、マクロの実行が許可されれば、マクロが実行されます。

悪戯するにはドキュメントを開いたときのイベントにマクロを設定するのが普通になると思います。

ファイルのイベント設定以外に、ユーザー単位の OOo アプリケーションのイベント設定は OpenOffice.org/user/registry/data/org/openoffice/Office/Events.xcu ファイルに保存されます。

設定はマクロで書き換えることができます。悪戯の実行回数を増やすにはアプリケーションの設定を変更しましょう。

OpenOffice.org のマクロウィルスの可能性 Edit

OpenOffice.org でマクロに注意するには、マクロで可能なことを知っておく必要があります。

まず、ドキュメントに含んだマクロにより OOo オートメーションに利用できる言語は、

OpenOffice.org Basic
すべての環境で実行可能
Java
JRE のインストールが必要
BeanShell
実行環境が Java 依存(bsh.jar)なため同上
Javascript
同上(js.jar)
Python
インストールに依存。windows 環境で完全インストールであれば実行可能。linux 環境では Python を別にインストールする必要あり

確実に動くのは OOo Basic だけになります。なので、悪戯で活躍するのは OOo Basic になります。そんなわけで多くは OOo Basic での内容になっています。

以下では利用できそうな項目を挙げていきます。

設定の変更 Edit

OOo の設定を変更するためには com.sun.star.configuration.ConfigurationUpdateAccess サービスを利用します。設定の読み込みだけには com.sun.star.configuration.ConfigurationAccess サービスで十分です。

ファイル操作 Edit

ファイルを操作するには言語依存の関数以外に、com.sun.star.ucb.SimpleFileAccess サービスを利用します。

最近は OS レベルで重要なファイルが保護されているのでシステムファイルに悪戯することは無理でしょう。

(もちろん、管理権限ユーザーでログインしてはいけません。)

コマンドの実行 Edit

OOo Basic からコマンドを実行するには Shell ランタイム関数以外にも com.sun.star.system.SystemShellExecute サービスを利用する方法があります。 そのほかの言語では言語に依存したコマンド実行関数があります。

ディレクトリ (パス) 設定 Edit

OOo はパス設定を保持しています。このパスにはマイドキュメントとして windows ではマイドキュメントディレクトリが、linux ではユーザーのホームディレクトリが設定されます。

このパスを取得するには、com.sun.star.util.PathSubstitution サービスを利用するのが一番簡単です。

マイドキュメントのファイルを削除するような悪戯に利用できそうです。

ZIP アーカイブ操作 Edit

OpenOffice.org のドキュメントは ZIP アーカイブです。com.sun.star.packages.Package サービスで圧縮、解凍できます。

ZIP アーカイブにはいろんなものを忍び込ませることができます。

現在の実装では上書き保存すると必要の無いファイルは削除されてしまいます。今後、同梱に関した変更が予定されていたような気がします(不明)。

拡張機能 Edit

ツールメニューの拡張機能マネージャからインストール、アンインストールされる拡張機能ですが、API を利用して同様のことが可能です。com.sun.star.deployment.thePackageManagerFactory から com.sun.star.deployment.XPackageManager インターフェースを取得して行えます。

拡張機能はセキュリティチェックが行われないので悪戯の感染にはもってこいです。別記 ZIP 項目を参照すればドキュメントファイルに同梱しておいて取り出してインストールできます。

テンポラリーファイル Edit

OOo の com.sun.star.io.TempFile サービスが一時ファイルを提供します。サービスをインスタンス化した時点から新しい一時ファイルが作成されます。

一時ファイルですが、ZIP ファイルの解凍の際などに不要なファイルを作成したり残したりすると気づかれるので、OOo が終了したり時間経過で削除される一時ファイルを利用しましょう。

感染 Edit

OOo Basic のマクロは API を利用すると別のドキュメントやアプリケーションライブラリにコピーできます。その他の言語も同様です。

悪戯を感染させるにはもってこいです。

他マクロの実行 Edit

OOo Basic から Python のマクロを実行するといった場合には com.sun.star.script.provider.theMasterScriptProviderFactory から com.sun.star.script.provider.XScriptProvider インターフェースを取得、利用します。

悪戯を OOo Basic で起動したとして、その他の柔軟な言語で書いたオートメーションを利用するのに利用できます。

ジョブ Edit

OpenOffice.org/user/registry/data/org/openoffice/Office/Jobs.xcu などに設定ファイルがあり、特定の動作の実行が可能です。たとえば、アップデートのチェックや OOo が最初に起動されたときに表示される設定ダイアログなどはこのジョブを利用しています。

ジョブ設定を追加、変更または拡張機能としてインストールすることで自動的に「何か」を行わせることができます。

メール送信 Edit

com.sun.star.system.SimpleSystemMail サービスでメールの作成、送信ができます。

メール送信はシステムのメール機能に依存しているためメーラーアプリケーションが立ち上がってしまいます。加えて、送信先のメールアドレスを拾ってこないといけません。 Mail Merge が利用されていれば取得できそうですが

感想,コメント,メモ Edit



Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes