先週、私たちはたくさんのことについて書きました メモリ管理のバグ これは、人気のある OpenSSL 暗号化ライブラリの最新のセキュリティ アップデートで修正されました。
これらのメモリのバグに加えて、バグと呼ばれるバグについても報告しました。 CVE-2022-4304: RSA 復号化における Oracle のタイミング.
このバグでは、同じ暗号化されたメッセージをサーバーで何度も発射しますが、データの末尾のパディングを変更してデータを無効にし、ある種の予測不可能な動作を引き起こします…
…プロセスのデータ転送部分にかかる時間を確実に推測できるネットワーク上のターゲットに近いと仮定すると、一貫した時間はかかりません.
すべてのデータが均等に処理されるわけではありません
リクエストを開始し、応答にかかる時間を測定し、ネットワーク データの低レベルの送受信に費やされた時間を差し引くと、サーバーがリクエストを処理するために内部計算を行うのにかかった時間がわかります。 .
ネットワークでどれくらいの時間が費やされているかわからない場合でも、多くのリクエストを開始して大量のサンプルを収集することで、往復時間の変動を探すことができます。
ネットワークのオーバーヘッドがほぼ一定であると想定できるほどネットワークの信頼性が高い場合は、統計的手法を使用して、どの種類のデータ変更がどのような余分な処理遅延を引き起こすかを推測できる場合があります。
このことから、繰り返される各リクエスト内で秘密に保たれているはずの元の暗号化されていないデータの構造、またはコンテンツについて何かを推測することができます。
平文を XNUMX バイトしか抽出できなくても、それは起こりません。
いわゆる タイミング攻撃 何百万もの偽のパケットを送信し、XNUMX バイトの平文データだけを復元できるようにすべてのパケットの時間を計らなければならない場合でも、この種の処理は常に面倒です。
…ネットワークは、ほんの数年前よりも高速で予測可能であり、はるかに多くの負荷を処理できるためです。
何百万もの危険なパケットがスパムとして送信され、たとえば次の XNUMX 時間で、親指のように目立つと思うかもしれません。
しかし、「XNUMX 時間あたり XNUMX 万個のパケットが通常より多いか少ないか」は、もはや特に大きな変動ではありません。
GnuTLS の同様の「オラクル」バグ
さて、OpenSSL で最後に修正されたバグのタイミングのバグを報告した同じ人が、 GnuTLS の同様のバグ ほぼ同時に。
これにはバグ識別子があります CVE-2023-0361.
GnuTLS は OpenSSL ほど普及しておらず、広く使用されているわけではありませんが、IT 資産や自分のコンピューターでさえ、GnuTLS を使用したり組み込んだりするプログラムが多数あるでしょう。FFmpeg、GnuPG、Mplayer、QEMU などがあります。 、Rdesktop、Samba、Wget、および Wireshark です。
皮肉なことに、GnuTLS のタイミングの欠陥は、そもそもタイミング攻撃エラーをログに記録するはずだったコードに現れました。
コードの違いからわかるように (差分) 以下で、プログラマーは条件 (if ... then
) 復号化エラーのチェックと処理に使用される操作では、タイミングの変動が生じる可能性があります。これは、CPU は通常、コードが「分岐」命令の後にどの方向に進むかによって、異なる時間がかかるためです。
(CPU は、パフォーマンスを向上させるために繰り返し実行されるコードを記憶またはキャッシュする傾向があり、頻繁に実行されないコードの実行速度が検出可能なほど遅くなる傾向があるため、一方の方向に進むことが多く、他方の方向にはめったに進まない分岐では特にそうです。)
しかし、プログラマーは、攻撃が発生している可能性があることをログに記録したいと考えていました。 if (ok)
上記のテストは失敗し、に分岐します else { ... }
のセクションから無料でダウンロードできます。
この時点で、コードは _gnutls_debug_log()
その作業を行うにはかなりの時間がかかる可能性があります。
したがって、コーダーは意図的な呼び出しを挿入しました _gnutls_no_log()
セクションに then { ... }
コードの一部で、「攻撃」がない場合でもログに記録するふりをして、コードがどちらの方向にも費やす時間を均等にしようとします。 if (ok)
分岐命令は取ることができます。
しかし、どうやら XNUMX つのコード パスは、使い果たした時点では十分に似ていませんでした (または、おそらく _gnutls_debug_log()
機能だけでは、さまざまな種類のエラーを処理するのに十分な一貫性がありませんでした)、攻撃者は、XNUMX 万回ほど試行した後に、復号化の兆候を識別し始める可能性があります。
何をするか?
プログラマーの場合: ここでのバグ修正は単純で、「少ないほどよい」という原則に従いました。
上記のピンク色のコードは、いずれにせよ非常に有用な攻撃検出データを提供しないと見なされましたが、ビルド設定に関係なく、そこにないコードが誤ってコンパイルされる可能性がないという理由で、単純に削除されました…
…そして、コンパイルされていないコードは、偶然であれ設計であれ、決して実行できません。
GnuTLS ユーザーの場合: 最近リリースされたバージョン 3.7.9 そして「新商品フレーバー」 3.8.0 この修正と、他のさまざまな修正が含まれています。
Linux ディストリビューションを実行している場合は、お持ちの GnuTLS の中央管理された共有ライブラリ バージョンの更新と、独自のバージョンを提供するアプリを確認してください。
Linux では、次の名前のファイルを検索します。 libgnutls*.so
周りにある共有ライブラリを見つけて、 gnutls-cli
ライブラリに含まれていることが多いコマンド ライン ユーティリティのコピーを見つけます。
あなたは走れる gnutls-cli -vv
どのバージョンの libgnutls
動的にリンクされています:
$ gnutls-cli -vv gnutls-cli 3.7.9 <-- 私の Linux ディストリビューションは先週の金曜日に更新されました (2023-02-10)
- SEO を活用したコンテンツと PR 配信。 今日増幅されます。
- Platoblockchain。 Web3メタバースインテリジェンス。 知識の増幅。 こちらからアクセスしてください。
- 情報源: https://nakedsecurity.sophos.com/2023/02/13/serious-security-gnutls-follows-openssl-fixes-timing-attack-bug/
- 1
- 7
- 70
- 9
- a
- できる
- 私たちについて
- 上記の.
- 絶対の
- 事故
- 後
- に対して
- すべて
- 常に
- 量
- &
- 回答
- 登場
- アプリ
- 周りに
- 攻撃
- 著者
- オート
- 背景画像
- なぜなら
- 以下
- 国境
- ボトム
- ブランチ
- 支店
- 持って来る
- バグ
- バグ
- ビルド
- 束
- キャッシュ
- コール
- コール
- できる
- 原因
- センター
- チャンス
- チェック
- 点検
- 閉じる
- コード
- コーダー
- 収集
- カラー
- 計算
- コンピュータ
- 整合性のある
- 定数
- 消費
- コンテンツ
- 可能性
- カバー
- データ
- 取引
- 遅らせる
- によっては
- 設計
- 検出
- 違い
- 異なります
- 方向
- ディスプレイ
- 見分けます
- ダビングされた
- 動的に
- 各
- どちら
- では使用できません
- 暗号化
- 十分な
- エラー
- エラー
- 特に
- 不動産
- さらに
- 余分な
- エキス
- 失敗
- 速いです
- 少数の
- もう完成させ、ワークスペースに掲示しましたか?
- 火災
- 発射
- 名
- 修正する
- 固定の
- 欠陥
- 続いて
- 次
- 金曜日
- から
- function
- 一般に
- 与える
- ヌートル
- ゴエス
- 根拠
- ハンドリング
- 起こる
- 起こります
- 高さ
- こちら
- ホバー
- 認定条件
- しかしながら
- HTTPS
- 識別子
- 改善します
- in
- include
- 含まれました
- 含めて
- 内部
- IT
- 一つだけ
- 知っている
- 大
- 主として
- 姓
- 最新の
- ライブラリ
- 図書館
- LINE
- リンク
- linuxの
- 負荷
- 負荷
- 長い
- 見て
- make
- 作成
- 管理
- 多くの
- マージン
- 最大幅
- メモリ
- メッセージ
- メソッド
- かもしれない
- 百万
- 何百万
- ミス
- 他には?
- 名
- 必要
- ネットワーク
- ネットワークデータ
- ネットワーキング
- ネットワーク
- 次の
- 通常の
- 数
- ONE
- opensslの
- 操作
- オラクル
- 注文
- オリジナル
- その他
- その他
- 自分の
- パケット
- 部
- 特に
- Paul Cairns
- パフォーマンス
- おそらく
- 人
- 場所
- 平文
- プラトン
- プラトンデータインテリジェンス
- プラトデータ
- ポイント
- 人気
- 位置
- 投稿
- 予測可能な
- 原則
- 多分
- プロセス
- 処理
- 作り出す
- プロダクト
- プログラマー
- プログラム
- 回復
- 関係なく
- 信頼性のある
- 覚えています
- 繰り返される
- 繰り返し
- 報告
- 要求
- リクエスト
- RSA
- ラン
- ランニング
- サンバ
- 同じ
- を検索
- 秘密
- セクション
- セキュリティ
- セキュリティ更新プログラム
- 滅多
- 深刻な
- shared
- 同様の
- 簡単な拡張で
- 単に
- So
- 固体
- 一部
- 何か
- スタンド
- 統計的
- まだ
- 構造
- 想定
- SVG
- 取る
- 取り
- ターゲット
- test
- アプリ環境に合わせて
- 考える
- 時間
- <font style="vertical-align: inherit;">回数</font>
- タイミング
- 〜へ
- top
- 転送
- 遷移
- トランスペアレント
- true
- 予測できない
- アップデイト
- 更新版
- URL
- つかいます
- ユーザー
- ユーティリティ
- さまざまな
- バージョン
- wanted
- 週間
- この試験は
- かどうか
- which
- while
- 誰
- 仕事
- でしょう
- 年
- あなたの
- ゼファーネット