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
UNIXよ2038年を越えてゆけ
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Ran350
August 12, 2024
Programming
130k
6
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
UNIXよ2038年を越えてゆけ
2038年問題検出ツールの紹介
Ran350
August 12, 2024
More Decks by Ran350
See All by Ran350
2038年問題が思ったよりヤバい。検出ツールを作って脅威性評価してみた論文 | Kansai Open Forum 2024
ran350
8
5.8k
正規表現のReDoS脆弱性を判定するVSCode拡張機能
ran350
1
420
2038年問題の原因となりうるソースコードの自動検出手法の提案と実装 | 研究室 全体ゼミ発表
ran350
0
1.3k
Other Decks in Programming
See All in Programming
Dataformのリポジトリを立ち上げるときにまずやること / dataform-day0-2026
snhryt
0
160
AIとASP.NET Coreで雑Webアプリを作った話
mayuki
0
600
依存関係から依存物へ―Dependencyという言葉の歴史をひも解く
j_lee
0
120
Snowflake Summitでの新機能 CoCo / CoWork / snowflake-summit-2026-overall-what-new-coco
tatsuhiro
1
130
Inside Stream API
skrb
1
710
Go1.27で導入されるジェネリクスメソッドでできること
mackee
0
120
Contextとはなにか
chiroruxx
1
320
Hunting Vulnerabilities in Symfony with LLMs
vinceamstoutz
0
540
軽量Java基盤の設計 DIコンテナに頼らない、長期保守と1秒起動の実現 JJUG CCC 2026 Spring
macha64
0
510
スマートグラスで並列バイブコーディング
hyshu
0
140
Webフレームワークの ベンチマークについて
yusukebe
0
160
生成AI時代にこそ効くGo | Why Go Works in the Age of Generative AI
mom0tomo
8
3.2k
Featured
See All Featured
Six Lessons from altMBA
skipperchong
29
4.3k
Evolving SEO for Evolving Search Engines
ryanjones
0
220
Between Models and Reality
mayunak
4
340
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.2k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
590
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
340
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Optimizing for Happiness
mojombo
378
71k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
230
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
A designer walks into a library…
pauljervisheath
211
24k
Transcript
Ran350 ran350jp ran350 2024/8/12 セキュリティキャンプ2024 LT 2038年問題検出ツールの紹介 〜UNIXよ2038年を越えてゆけ〜
自己紹介 ◆ 経歴 Ran350 ◆ 備考 ran350jp ran350 • 立命館大学大学院
情報理工学研究科 修士 2 年 • 上原哲太郎 研究室 • ISACA 大阪支部 • Webエンジニア3年目 ◆ 資格 • 情報処理安全確保支援士 • 応用情報技術者 試験 #大阪出身 #お笑いライブ鑑賞 #将棋 #麻雀 #ウイスキー
技術的負債と時刻表現 • サマータイム問題 • GPSロールオーバー問題 • うるう年やうるう秒の考慮不足 ...など 3 技術的負債とは、実装当時
最適解と考えられていたものが時間経過ととも に評価されなくなること。 負債が膨れ上がると、やがてシステムの安定稼働を脅かすようになる。 • 2000年問題 • 昭和100年問題 • NTP 2036年問題 • 2038年問題 𝕏: @ran350jp
2038年問題とは 4 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からの経過秒 で 時刻を表現する形式 𝕏: @ran350jp
2038年問題は脅威になりうるか? 5
2038年問題パターン > 仕様編 𝕏: @ran350jp
2038年問題パターン > 実装編 typedef int time_t; 𝕏: @ran350jp ※ 多くの環境で
int 型は 32bit 符号付き整数型
2038年問題対策 typedef long long time_t; 𝕏: @ran350jp ※ long long型は
64bit 符号付き整数型
これで2038年問題対応は完璧! 9
ほんとうに? 10
2038年問題パターン > 実装編 > ダウンキャスト 11 変数代入時のダウンキャスト return 時の 暗黙的ダウンキャスト
関数の引数代入時 の 暗黙的ダウンキャスト 明示的なダウンキャスト typedef long long time_t; でも 64bit → 32bit型へキャストすると 𝕏: @ran350jp
2038年問題対応、time_t の 64bit化 だけでは不十分 2038年問題対応したつもりでも 実は抜け漏れがあったというシナリオ 12 見落とし 実は UNIX
timeが 32bit 符号付き整数型に なる処理が存在していた 2038年問題 発生 整数オーバフローが発生 不具合につながる 2038年問題対応の実施 UNIX time 用変数を 32bit整数型→64bit整数 型に再定義 𝕏: @ran350jp
UNIX time が 一貫して32bitを超えているかを 網羅的に調べないといけない 13
大変 14
プログラムにやらせたい 15
ということで 16
つくった! 17
y2k38-checker https://github.com/cysec-lab/y2k38-checker Clang コンパイル時にプラグインとして与える おなじみの Clang 警告として教えてくれる 𝕏: @ran350jp
y2k38-checker https://github.com/cysec-lab/y2k38-checker 𝕏: @ran350jp
検出手法 20 データフロー解析 抽象構文木解析 型・字句情報を用いて検出対象を 発見する手法。検出対象の抽象構 文木のパターン を定義し、合致 するコードを 探索する。
値の取りうる範囲から実際に整 数オーバーフローが起こりうる かを判定する。 C/C++ ソース コード 整数OF 可能性を 警告 検出対象 を探索 構文解析 𝕏: @ran350jp
ISACA大阪支部 総会にて研究講演(本日) 発表 21 2023年2月 2024年4月 2024年6月 2024年7月 2024年6月 2024年9月
情報処理学会 論文誌ジャーナル「組込みシステム工学特集」 サイバーセキュリティシンポジウム道後 2023にて、学生研究賞を受賞 IoTセキュリティセンターにてポスター発表 DICOMOシンポジウム2023にて、優秀プレゼンテーション賞を受賞 卒業論文 修士論文 2025年2月 採録内定 𝕏: @ran350jp
詳しくはリポジトリを参照 Star してもらえると喜びます 𝕏 ran350jp Thank you for Listening!