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
2038年問題が思ったよりヤバい。検出ツールを作って脅威性評価してみた論文 | Kansa...
Search
Ran350
November 11, 2024
Research
5.9k
8
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
2038年問題が思ったよりヤバい。検出ツールを作って脅威性評価してみた論文 | Kansai Open Forum 2024
Ran350
November 11, 2024
More Decks by Ran350
See All by Ran350
UNIXよ2038年を越えてゆけ
ran350
6
130k
正規表現のReDoS脆弱性を判定するVSCode拡張機能
ran350
1
440
2038年問題の原因となりうるソースコードの自動検出手法の提案と実装 | 研究室 全体ゼミ発表
ran350
0
1.3k
Other Decks in Research
See All in Research
HAKARI-Bench - 実運用視点での情報検索モデル評価ベンチマーク
hotchpotch
1
720
Cross-Media Human-Information Interaction
signer
PRO
0
220
IA for theory
gpeyre
1
400
[CV勉強会@関東 CVPR2026] PSDesigner: Automated Graphic Design with a Human-Like Creative Workflow / kantocv 67th CVPR 2026
shunk031
0
290
大規模言語モデルは誰を覚えているか / Who Do Large Language Models Memorize?
upura
0
160
シングルチャネルマルチトーカー音声認識の進展
ryomasumura
0
250
多様なデータを許容し学習し続ける模倣学習 / Advanced Imitation Learning for VLA
prinlab
0
290
論文紹介: Understanding Epistemic Language with a Language-augmented Bayesian Theory of Mind
hisaokatsumi
0
150
進学校の生徒にはア行の苗字が多いのか
ozekinote
0
560
某助成金プロジェクト採択に向けて企業研究所のアウトリーチ専任者がやったこと
afroscript
0
180
マーケットストリート 社会実験2024 in 秋葉原ジャンク通り 調査報告書
izumiyama_lab
1
130
PGDM: Physically Guided Diffusion Model for L Downscaling
satai
3
460
Featured
See All Featured
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
890
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
Paper Plane
katiecoart
PRO
2
53k
Become a Pro
speakerdeck
PRO
31
6.2k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.9k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
770
Navigating Weather and Climate Data
rabernat
0
510
How STYLIGHT went responsive
nonsquared
100
6.3k
Transcript
2024/11/9 関西オープンフォーラム2024 立命館大学 情報理工学研究科 サイバーセキュリティ研究室 上原哲太郎、星名 藍乃介 2038年問題が思ったよりヤバい。 検出ツールを作って脅威性評価してみた論⽂
本⽇のお品書き 前半 10分:検出ツールを作って脅威性評価してみた論文(星名) - 2038年問題と対策方法 - 64bit 化対策の落とし穴 - 2038年問題の脅威性評価
論文 - 2038年問題 検出ツール OSS 後半5分:2038年問題のこれからについて議論(with 上原先生) 後半の時間では ご観覧の皆様からのご質問を受け付けます!
本⽇のお品書き 前半 10分:検出ツールを作って脅威性評価してみた論文(星名) - 2038年問題と対策方法 - 64bit 化対策の落とし穴 - 2038年問題の脅威性評価
論文 - 2038年問題 検出ツール OSS 後半5分:2038年問題のこれからについて議論(with 上原先生) 後半の時間では ご観覧の皆様からのご質問を受け付けます!
2038年問題とは 6 1. UNIX time (※) を 32bit 符号付き整数型 で扱う。
2. 2038/1/19 03:14:07 以降の時刻で 整数オーバーフロー する。 3. 整数オーバーフローした値がシステムの各所で参照され、不具合に繋がる。 2038/1/19に時間表現がオーバーフローし、システム障害を引き起こす可能性がある という問題。 2004年、IIJや日本IBM、KDDIなどのシステムで2038年問題に起因する不具合が発生した。 「西暦2038年問題」でトラブル相次ぐ | 日経クロステック(xTECH) https://xtech.nikkei.com/it/members/NC/ITARTICLE/20040325/1/ 発生原理 事例 ※ UNIX time とは 1970/1/1 00:00:00からの経過秒で 時刻を表現する形式
2038年問題を抱えるソフトウェアたち
ڴҖʹͳΓ͏Δ͔ʁ 8
脅威が⼤きいという仮説 9 影響範囲はシステムの深層にまで至る • アプリケーションレイヤだけでなく、DB、OS、ファイルシステム、 言語処理系などUNIX timeを使用するすべてのソフトウェアが対象 • 提供側が対応すれば完了とはならない →ソフトウェア
アップデートされない問題 →ソフトウェア アップデートできない問題(組込みシステムなど) 社会的認知度の低さ • 非技術者にとっての理解しづらさ • エンジニアだけでなく、経営者、行政の協力なしでは解決できない
2038年問題の対策 32bit UNIX time の最大値: 2038年 64bit UNIX time の最大値:西暦
約3000億年
2038年問題の対策 typedef int time_t; ※ 多くの環境で int 型は 32bit 符号付き整数型
typedef long long time_t; ※ long long型は 64bit 符号付き整数型 32bit 64bit データ型を 64bit にすればよい?例えばC言語の場合、
これで2038年問題対応は完璧︖ 12
2038年問題対応、型を64bit化するだけで済むか? 13 変数代入時のダウンキャスト return 時の 暗黙的ダウンキャスト 関数の引数代入時 の 暗黙的ダウンキャスト 明示的なダウンキャスト
typedef long long time_t; でも 64bit → 32bit型へキャストすると☠
2038年問題対応、型を64bit化するだけで済むか? 2038年問題対応したつもりでも 実は抜け漏れがあったというシナリオ 14 見落とし 実は UNIX timeが 32bit 符号付き整数型に
なる処理が存在していた 2038年問題 発生 整数オーバフローが発生 不具合につながる 2038年問題対応の実施 UNIX time 用変数を 32bit整数型→64bit整数型 に再定義
6/*9UJNF͕ Ұ؏ͯ͠CJUΛ͍͑ͯΔ͔Λ ཏతʹௐͳ͍ͱ͍͚ͳ͍ 15
େม 😵💫 16
ࣗಈԽͰ͖ͳ͍͔ʁ 17
ͭͬͨ͘ʂ 18
y2k38-checker https://github.com/cysec-lab/y2k38-checker Clang コンパイル時にプラグインとして与える おなじみの Clang 警告として教えてくれる C⾔語ソースコードから2038年問題可能性のあるコードを検出する
検出⼿法 20 データフロー解析 抽象構文木解析 型・字句情報を用いて検出対象を 発見する手法。検出対象の抽象構 文木のパターン を定義し、合致 するコードを 探索する。
値の取りうる範囲から実際に整 数オーバーフローが起こりうる かを判定する。 C/C++ ソース コード 整数OF 可能性を 警告 検出対象 を探索 構⽂解析 未着手
0 100 200 300 400 500 600 700 800 900
検出したプロジェクト数 未検出だったプロジェクト数 脅威性評価してみた論⽂ 21 874プロジェクト中 33.6% 3463 の該当表現 • GitHub 上のC言語リポジトリ • Star数上位 874 プロジェクト 評価結果 評価対象 論文「32bitを超えるtime_t型を持つ環境における2038年問題とその検出」 情報処理学会 論文誌 Vol.65 No.9 星名藍乃介、穐山空道、上原哲太郎(立命館大学)
評価 > 検出例 22 現在時刻のダウンキャスト 外部出⼒時のダウンキャスト プログラム外部からの時刻データの ダウンキャスト 代入時ダウンキャスト 引数代入時ダウンキャスト
明示的ダウンキャスト
͜ͷ݁ՌΛ;·͑ͯɺ զʑࠓޙͲ͏͍͖͔ͯ͘͠ʁ 23
本⽇のお品書き 前半 10分:検出ツールを作って脅威性評価してみた論文(星名) - 2038年問題と対策方法 - 64bit 化対策の落とし穴 - 2038年問題の脅威性評価
論文 - 2038年問題 検出ツール OSS 後半5分:2038年問題のこれからについて議論(with 上原先生) 後半の時間では ご観覧の皆様からのご質問を受け付けます!
2038年問題のこれからについて議論(with 上原先⽣) ご観覧の皆様からのご質問を受け付けます! 1. 特に影響が大きい、修正が大変そうなレイヤは? 2. 2038年問題ソフトウェア一覧表から、特に注目しているものは? 3. 2038年まであと14年、まだまだ先の話? 4.
2038年問題対応の難しいところは? 5. 64bit 化での対応ではなく、uint32化する対応はどうか? 25
2038年問題の難しさ • どこまで影響があるか結局よくわからないけど確実に影響があることだけはわかる • しかし「普通の⼈」にリスクの⼤きさが伝わらない • 対策が難しい • time_tを64bitにしてコンパイルしなおせるシステムはそれほど多くなさそう •
32bitで蓄積されたデータをそのまま使わざるを得ないシステムは多々ある • 頑張って64bitにしてもハマりどころは多い • そもそもtime_t以前のシステムがいっぱいある • 32bitのまま対処するしかないかもしれないが「統⼀的な」対処法がない • time_tをunsignedにすると先送りできるが「時間差」計算が問題になる • time値の差はdifftime()使わないといけないのだけど単に引き算してるコードは多々ある • その場合time_t a,b;においてa-bが負数だった場合の処理があればunsignedにした途端動かない • Epochをずらす⼿法は提案されているが業界的に統⼀された値はない • ラップラウンドさせる(負数になっていたらEpochを2106年2⽉7⽇6時28分16秒とみなす) • 意外と「ちゃんと研究」されてない 26