Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
RCEへの近道
Search
kawakatz
July 20, 2024
Research
1.8k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
RCEへの近道
kawakatz
July 20, 2024
Other Decks in Research
See All in Research
正規分布と最適化について
koide3
1
260
Unified Audio Source Separation (Defense Slides)
kohei_1979
1
620
明日から使える!研究効率化ツール入門
matsui_528
13
7.3k
National high-resolution cropland classification of Japan with agricultural census information and multi-temporal multi-modality datasets
satai
3
300
Sleuthcon Keynote - How Cybercriminals (ab)use AI
fr0gger
0
150
Apache Gravitinoで実現する Icebergカタログ統合とアクセスの一元化
matsumooon
0
290
コーディングエージェントとABNを再考
hf149
2
720
COFFEE-Japan PROJECT Impact Report(Uminomukou Coffee)
ontheslope
0
200
Can We Teach Logical Reasoning to LLMs? – An Approach Using Synthetic Corpora (AAAI 2026 bridge keynote)
morishtr
1
260
Model Discovery and Graph Simulation: A Lightweight Gateway to Chaos Engineering
anatolykr
0
210
長時間動画QAにおけるマルチエージェント推論 ・SVAgent: Storyline-Guided Long Video Understanding via Cross-Modal Multi-Agent Collaboration
murakawatakuya
1
130
Fukui Shibiten 39 - AI Art
butchi
0
130
Featured
See All Featured
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.3k
Utilizing Notion as your number one productivity tool
mfonobong
4
320
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
250
Designing for Performance
lara
611
70k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
160
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
590
Raft: Consensus for Rubyists
vanstee
141
7.5k
Speed Design
sergeychernyshev
33
1.9k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
1
210
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Bash Introduction
62gerente
615
220k
How to make the Groovebox
asonas
2
2.2k
Transcript
None
None
X: @kawakatz 自己紹介 GMOサイバーセキュリティ byイエラエ株式会社 オフェンシブセキュリティ部ペネトレーションテスト課 川田 柾浩 • 業務領域
(5年目) ツール・マルウェア開発 ペネトレーションテスト・レッドチーム その他調査・研究 • 資格 • CVE CVE-2023-27966: macOS App Sandbox escape (>$10,000, Apple Inc.) CVE-2024-XXXXX: Remotely accessible TightVNC passwords (GlavSoft LLC) CVE-2024-XXXXX: RCE * 2 + LPE CVE-2024-XXXXX: RCE * 3 (Vuln * 5)
1. 自己紹介 2. メインテーマ 3. 調査目的 4. 脆弱性概要 5. TightVNCとは
6. 解析対象ソフトウェアの選定 7. 名前付きパイプに関する処理の解析 8. PoCの実装 9. TightVNC側の対策 10. CVEの発行 11. タイムライン 目次
None
ü 解析対象ソフトウェアの選定基準 ü 解析対象箇所の特定に至るまで メインテーマ 対象 選定 入力 受取 入力
解析 後続 処理
None
RCE(かLPE)に至る脆弱性の検出を目的としたソフトウェア解析の練習 調査目的
None
TightVNCに対してリモートからパスワードを読み込み可能な脆弱性 脆弱性概要
None
TightVNC 2.8.81 (2023/05/04) インストーラ: https://www.tightvnc.com/download/2.8.81/tightvnc-2.8.81- gpl-setup-64bit.msi ソースコード: https://www.tightvnc.com/download/2.8.81/tightvnc-2.8.81- src-gpl.zip TightVNCとは
対象 選定 入力 受取 入力 解析 後続 処理
オープンポート 名前付きパイプ 解析対象ソフトウェアの選定 プログラムに対する入力の入口 5営業日で脆弱性の 発見から悪用まで
オープンポート 名前付きパイプ 解析対象ソフトウェアの選定 プログラムに対する入力の入口 5営業日で脆弱性の 発見から悪用まで
5900/tcp recv(), recvfrom() WSARecv(), WSARecvFrom() send(), sendto() WSASend(), WSASendTo() tvnserver.exe
-service オープンポート: TCP/UDP通信の入口 解析対象ソフトウェアの選定
オープンポート 名前付きパイプ 解析対象ソフトウェアの選定 プログラムに対する入力の入口 5営業日で脆弱性の 発見から悪用まで
\\.\pipe\TightVNC_Service_Control tvnserver.exe -service tvnserver.exe –controlservice -slave ConnectNamedPipe(), ReadFile(), WriteFile() 名前付きパイプ:
プロセス間通信の入口 解析対象ソフトウェアの選定
ツール # オープンポート - Process Hacker https://processhacker.sourceforge.io/ # 名前付きパイプ -
Get-ProcessPipes.ps1 https://gist.github.com/Wra7h/62b42c8a2219ae94d865c1c2f7196e61 解析対象ソフトウェアの選定
0.0.0.0 5800/tcp: tvnserver.exe –service 0.0.0.0 5900/tcp: tvnserver.exe -service 解析対象ソフトウェアの選定
\\.\pipe\TVN_log_pipe_public_name: tvnserver.exe -service \\.\pipe\TightVNC_Service_Control: tvnserver.exe –service 解析対象ソフトウェアの選定
# tvnserver.exe -service - オープンポート 0.0.0.0 5800/tcp 0.0.0.0 5900/tcp -
名前付きパイプ \\.\pipe\TVN_log_pipe_public_name \\.\pipe\TightVNC_Service_Control 解析対象ソフトウェアの選定
# tvnserver.exe -service - オープンポート 0.0.0.0 5800/tcp 0.0.0.0 5900/tcp -
名前付きパイプ \\.\pipe\TVN_log_pipe_public_name \\.\pipe\TightVNC_Service_Control 解析対象ソフトウェアの選定
\\.\pipe\TightVNC_Service_Control 解析対象ソフトウェアの選定
\\.\pipe\TightVNC_Service_Control tvnserver-app/TvnServer.cpp 解析対象ソフトウェアの選定
\\.\pipe\TightVNC_Service_Control tvnserver-app/TvnServer.cpp 解析対象ソフトウェアの選定
対象 選定 入力 受取 入力 解析 後続 処理
ツール # 動的解析 - x64dbg https://x64dbg.com/ # 静的解析 - IDA
Pro https://hex-rays.com/ida-pro/ - Ghidra https://ghidra-sre.org/ # Windows APIの監視 - Frida https://frida.re/ 名前付きパイプに関する処理の解析
ReadFile関数の呼び出し元特定 Modules CPU 名前付きパイプに関する処理の解析
ReadFile関数の呼び出し元特定 サンプルコードで対象の名前付きパイプと紐づく呼び出しであることを確認 名前付きパイプに関する処理の解析
Fridaを用いたReadFile関数、WriteFile関数の監視 名前付きパイプに関する処理の解析
ReadFile関数の引数 名前付きパイプに関する処理の解析
ReadFile関数の呼び出し元特定 Execute till return + Step over (Step into) 名前付きパイプに関する処理の解析
ReadFile関数の呼び出し元特定 Modules 名前付きパイプに関する処理の解析
ReadFile関数の呼び出し元特定 Edit > Segments > Rebase program... 名前付きパイプに関する処理の解析
ReadFile関数の呼び出し元特定 Jump > Jump to address... 名前付きパイプに関する処理の解析
ReadFile関数の呼び出し元特定 Jump > Jump to address... 名前付きパイプに関する処理の解析
対象 選定 入力 受取 入力 解析 後続 処理
ReadFile関数を呼び出している関数の呼び出し元特定 名前付きパイプに関する処理の解析
ReadFile関数で受け取った入力値の扱い 名前付きパイプに関する処理の解析
ReadFile関数で受け取った入力値の扱い 名前付きパイプに関する処理の解析
ReadFile関数で受け取った入力値の扱い 名前付きパイプに関する処理の解析
対象 選定 入力 受取 入力 解析 後続 処理
tvnserver-app/ControlClient.cpp > ControlClient::execute() 名前付きパイプに関する処理の解析
tvnserver-app/ControlClient.cpp > ControlClient::execute() 名前付きパイプに関する処理の解析
tvnserver-app/ControlClient.cpp > ControlClient::execute() 名前付きパイプに関する処理の解析
server-config-lib/ServerConfig.cpp > ServerConfig::serialize() 名前付きパイプに関する処理の解析
None
PoCの実装 # 悪用条件 ü SMB(445/tcp)への通信が可能 ü いずれかのユーザとして認証が可能 Active Directory (or
Microsoft Entra ID) # 影響 暗号化されたパスワードの読み込み + 復号によってTightVNCに接続可能
PoCの実装
PoCの実装
PoCの実装
PoCの実装
PoCの実装
PoCの実装
None
TightVNC側の対策
TightVNC側の対策
None
CVEの発行 開発者と連絡が途絶えてしまって、CVEを発行してもらえなかった場合 (JPCERT様からご教授いただきました🙇) - Report/Request for Non-CNAs https://www.cve.org/ReportRequest/ReportRequestForNonCNAs
CVEの発行 - Submit a CVE Request https://cveform.mitre.org/
None
タイムライン 2024/04/20: 脆弱性報告 2024/04/26: 開発者側による脆弱性報告の確認 2024/05/28: TightVNC 2.8.84のリリース 2024/05/28: CVE発行の調整開始
2024/07/12: MITREにCVEの発行申請