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
全銀トラブルとC言語とバッファオーバーフロー
Search
tsuda.a
December 27, 2023
Technology
150
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
全銀トラブルとC言語とバッファオーバーフロー
全銀トラブル話題にかこつけたC言語でバッファオーバーフローさせる話
tsuda.a
December 27, 2023
More Decks by tsuda.a
See All by tsuda.a
Git を GUI で使う話
tsudaahr
0
130
マジカルインクリメントと指数表記
tsudaahr
0
280
バックアップしていますか?
tsudaahr
0
160
RDB以前のファイル設計の話でもしようか(ぇ
tsudaahr
0
170
NPUわからん
tsudaahr
0
230
計算量オーダーの話
tsudaahr
1
480
クラウド初学者が抱える不安について
tsudaahr
0
470
キューとは何か
tsudaahr
0
300
等幅は死んだ(ぇ
tsudaahr
0
150
Other Decks in Technology
See All in Technology
プロダクトエンジニアに必要な「いい感じ」に作る能力 〜たくさん作れる時代に、どこまで作るかの決め方〜
jnishime_dresscode
2
1.3k
全員がプロダクトへ向き合う組織を持続成長させるために——組織づくりのフライホイールと4象限 / The Flywheel Model and Four Quadrants for Organizational Design
hiro_torii
3
820
設計の世代交代を乗り越える、14年続くAndroidアプリの開発戦略
sansantech
PRO
1
120
20260903 Tokyo Jazug Night #62 | Azure エンジニアよ、 その環境は本当にセキュアか?
olivia_0707
1
610
AIで実装は速くなった。なのにプロダクトは速くならない。職能の壁を越えて価値のフローを設計する
nwiizo
6
7k
AIエージェントを雇う前に決める5つのこと
knishioka
1
160
Hub & Spoke 環境のネットワークルーティングを分解してみる
tsuyataku
1
520
Backstageでつくるセルフサービスな社内開発基盤
kikunosuke75
1
280
Webとヘルスデータ
yukukotani
0
170
[RSJ26] AnoleVLA: Lightweight Vision-Language-Action Model with Deep State Space Models for Mobile Manipulation
keio_smilab
PRO
0
120
AIとペアプロを始める。人とのペアプロをやめる。ペアプロの良さを改めて知る。もっと好きになった。 / Rediscovering Pair Programming
honyanya
1
230
enechainの内製セルフサービスプラットフォーム
hiyosi
0
110
Featured
See All Featured
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
520
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
290
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
560
So, you think you're a good person
axbom
PRO
2
2.1k
First, design no harm
axbom
PRO
2
1.3k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
390
Navigating Team Friction
lara
192
16k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
Code Review Best Practice
trishagee
74
20k
Odyssey Design
rkendrick25
PRO
2
800
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
260
Transcript
全銀トラブルとC言語と バッファオーバーフロー LTDD 2023-12 #2 すごい広島553 with IT初心者の会 忘年会 @tsuda_ahr
全銀システム障害 https://xtech.nikkei.com/atcl/nxt/mag/nc/18/020600011/101800142/
原因は? • バッファオーバーフローらしい? https://it.impress.co.jp/articles/-/25677
いまどき、なぜ? • C言語らしい・・・ _| ̄|◦ https://it.impress.co.jp/articles/-/25677
アーキテクチャ(CPU のビット数)とデータ型とサイズ • C言語における long の値域。 https://marycore.jp/prog/c-lang/data-type-min-max-values/
なぜこんなことが起きるのか? • int は CPU のビット数, long は その倍、という取り決めがあるから? (すみません規格読んでません
>__<;) • しかし、どうもそういうことでもない模様。 • まとめると以下のような感じ。 #ポリシーがよくわからん データ型 16bit CPU 32bit CPU 64bit CPU int 2 byte (INT_16) 4 byte (INT_32) 4 byte (INT_32) long 4 byte (INT_32) 4 byte (INT_32) 8 byte (INT_64) long long - 8 byte (INT_64) 8 byte (INT_64)
Windows の場合 • Windows の場合は変わらない? https://marycore.jp/prog/c-lang/data-type-min-max-values/
Windows (Visual C++) のデータ型とサイズ • int も long も INT32。
種類名 バイト 値の範囲 int 4 -2,147,483,648 ~ 2,147,483,647 __int32 4 -2,147,483,648 ~ 2,147,483,647 long 4 -2,147,483,648 ~ 2,147,483,647 https://learn.microsoft.com/ja-jp/cpp/cpp/data-type-ranges?view=msvc-170
では、Window の場合は安心なのか? • そんなこともない。 • 例えば以下のようなコードを考える #include <iostream> struct TEST
{ int *A; int *B; }; int main() { int a = (int)sizeof(TEST); printf("%d¥n", a); } ポインタ変数 (他の言語では参照型といわれるものに近い)
アーキテクチャ(CPUのビット数)によってサイズが変わる 32bit 64bit 8 16
なので 32bit ではうまく動作したプログラムが 64bit では動かないことがある。 64bit 環境でコンパイル、実行すると、 スタック領域が壊れたっぽいわ、 というメッセージが出る。 転送先バッファのサイズは
8 固定 test の内容を buff に test のサイズ指定でコピー test のサイズは 32bit のとき 8、64 bit のとき 16。
こちらからは以上です(汗 チャンネル登録、高評価をよろしくお願いします。
余談/発表後にした話) ALSR 最近のコンパイラは ALSR(address space layout randomization/アドレス空間配置の ランダム化)という機能があるので、実行の都度、壊れる場所は変わるかも? (つまり、障害が再現したりしなかったりするとかありそう) https://ja.wikipedia.org/wiki/アドレス空間配置のランダム化