Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2022-44311 — html2xhtml における境界外読み取り : CVE-2022-44311 | Kitploit
ツール/GitHubGitHub/desmondsanctity/cve-2022-44311
メモリフォレンジック脆弱性分析エクスプロイトファジングバイナリ解析学習と教育
GitHubdesmondsanctity/cve-2022-44311

CVE-2022-44311

html2xhtml における境界外読み取り : CVE-2022-44311

リポジトリを見る
23年前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

html2xhtml における境界外読み取り(Out-Of-Bounds Read): CVE-2022-44311

概要

Html2xhtml v1.3 には、procesador.c の関数 static void elm_close(tree_node_t *nodo) に境界外読み取り(Out-of-Bounds Read)が存在することが判明しました。この脆弱性により、攻撃者は巧妙に細工された HTML ファイルを介して、機密ファイルへのアクセスやサービス拒否(DoS)を引き起こす可能性があります。

CWE-125 境界外読み取り(Out-of-Bounds Read) は、メモリからデータを読み取る際に発生する可能性のあるソフトウェアエラーの一種です。これは、例えばプログラムが配列の末尾を超えて読み取ろうとした場合に発生します。境界外読み取りは、クラッシュやその他の予期しない脆弱性を引き起こす可能性があり、攻撃者が本来アクセスできない機密情報を読み取ることを可能にする場合があります。

製品

html2xhtml

検証済みバージョン

1.3

詳細

問題: html2xhtml/src/procesador.c における境界外読み取り (GHSA-28fm-qh2h-3mch)

Html2xhtml は、HTML ファイルを XHTML ファイルに変換するコマンドラインツールです。Html2xhtml は、次のいずれかの文書型に準拠した XHTML 出力を生成できます: XHTML 1.0(Transitional、Strict、Frameset)、XHTML 1.1、XHTML Basic、XHTML Mobile Profile。

この脆弱性は、-t frameset オプションを使用した際に発生したセグメンテーションフォールト(segfault)エラーによって発見されました。セグメンテーションフォールト(segfault) は、自分に属さないメモリにアクセスすることで発生する特定の種類のエラーです。これは、メモリを破壊してデバッグが困難なメモリバグを引き起こすのを防ぐためのヘルパーメカニズムです。

C および C++ プログラムのヒープメモリ(new や malloc で動的に割り当てられるメモリ)へのメモリアクセスエラーを検出するツールである Valgrind を使用してセグフォルトエラーをデバッグしたところ、テストケースで invalid read of size 4(サイズ 4 の無効な読み取り)が報告されました:

root@kitploit:~
==1040381== Memcheck, a memory error detector
==1040381== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==1040381== Using Valgrind-3.18.1 and LibVEX; rerun with -h for copyright info
==1040381== Command: ./src/html2xhtml -t frameset report/vuln/id:000000,sig:11,src:001386+001369,time:12081510,execs:2336913,op:splice,rep:16
==1040381== 
==1040381== Invalid read of size 4
==1040381==    at 0x40E911: elm_close (procesador.c:944)
==1040381==    by 0x410617: err_html_struct (procesador.c:1889)
==1040381==    by 0x40F20A: err_content_invalid (procesador.c:0)
==1040381==    by 0x40F20A: elm_close (procesador.c:959)
==1040381==    by 0x40E7C4: saxEndDocument (procesador.c:233)
==1040381==    by 0x40DF7A: main (html2xhtml.c:117)
==1040381==  Address 0x6f20d4 is not stack'd, malloc'd or (recently) free'd
==1040381== 
==1040381== 
==1040381== Process terminating with default action of signal 11 (SIGSEGV)
==1040381==  Access not within mapped region at address 0x6F20D4
==1040381==    at 0x40E911: elm_close (procesador.c:944)
==1040381==    by 0x410617: err_html_struct (procesador.c:1889)
==1040381==    by 0x40F20A: err_content_invalid (procesador.c:0)
==1040381==    by 0x40F20A: elm_close (procesador.c:959)
==1040381==    by 0x40E7C4: saxEndDocument (procesador.c:233)
==1040381==    by 0x40DF7A: main (html2xhtml.c:117)
==1040381==  If you believe this happened as a result of a stack
==1040381==  overflow in your program's main thread (unlikely but
==1040381==  possible), you can try to increase the size of the
==1040381==  main thread stack using the --main-stacksize= flag.
==1040381==  The main thread stack size used in this run was 8388608.
==1040381== 
==1040381== HEAP SUMMARY:
==1040381==     in use at exit: 88,190 bytes in 13 blocks
==1040381==   total heap usage: 22 allocs, 9 frees, 2,218,413 bytes allocated
==1040381== 
==1040381== LEAK SUMMARY:
==1040381==    definitely lost: 0 bytes in 0 blocks
==1040381==    indirectly lost: 0 bytes in 0 blocks
==1040381==      possibly lost: 0 bytes in 0 blocks
==1040381==    still reachable: 88,190 bytes in 13 blocks
==1040381==         suppressed: 0 bytes in 0 blocks
==1040381== Rerun with --leak-check=full to see details of leaked memory
==1040381== 
==1040381== For lists of detected and suppressed errors, rerun with: -s
==1040381== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
==1040419== Memcheck, a memory error detector

Valgrind からのエラーログにより、セグフォルトが発生した以下の関数が特定されました:

https://github.com/jfisteus/html2xhtml/blob/ffb2f1f12910eb5945413e0bdb9272b508241aa1/src/procesador.c#L940

image

この関数には型チェックが欠如していることが判明しました。ユーザーが element ではなく comment 型のノードをこの関数に渡すと、境界外読み取りエラーが発生します。ユーザーが無効な ELM_PTR(nodo).contenttype[doctype] を含む不正な文書を提供すると、アセンブリ内で次の比較が行われます:

root@kitploit:~
cmp    dword ptr [rbp + rax*4 + 0xc], 4

この脆弱性は、攻撃者が細工されたファイルを使用して、機密ファイル、メモリ、またはメモリ位置を読み取るために悪用される可能性があります。

影響

  • この問題は、攻撃者が機密メモリ、メモリ位置、またはファイルを読み取るために悪用される可能性があります。
  • 攻撃者は、巧妙に細工された HTML ファイルを介してサービス拒否(DoS)攻撃を引き起こすこともできます。

パッチ

  • この脆弱性は、ソフトウェアのパッケージ版を使用しているすべてのユーザーに影響します。このソフトウェアの GitHub リポジトリの master ブランチには、この コミット に関連する修正があります。
  • ユーザーは、2022年10月25日以降 の日付のパッケージへの最近の更新を取得し、自分のマシンでコンパイルすることをお勧めします。バグ修正後に新しいリリースやバージョン管理はありません。

参考情報

  • https://nvd.nist.gov/vuln/detail/CVE-2022-44311
  • jfisteus/html2xhtml#19
  • https://securityboulevard.com/2022/06/what-is-an-out-of-bounds-read-and-out-of-bounds-write-error/
  • https://cwe.mitre.org/data/definitions/125.html

CVSS 基本評価基準

CVE

  • CVE-2022-44311

クレジット

  • この問題は、@Halcy0nic によって発見され、html2xhtml のソフトウェアリポジトリへの issue として報告されました。
ツールをダウンロード
深刻度高 8.1 / 10
攻撃の複雑さ低
必要な権限レベルなし
ユーザー操作要
スコープ変更なし
機密性高
完全性なし
可用性高