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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
460
2038年問題の原因となりうるソースコードの自動検出手法の提案と実装 | 研究室 全体ゼミ発表
ran350
0
1.4k
Other Decks in Programming
See All in Programming
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
5
5.2k
[ハンズオン]AIへの指示だけで「五目並べ」を作ってみよう
satoshi256kbyte
1
380
re:Inventに行く前に知っておきたい現地参加のノウハウ
nokomoro3
0
430
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
290
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Kaigi on Rails 2026, Tokyo, Japan
marcoroth
2
230
[Dev Group Paris Octobre 26] Agentforce, SIforce, Claudeforce, Slackbot… on s'y retrouve ?
nabondance
0
110
Rでドレミ/Do-Re-Mi_with_R
florets1
0
130
Unity6 URPによる海底をテーマにしたVJシステムの解説 | Unity Shader 完全に理解した 勉強会
gam0022
0
370
AI主導のプログラミング学習アプリを作ってみた
econanringo
0
180
KiroのSpecで「五目並べ」を作ってみる
satoshi256kbyte
1
380
When benchmarks go bad - what I learned from measuring performance wrong
hollycummins
0
220
ChromeでローカルLLM
ryu1013
0
140
Featured
See All Featured
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
3
3.9k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
530
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
600
Become a Pro
speakerdeck
PRO
31
6.3k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
630
Exploring anti-patterns in Rails
aemeredith
4
540
Skip the Path - Find Your Career Trail
mkilby
1
260
How STYLIGHT went responsive
nonsquared
100
6.3k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
46k
Done Done
chrislema
187
17k
Accessibility Awareness
sabderemane
1
250
Testing 201, or: Great Expectations
jmmastey
46
8.3k
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!