Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
UNIXよ2038年を越えてゆけ
Search
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
6k
正規表現のReDoS脆弱性を判定するVSCode拡張機能
ran350
1
450
2038年問題の原因となりうるソースコードの自動検出手法の提案と実装 | 研究室 全体ゼミ発表
ran350
0
1.3k
Other Decks in Programming
See All in Programming
Building an Out-of-Order CPU
latte72
1
790
[GoCon2026] When Goroutines Are Not Enough: Runtime Locality in High-Throughput Go
takehaya
6
2.3k
Snowflakeで業務アプリを作ろう。 Snowflakeのアプリ機能解説&実践ガイド
ayumu_yamaguchi
1
280
Java 27新機能 / Java 27 new features
kishida
2
150
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
4
2.6k
SREの越境 / SRE Collaboration
y0hgi
2
240
市販E-Readerを乗っ取れ 〜Embedded Swiftで電子ペーパーガジェットを制御する〜
trickart
0
190
Streamlitで実現する自然言語データアプリ開発
ayumu_yamaguchi
1
290
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
170
LoopHub - ローカルで動く GitHub で、AI と共同開発
jugyo
1
560
XP祭りでしか伝わらないフリップネタ #xpjug
murabayashi
0
150
{ Android | Kotlin } Gradle Plugin in 2026
ryunen344
1
320
Featured
See All Featured
WENDY [Excerpt]
tessaabrams
14
39k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
410
Design in an AI World
tapps
1
320
Being A Developer After 40
akosma
91
590k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
470
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
520
Building AI with AI
inesmontani
PRO
1
1.2k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
550
[SF Ruby Conf 2025] Rails X
palkan
3
1.4k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
The Limits of Empathy - UXLibs8
cassininazir
1
680
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!