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.8k
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
420
2038年問題の原因となりうるソースコードの自動検出手法の提案と実装 | 研究室 全体ゼミ発表
ran350
0
1.3k
Other Decks in Research
See All in Research
量子コンピュータの紹介
oqtopus
0
320
typst の使い方:言語学を研究する学生のために
gitomochang
0
450
機械学習で作った ポケモン対戦bot で 遊ぼう!
fufufukakaka
0
270
AIで最適化を解けるか?
mickey_kubo
0
110
討議:RACDA設立30周年記念都市交通フォーラム2026
trafficbrain
0
950
セマンティック通信勉強会 6Gに向けたデバイス間効率的な通信の技術紹介・課題・今後展望
satai
3
160
SOTAのさらに先へ:厳しい推論制約下での高性能モデルのPost-Training
analokmaus
0
1.2k
「AIとWhyを深堀る」をAIと深堀る
iflection
0
480
2026-01-30-MandSL-textbook-jp-cos-lod
yegusa
1
1.3k
COFFEE-Japan PROJECT Impact Report(Uminomukou Coffee)
ontheslope
0
180
Fukui Shibiten 39 - AI Art
butchi
0
120
非試合日の野球場を楽しむためのARホームランボールキャッチ体験システムの開発 / EC79-miyazaki
yumulab
0
220
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
400
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.8k
Building Adaptive Systems
keathley
44
3k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
200
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
390
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
410
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
200
A Soul's Torment
seathinner
6
2.9k
Writing Fast Ruby
sferik
630
63k
Making the Leap to Tech Lead
cromwellryan
135
9.9k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
570
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