パスワードを忘れた? アカウント作成
15346377 story
バグ

カスペルスキー製パスワードマネージャーに脆弱性。同じ時刻に同じパスワードを生成 94

ストーリー by nagazou
要更新と再生成 部門より
カスペルスキー製パスワードマネージャー「Kaspersky Password Manager(KPM)」に脆弱性が見つかり、新たにCVE-ID(CVE-2020-27020)が割り当てられた。生成されるパスワードに偏りが生じているという。カスペルスキーは脆弱性の報告を受けて、すでに対策を取ったバージョンを配布している。影響を受けるのはのWindows版では9.0.2パッチF以前のバージョン、Android用ではバージョン9.2.14.872以前、iOS用では9.2.14.31以前のものだとしている(KasperskyDonjonThe Register窓の杜 )。

発見者であるLedger社のセキュリティチーム「Ledger Donjon」によれば、KPMのパスワードジェネレーターには時刻をキーに用いるロジックに欠陥があり、生成する数値に偏りが生じていた。攻撃者はパスワード生成時期を知ることができれば、総当たり攻撃により数分で解析できるとしている。同社では最新版への更新を行うと同時にランダムパスワードを再生成するよう呼び掛けている。
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • これは… (スコア:4, 興味深い)

    by minet (45149) on 2021年07月12日 20時17分 (#4069318) 日記

    リンク先Donjon [ledger.com]

    However, for some reason, password generation is animated: (中略)
    This animation takes more than 1 second, so it is not possible to click several times on the “Generate” button within a second. That is definitely why the weakness had not been discovered before.

    (拙訳)しかしどういうわけか、パスワードの生成はアニメーションされる。このアニメーションは1秒以上かかるので、「生成」ボタンを同じ秒内にクリックすることはできない。それでこの脆弱性が今まで発見されなかったのだろう。
    -

    完全に邪推だけど、開発者は1秒内に連続生成すると同じパスワードしか出ない仕様だと把握してて、アニメーションで時間稼ぎを入れたんじゃないかと疑いたくなってしまう……
    好意的に見て、まさか時刻さえ同じなら全ての環境で同じパスワードになる脆弱性とは気づいていなかったのかも知れないけど、ゴマカシを入れたのは意図的なんじゃないかな。

    • by Anonymous Coward

      普通のプログラムで現在時間要求したら1秒単位ってことはないだろうからな。

  • これは仕方がないミス (スコア:3, おもしろおかしい)

    by Anonymous Coward on 2021年07月12日 18時18分 (#4069237)

    例えば、javaの乱数生成のドキュメントでも
    セキュリティ目的では使用できず、安全なSecureRandomの使用を進めているけど [oracle.com]、

    使用する部品の仕様書を逐一確認するのは大変だし、
    ましてやセキュリティ関連になると、ますます難しい。

    セキュリティで食っている会社でもなきゃ、そういったミスは仕方ないんじゃないかな
    ね?カスペルスキーさん トレンドマイクロさん [security.srad.jp]

    • by Anonymous Coward on 2021年07月12日 18時54分 (#4069270)

      いや、この脆弱性の本質は、非暗号論的な疑似乱数(今回のケースではメルセンヌ・ツイスタ)を使ったことではなくて、
      その種がシステム時刻でしかなく、それによって推測しやすくなっていたことでは。

      親コメント
      • php で言えば、ほとんどの人は mt_rand をそのまま使っていると思いますね。

        mt_rand ではランダムの種に現在時刻とプロセスIDを使っているということです(参考資料 [lovepeers.org])ので時刻だけよりかはだいぶマシですが、もっとバレにくくするにはコレ [hatenablog.com]とか参考になると思います。

        いやー、実は私も、この事件を知って始めて openssl_random_pseudo_bytes を知った。
        あぶねー、あぶねー。

        親コメント
        • by Anonymous Coward

          mt_randは暗号論的乱数として使えるように設計されていないから使ってはいけないというのは常識だと思ってた

      • by Anonymous Coward

        いやこれ単なる嫌味じゃろ

        • by Anonymous Coward

          その嫌味が間違ってて嫌味になってないって指摘じゃない
          乱数生成アルゴリズムが適切に選択されてないって指摘に、よく見かける seed bit 分の空間しか持ってないってミスじゃないかという指摘
          とっちが正しいのかは流し読みしかしてないから知らん

          • by Anonymous Coward

            この前のスクエニの人?

  • by Anonymous Coward on 2021年07月12日 18時32分 (#4069253)

    PCにサイコロ(本物)を内蔵しておけと

    • by nnnhhh (47970) on 2021年07月12日 18時33分 (#4069254) 日記

      その辺のサイコロのランダム性ってどれぐらい高いんだろうね

      親コメント
      • Re:だから (スコア:3, 興味深い)

        by Anonymous Coward on 2021年07月13日 10時48分 (#4069651)

        その昔、中学生だった時分、サイコロを 10 万回振ったら、 1 が 1/6 より大きく、 2 が最も小さく、 3,4,5,6 と増えていきました。
        先生曰く、おそらく私が使ったサイコロは手元にあったサイコロで 1 のへこみが他のどれよりも大きく、 1 の面が軽かったので一番多く出たのではないかとのこと。よく観察すれば確かに 1 だけが大きく、 2,3,4,5,6 はへこみは同じ大きさでした。本物の正しいさいころは全てのくぼみの削った重さが同じになるように彫られて、 2 は一よりは小さいが三より大きいへこみになるようにしなくてはならないとか。

        カジノでは透明な樹脂に●が印刷されてますね。こっちが容易で正解かも。

        親コメント
        • by nnnhhh (47970) on 2021年07月13日 10時58分 (#4069654) 日記

          おお、実測で確認するとはすごい
          「確率をそろえるために数字の小さい(1の)丸は大きいんだ」とは聞いたことありますが、
          やりすぎてたってことなんですかね

          なおせっかくですので、どれぐらいのズレだったかは覚えてたりしないですかね…?

          親コメント
      • by Anonymous Coward

        多少偏ってても人間が振ればセーフ

        # そして出てくるピンゾロ賽

      • by Anonymous Coward

        サイコロを振ることによる乱数は、その「振る」人間の力加減が乱数性の根拠になっているので、
        手慣れた人間が自分のサイコロを持ち込んで振れば、たとえそれが不正のないサイコロであっても、容易に好きな目を出せます。

        • by Anonymous Coward

          手慣れた人間が自分のサイコロを持ち込んで振れば、たとえそれが不正のないサイコロであっても、容易に好きな目を出せます。

          さいですか

          だがよく考えてほしい
          Kasperskyはロシアの会社だ
          ロシア人の手が震えていないのは飲んでいないときだけ
          ということを

        • by Anonymous Coward

          いやそれはずれてる。ランダムな数字を狙ってる人は特定の目を狙わない。
          批判するならサイコロを振る人の癖で出る目を絞れるとか。

        • by Anonymous Coward

          力加減の影響が無視できるくらいの高さから落とせばよいのでは?

          # さいころを振るって呼べなくなりそう

    • by Anonymous Crow (45505) on 2021年07月13日 8時38分 (#4069548)
      >PCにサイコロ(本物)を内蔵しておけと

      Win11 & TMP 「お、おう!」
      親コメント
    • by Anonymous Coward

      いちおう、最近のCPUには乱数生成器は内蔵されていて
      RDRAND命令ってので使えるんだけど、これがあまり信用されなくて
      手放しで使われないという情けない状態
      とか

      • by Anonymous Coward

        LinusがNSAのバックドア云々いってたのが懐かしいな

      • by Anonymous Coward

        最近Windows 11が要求したことで一気に話題になったTPMが暗号論的乱数の生成器(を含むハードウェア)だぞ

    • by Anonymous Coward

      PCにサイコロ(本物)を内蔵しておけと

      サイコロを振った結果

      17ページに進め(アレ?

    • by Anonymous Coward

      サイコロ命令はあるけどね

  • by Anonymous Coward on 2021年07月12日 22時32分 (#4069397)

    コンピュータというのは本質的に同じプログラムは同じ結果を返すものなので、乱数を生成するのは難しいのです。

    暗号論的擬似乱数生成器とよばれるものでさえも、得にOS自体を仮想環境で動かしていた場合など、環境ノイズの不足により信頼性に疑問を述べている専門家もいます。
    セキュリティ意識が高い人は、普段使いの環境も用途毎に仮想化していたりするので、パスワードマネージャも仮想環境を考慮しなくてはなりません。
    TPMの暗号論的擬似乱数生成器も仮想環境からだとうまく利用できないし、それだけならよいのですがTPM必須の仮想OSを動かすために偽物のTPMを仮想化ソフトウェアが用意していたら無知なユーザが知らない間に強度の低い種が使われるかもしれません。

    原始的だとか馬鹿にする人が居ますが、やはり TrueCryptやVeraCryptのように、マウスをグリグリさせて乱数の種を生成するのが良いでしょう。
    「質の良い乱数の種を生成するため、マウスをできる限りランダムにグリグリ動かしてください」と人間に命じるのです。

    人間様は同じように動かそうとしてもそもそもできないので必ず推測不可能なランダムな動きになります(同じように意識して回しても高dpiな今のマウスでは推測不可能な種が作られます)

    信頼できるパスワードマネージャーは、ユーザーにマウスをグリグリさせるべきです。
    乱数の種は、手作りが一番です。

    • by Anonymous Coward on 2021年07月13日 1時55分 (#4069464)

      > 信頼できるパスワードマネージャーは、ユーザーにマウスをグリグリさせるべきです。

      パスワードマネージャじゃなくても
      OS自体がすでに「マウスのグリグリ」を利用していますよ

      https://en.wikipedia.org/wiki/Entropy_(computing) [wikipedia.org]

      もっと言うと「マウスのぐりぐり」だけでは不十分で
      - ネットワークのパケットの受信タイミングとかパケット長
      - ハードウェアの割り込みタイミング(マウスやキーボードの割り込みなどを含む)
      - CPU内部のハードウェア乱数生成器(電子回路が受ける外来ノイズから乱数を生成しているので予測が困難)
      - BIOS(firmware)に書き込まれているデバイス固有のIDやビット列
      などを組み合わせるのが現在の主流の方法です

      そしてそれらの方法は,OSの標準機能になっていて
      LinuxやBSDなら /dev/urandom あたりを
      Windowsなら Cryptography API あたりを使えば簡単に利用でき,質の良い乱数が得られます.

      また移植性を考えるなら openssl のライブラリを使う方法などもあります.

      > 乱数の種は、手作りが一番です。

      手作りの結果,カスペルスキー製パスワードマネージャーにはセキュリティホールが生まれています.

      そもそも乱数はパスワード生成時だけでなく,SSLの通信など様々な処理で必要になります.
      例えばブラウザでhttpsを使うたびに,マウスをグリグリしているようでは,話になりません.
      パスワード生成時だけ別処理にする意味がありません.

      信頼性・保守性・実用性を考えると,わざわざ手作りのモジュールを使うより
      OS標準のモジュールを使ったほうがメリットが多いと思います

      親コメント
      • >信頼性・保守性・実用性を考えると,わざわざ手作りのモジュールを使うより
        >OS標準のモジュールを使ったほうがメリットが多いと思います

        システム時刻(秒)を毎回シードに、乱数取り出し回数も固定、1秒のアニメ

        これ、セキュリティの専門家たちが作ったんですよね
        ここまでくると、事実上のバックドアに思えて仕方ない
        親コメント
    • by Anonymous Coward on 2021年07月13日 4時58分 (#4069491)

      ここではもうファストジョークでなきゃマジレスしか付かんぞ

      親コメント
    • by Anonymous Coward

      ブロックチェーン業界の朝は早い

  • by Anonymous Coward on 2021年07月12日 18時25分 (#4069244)

    パスワードマネージャの作者を盲信する
    または
    自分のセキュリティ管理を盲信する

    # 漏れる前提で運用するならどっちも大差ない気も、、、

    • by Anonymous Coward

      セキュリティは性能で選ぶべき( ・ิω・ิ)

      • by Anonymous Coward

        PCもスマホも使わないが一番!

        • by Anonymous Coward

          あんたどうやってスラドに書き込んでるんだ

  • by Anonymous Coward on 2021年07月12日 20時14分 (#4069313)

    Rレジスタって無いんですね……

    • by Anonymous Coward

      今時のPCではリフレッシュはCPUじゃやらないからな

    • by Anonymous Coward

      Rレジスタって無いんですね……

      代わりに持病のリークのLなら実装済みかも

    • by Anonymous Coward

      一部のプロセッサには起動後のクロック数をカウントするレジスタならありますよ
      OS側で用意してるタイマーよりも細かく実行時間の計測などが出来ます

      • by Anonymous Coward

        ただ近ごろのプロセッサーは節電のためにクロックが可変だからタイマーとして使うのは微妙

    • by Anonymous Coward

      RDRANDっていう専用の命令があるよ

typodupeerror

犯人は巨人ファンでA型で眼鏡をかけている -- あるハッカー

読み込み中...