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
マーケットストリート 社会実験2024 in 秋葉原ジャンク通り 調査報告書
izumiyama_lab
1
140
全国町字単位空き家率推定データver1.0データ仕様
microbaseinc
0
210
COMETAを用いたデータ民主化運動の歴史
sazimai
0
240
Apache Gravitinoで実現する Icebergカタログ統合とアクセスの一元化
matsumooon
0
490
某助成金プロジェクト採択に向けて企業研究所のアウトリーチ専任者がやったこと
afroscript
0
180
JICA QUEST 共創×革新プログラム Impact Report(海ノ向こうコーヒー)
ontheslope
0
530
大規模言語モデルは誰を覚えているか / Who Do Large Language Models Memorize?
upura
0
160
重要だけど測れていないもの:高齢者ケアの見えない課題
theoriatec2024
0
500
OWASP AISVS - C7
shiell
0
620
Google Cloud Next 2026 DM Recap Agentic Data Cloudを添えて / Google Cloud Next 2026 DM Recap
nnaka2992
0
130
量子サマースクール2026「量子計算機アーキテクチャ分野の概観」
youten622
1
860
Visual SLAM未来予測 / Future Prediction in Visual SLAM
koide3
1
990
Featured
See All Featured
Embracing the Ebb and Flow
colly
88
5.2k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.4k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.2k
RailsConf 2023
tenderlove
30
1.5k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
AI: The stuff that nobody shows you
jnunemaker
PRO
9
970
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
Deep Space Network (abreviated)
tonyrice
0
290
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
510
Docker and Python
trallard
47
4.2k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
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