1 件の投稿を表示中 (合計 3 個)
  • 作成者
    投稿
  • #32540
    yasuji
    Participant

    江村様

    いつもお世話になっております。
    yasujiです。

    (1)[ファイル(F)] –> [お気に入り(T)] –> [お気に入りのカスタマイズ(C)…]ページの[追加(A)]をクリックして、ファイルを追加したあと、[ファイル(F)] –> [お気に入り(T)]からそのファイルを開こうとすると、下記のエラーメッセージが表示されて開くことができません。ただし、そのファイルを(2)[ファイル(F)] –> [開く(O)]から開いて、[ファイル(F)] –> [お気に入り(T)] –> [お気に入りに追加(A)]から追加した場合は、正常に開くことができます。

    表示されるエラーメッセージ:
    —–
    指定されたパスが見つかりません。
    最近のファイル/フォルダ一覧からこの項目を削除しますか?
    .\emed64_25.4.0_portable\template.java
    —–

    なお、emed64_25.4.0_portableがCドライブ上にある場合、(1)で追加するとCドライブ上のファイルはすべて相対パスに変換されます。Dドライブのファイルを追加すると、なぜか絶対パスとして追加されて正常に開くことができます。

    江村様、私の記憶では少なくてもEmEditorを10年以上は開発し続けているはずです。ファイルのパスの取り扱いは、基本中の基本なのですが、なぜ今の時点でこのようなファイルパスの取り扱を失敗しているのでしょうか?
    相対パスの場合は、カレントディレクトリがどこに設定されているかで、どのファイルを開くかが決まります。ユーザが意図しないファイルを開くことになりかねません。
    DLLの動的ロード(LoadLibrary/LoadLibraryExで起動完了後に遅延してDLLをロードする手法)で、悪意を持った人が悪意あるDLLを意図的に読み込ませる攻撃手法があります。さらに、ここ最近の世の中の動きを見ていると、npm packagesにマルウェアが挿入された事例が記憶に新しいかと思います。攻撃者は、あらゆる手段を使ってPCに悪意あるプログラムを送り込むことが容易に想像できる状況です。EmEditorを起点に何か悪いことが起きて被害に遭うことを懸念しております。テキストファイル一つで何ができるかと言いたいかもしれませんが、このような取り扱いを失敗していることで、EmEditor.exe本体が利用するDLLファイルや、プラグインファイルなどが悪用されることを懸念してしまいます。フィッシング詐欺などは、高度かつ巧妙になりメールではほぼ判別不可能なレベルになってきています。したがって、第三者のプラグインも表面上は良いように見えても、中の処理に悪意あるものが組み込まれている可能性があるので、公式配布以外の物は一切使用しないようにしています(危険度が日々増しているように見えているため)。

    Malware Injected into 7 npm Packages After Maintainer Tokens Stolen in Phishing Attack – The Hacker News

    上記不具合の発生の再現手順は下記の通りです。

    〔対象〕
    v25.4.0 (64bit)
    v25.3.2 (64bit)
    v25.0.1 (64bit)
    ※v25.0.1 (64bit)については、下記手順の3.と7.は正常にファイルを開くことができるが、2.では相対パスとして登録される。

    〔再現手順〕
    1.EmEditor 64bit ポータブル版を初期状態で起動
     zipファイルから展開して、起動する。
     初回のエディション選択は、Professionalを選択する。

    2.お気に入りにファイルを追加
    1.で展開した同じフォルダにある template.java を[ファイル(F)] –> [お気に入り(T)] –> [お気に入りのカスタマイズ(C)…]ページの[追加(A)]をクリックしてファイルを追加する。

    3.追加したお気に入りのファイルを開く
    [ファイル(F)] –> [お気に入り(T)]から2.で追加したファイルをクリックして開く。

    4.結果確認
    下記のようなエラーメッセージが表示される。

    表示されるエラーメッセージ:
    —–
    指定されたパスが見つかりません。
    最近のファイル/フォルダ一覧からこの項目を削除しますか?
    .\emed64_25.4.0_portable\template.java
    —–

    なお、2.において、EmEditor.exeが置かれているドライブ(例えば、Cドライブ)以外のドライブ(例えば、Dドライブ)に配置されているファイルを追加すると絶対パスとして登録される。お気に入りからそのファイルをクリックすると正常に開くことができる。

    5.ファイルを開く
    1.で展開した同じフォルダにある template.java を[ファイル(F)] –> [開く(O)]から開く。

    6.お気に入りに開いているタブのファイルを追加
    template.javaのタブをアクティブにした状態で、[ファイル(F)] –> [お気に入り(T)] –> [お気に入りに追加(A)]をクリックして、お気に入りに追加する。

    7.追加したお気に入りのファイルを開く
    template.javaのタブを閉じる。
    [ファイル(F)] –> [お気に入り(T)]から6.で追加したファイルをクリックして開く。

    8.結果確認
    エラーメッセージは表示されずにファイルが正常に開く。

    9.お気に入りの設定確認
    [ファイル(F)] –> [お気に入り(T)] –> [お気に入りのカスタマイズ(C)…]ページを開くと、2.で追加したファイルのパスは相対パス、6.で追加したファイルパスは絶対パスとして登録されていることが確認できる。

    #32555
    Yutaka Emura
    Keymaster

    yasuji 様

    いつも EmEditor をご利用いただき、また、たいへん詳細な再現手順とご指摘を賜りありがとうございます。ご不便をおかけしましたことをお詫びいたします。

    ご報告の「お気に入りのカスタマイズ」から追加した際に、ポータブル版で相対パスの基準ディレクトリ計算に不具合があり、ファイルを開けないことがある問題は、こちらでも再現・確認できました。近日公開予定の v25.4.1 にて修正いたします。

    回避策としては、いったん [ファイル] → [開く] から対象ファイルを開いたうえで、[ファイル] → [お気に入り] → [お気に入りに追加] をご利用ください。

    あわせて仕様について補足いたします。
    – インストーラー版では通常、ユーザー定義のパス(お気に入り等)は絶対パスで保存します。
    – ポータブル版では、USB メモリなどで異なる PC に移動しても参照できるよう、同一ドライブ内の項目は相対パスで、別ドライブの項目は絶対パスで保存するのが仕様です。
    – 今回の不具合は、この「相対パス化」の基準ディレクトリの扱いに不備があり、結果として一部環境で正しく参照できなくなるものです。設計意図自体は上記のとおりですが、処理の不備によりご不便をおかけしました。

    セキュリティ面のご懸念についても、真摯に受け止めております。EmEditor 本体が LoadLibrary/LoadLibraryEx を用いてロードする DLL については、インストーラー版・ポータブル版を問わずフルパス(絶対パス)指定でロードし、加えて DLL のデジタル署名検証を行うなど、二重の対策を講じております。本件(お気に入りの相対パス不具合)は、テキストファイル参照用のパス表記に関する問題であり、アプリケーションやプラグインの DLL ロード挙動とは切り離されています。とはいえ、パス処理は基本であるとのご指摘は重く受け止め、今後もテストと検証を一層強化してまいります。

    修正を含む v25.4.1 を公開次第、あらためてご案内いたします。もしお時間が許せば、公開後のご確認にご協力いただけますと幸いです。引き続き何かお気づきの点がございましたら、遠慮なくお知らせください。

    この度はご報告ありがとうございました。

    #32559
    yasuji
    Participant

    江村様

    いつもお世話になっております。
    yasujiです。

    現時点で、v25.4.1が公開済みでしたので、手順に従って確認しました。
    (1)、(2)のいずれも問題なく開けることを確認しました。念のため、本体がCドライブにある状態で、Dドライブのファイルのケースも試しましたが、(1)、(2)のいずれも問題なく開けることを確認しました。

    問題は解決しました。

    取り急ぎ、ご連絡まで。

1 件の投稿を表示中 (合計 3 個)
  • フォーラム ‘EmEditor 本体の不具合の報告’ には新しいトピックや返信を追加できません。