Upgrade to Pro — share decks privately, control downloads, hide ads and more …

UNIXよ2038年を越えてゆけ

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for Ran350 Ran350
August 12, 2024

 UNIXよ2038年を越えてゆけ

2038年問題検出ツールの紹介

Avatar for Ran350

Ran350

August 12, 2024
Tweet

More Decks by Ran350

Other Decks in Programming

Transcript

  1. 自己紹介 ◆ 経歴 Ran350 ◆ 備考 ran350jp ran350 • 立命館大学大学院

    情報理工学研究科 修士 2 年 • 上原哲太郎 研究室 • ISACA 大阪支部 • Webエンジニア3年目 ◆ 資格 • 情報処理安全確保支援士 • 応用情報技術者 試験 #大阪出身 #お笑いライブ鑑賞 #将棋 #麻雀 #ウイスキー
  2. 技術的負債と時刻表現 • サマータイム問題 • GPSロールオーバー問題 • うるう年やうるう秒の考慮不足 ...など 3 技術的負債とは、実装当時

    最適解と考えられていたものが時間経過ととも に評価されなくなること。 負債が膨れ上がると、やがてシステムの安定稼働を脅かすようになる。 • 2000年問題 • 昭和100年問題 • NTP 2036年問題 • 2038年問題 𝕏: @ran350jp
  3. 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
  4. 2038年問題パターン > 実装編 > ダウンキャスト 11 変数代入時のダウンキャスト return 時の 暗黙的ダウンキャスト

    関数の引数代入時 の 暗黙的ダウンキャスト 明示的なダウンキャスト typedef long long time_t; でも 64bit → 32bit型へキャストすると 𝕏: @ran350jp
  5. 2038年問題対応、time_t の 64bit化 だけでは不十分 2038年問題対応したつもりでも 実は抜け漏れがあったというシナリオ 12 見落とし 実は UNIX

    timeが 32bit 符号付き整数型に なる処理が存在していた 2038年問題 発生 整数オーバフローが発生 不具合につながる 2038年問題対応の実施 UNIX time 用変数を 32bit整数型→64bit整数 型に再定義 𝕏: @ran350jp
  6. 検出手法 20 データフロー解析 抽象構文木解析 型・字句情報を用いて検出対象を 発見する手法。検出対象の抽象構 文木のパターン を定義し、合致 するコードを 探索する。

    値の取りうる範囲から実際に整 数オーバーフローが起こりうる かを判定する。 C/C++ ソース コード 整数OF 可能性を 警告 検出対象 を探索 構文解析 𝕏: @ran350jp
  7. ISACA大阪支部 総会にて研究講演(本日) 発表 21 2023年2月 2024年4月 2024年6月 2024年7月 2024年6月 2024年9月

    情報処理学会 論文誌ジャーナル「組込みシステム工学特集」 サイバーセキュリティシンポジウム道後 2023にて、学生研究賞を受賞 IoTセキュリティセンターにてポスター発表 DICOMOシンポジウム2023にて、優秀プレゼンテーション賞を受賞 卒業論文 修士論文 2025年2月 採録内定 𝕏: @ran350jp