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
5.9k
正規表現のReDoS脆弱性を判定するVSCode拡張機能
ran350
1
440
2038年問題の原因となりうるソースコードの自動検出手法の提案と実装 | 研究室 全体ゼミ発表
ran350
0
1.3k
Other Decks in Programming
See All in Programming
GKE アップグレード前に知っておきたい Blue/Green と PDB の関係
stkk
0
160
AI に Inclusive UI を書かせよう — Design Rules Skill で Compose UI を作り直す
theoriatec2024
1
470
AI駆動開発にグラフDBを重ねてみた
satoshi256kbyte
2
770
GKE で Pod の見方を変えたら、スケールアウト時の挙動を真に捉えられた話
stkk
0
110
XHTMLが残したもの
yosuke_furukawa
PRO
2
640
Foundry Localでエージェント開発
seosoft
0
160
Laravelのアプリケーションをどこにデプロイするか #ツナギメオフライン.9
akase244
0
120
変化を抱擁するドキュメントの作り方 - ビジネスルール駆動開発がもたらす、コードとの新しい関係
ioki
2
130
一参加者から『中の人』へ 〜全通PHPerがブースに立って学んだ、カンファレンスを100倍楽しむコツ〜
wp_daisuke
0
140
Building an Out-of-Order CPU
latte72
1
750
初心者DevRelとして参加者だった私が、DevRel Talks!#2に登壇するまでにしてきたこと
sokohirai
0
360
Swift愛好会と私(ウホーイ) / Swift Fan Club and Uhooi
uhooi
0
150
Featured
See All Featured
Into the Great Unknown - MozCon
thekraken
41
2.7k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
Producing Creativity
orderedlist
PRO
348
41k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.1k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
230
What does AI have to do with Human Rights?
axbom
PRO
1
2.4k
The Language of Interfaces
destraynor
162
27k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2.1k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Fireside Chat
paigeccino
43
4k
Designing for humans not robots
tammielis
254
26k
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!