SlideShare a Scribd company logo
RACE CONDITIONの話
Fukui Tech 7.5
2017/02/25 (Sat)
@hama7230
WHOAMI
• @hama7230
• 東京の大学生
• 元福井の高専生
• CTF歴 1年6ヶ月
• CTFチーム
「TokyoWesterns」のpwn要
員
何を話すか
• Race Conditionの解説
• CODEGATE 2017 Quals 「Hunting」の解説
RACE CONDITION
• 日本語にすると競合状態
• マルチタスク(もしくはマルチスレッド)な環境に
おいて、同一のリソースへほぼ同時にアクセスし
たときに、予定外の処理結果が生じる問題
https://www.ipa.go.jp/security/awareness/vendor/programmingv2/contents/c304.html
DIRTY COW
• CVE-2016-5195
• https://dirtycow.ninja/
• Race Conditionを使った脆弱性
• Linuxカーネルにおける権限昇格の脆弱性
• Read Onlyな権限である、本来なら編集できない
ファイルを編集できてしまう脆弱性
• Androidなどで攻撃が確認された
CTFにおけるRACE CONDITION
• CTFでもRace Conditionを取り扱った問題は存在す
る
• pwnジャンルとして出題される傾向にある
• 処理全体を追いかけて、どの部分でRace Condition
が起こせるか見極める必要があり、難易度が高い
PWN問題のパターン
• サーバ上で動作するバイナリを攻略し、フラグを
読むことが目的
• バイナリには脆弱性があり、必ず攻略可能となっ
ている
• ncで接続するリモートシェル奪取型と、sshで接続
するローカル権限昇格型の2種類に分かれる
• ローカル権限昇格型では、ログイン時の権限でフ
ラグを読むことができず、suidビットがついた脆
弱なバイナリを攻略していく
HUNTIG
• CODEGATE 2017 Qualsで出題
• sshでログインするローカル権限昇格型
• Race Conditionを起こし、本来なら起こりえない処
理を発生させてフラグを得る問題
• Tokyo Westernsも解けたが、かなり時間をかけて
しまった
初期調査 (1/2)
% file ./hunting
./hunting: setgid ELF 64-bit LSB executable, x86-64, version 1
(SYSV), dynamically linked (uses shared libs), for GNU/Linux
2.6.32,
BuildID[sha1]=c32e1cc2bfd1447bd571a21303dd40e79324e2bb,
stripped
-r-xr-sr-x 1 hama hama 15056 2月 10 16:04 hunting*
• 64bitのダイナミッックリンク
• setgidされている => 所有者の権限で実行される
初期調査 (2/2)
% checksec ./hunting
[*] '/home/hama/ctf/CodeGate2017/Hunting/hunting'
Arch: amd64-64-little
RELRO: Partial RELRO
Stack: Canary found
NX: NX enabled
PIE: No PIE
• セキュリティ機構の確認
• よくある標準的なバイナリ
RELRO
• RELRO: Partial RELRO
• RELocation Read-OnlyからRELRO
• ライブラリ関数の解決をいつ行い、解決されたア
ドレスを管理するテーブルが書き換え可能かどう
か
• Partialでは、書き換えが可能でありGOTの書き換
えで処理の制御を奪うことができる
CANARY
• スタック上に置かれるランダムな値
• stack-smashing protectionによって追加されるデータ
• 関数の処理が始まる前にスタック上に設置され、
関数の処理が終わるときに書き換わってないかど
うか確認する
• 書き換わっていた場合は、バッファオーバーフ
ローが発生したとしてプログラム自体を終了する
• huntingもcanaryが存在する
• canaryの値がリークできれば突破可能
動作確認
% ./hunting
1. How to play
2. Use skill
3. Change skill
4. Remove skill
5. Recieve suggestion
6. Exit
choice:
• 1~6まで選択できる。それ以外を入力するバイナ
リは終了する
HOW TO PLAY
• メッセージを出すだけの処理
• そのまま終了する
USE SKILL
========================================Boss' Attack
Boss is Attacking you!
select shield
1. iceshield
2. fireshield
3. windshield
choice:
========================================Skill Activation
You use attack
Boss‘s hp is 50 (初期値は100)
=======================================
2 (自分の入力)
Your HP is 250 (初期値は500)
• 防衛に失敗したパターン
USE SKILL
========================================Boss' Attack
Boss is Attacking you!
select shield
1. iceshield
2. fireshield
3. windshield
choice:
========================================Skill Activation
You use attack
Boss's hp is 50
=======================================
1 (自分の入力)
You succeed in defense
Your HP is 500
========================================
• 防衛に成功したパターン
CHANGE SKILL
select skill
1. attack
2. fireball
3. iceball
4. magicball
5. lightning
6. hellfire
7. icesword
8. magicsword
9. hollylight
choice:
• スキルが選択可能
• 5以上はレベルを上げないと選択できない
REMOVE SKILL
• スキルを初期状態のattackに戻す
RECIEVE SUGGESTION
• メッセージを受け取る処理
• バッファオーバーフローが発生する
• canaryがあるため検知されて処理が終了してしま
う
EXIT
• バイナリが終了する
動作解析
• Bossとバトルしているみたい
• Use Skillでスキルを使ってBossのHPを減らしてい
る
• Skillによって与えられるダメージは違う
• Bossからも攻撃される
• shieldの選択しだいではBossからの攻撃も防げる
• 何をすればいいのか?
動作解析
• フラグを出力する処理
はバイナリ中に存在し
ている
• この処理が呼ばれる条
件は?
動作解析
• Bossに4回勝てばフラグを表示する処理へと分岐する
動作解析
• ボスの攻撃を防ぐshieldの選択は必ず当てることが
できる
• time(NULL)を元にしたsrandを使用している
• 同様に、同じ時間にtime(NULL)すれば同じ乱数が
得られる
• 乱数を得るプログラムを書き、同時に実行させて
乱数を予測する
• この部分はRace Conditionとはあまり関係ないので
割愛します
動作解析
• skillは250回しか使用できない
• 250回目の使用後に強制終了
• (BossのHPがとんでもないことに…)
動作解析
• レベル4のBossのHP初期値は0x7fffffff_fffffffe
(9223372036854775806)
• 初期のattackでは50しかHPが減らない
• 他のskillでも多くて50万程度
• まっとうにやっていてはフラグは得られない
• なんとかしてHPを0以下にしたい
動作解析
• ここでRace Conditionを考える
• UseSkillの処理は、スレッドを新しく生成して実行される
• start_routineにはUseSkillの処理を行う関数のアドレスがあ
る
• 最初の6択とshieldの3択は同一のスレッドで実行される
• UseSkillだけが独立している
動作解析
• 選んだskillによっては、sleepするタイミングと秒
数が違う
• fireballでは、ダメージ計算後にsleep(1)
• iceballでは、ダメージ計算前にsleep(0)
• magicballでは、ダメージ計算前にsleep(0)
動作解析
• sleep(1)が呼ばれるとどうなるか?
• usedSkillの扱いに誤りがある
• sleep中のUseSkillの処理が終わる前に、再度UseSkillを選択
したりChangeSkillすることができる
• これはRace Conditionを起こせそう
動作解析
• スキルによってダメージ処理が違う
• 4以下と5以上
• 4以下では、32bitを拡張して64bitにして計算する
• 5以上では、64bitのまま計算する
動作解析
• 4以下は右側
• 5以上は左側の処理がされる
• 4以下では、cdqe命令を使い、raxレジスタの中身
を32bitから64bitへ拡張している
動作解析
• iceswordの攻撃値は0xffffffff
• 32bitでは-1
• 64bitでは4294967295
• cdqe命令で拡張されると0xffffffff_ffffffff (-1:64bit)
• iceswordを4以下のSkillの攻撃値にできればよさそ
う
方針
• 4以下でsleep(1)をするSkillで、UseSkillする
• sleepしている間に、ChangeSkillでiceswordにすり
替えてUseSkillする
• 4以下のUseSkillで攻撃値がiceswordの0xffffffffになり、
64bit拡張されて-1になって実行される
• 攻撃値がマイナス値になって、BossのHPを増やす
ことができる
EXPLOIT解説
• まずは、3回勝利しBossのレベル4まで上げる
• attackの攻撃値50だと82回攻撃すれば、レベル4になる
• 以下の工程を行うことでBossのHPを1上げることができる
• ChangeSkillでSkillをfireballへ変更
• fireballでUseSkill
• ChangeSkillでSkillをiceswordへ変更
• iceswordでUseSkill
• 整数値オーバーフローで、9223372036854775806
(0x7fffffff_fffffffe)から-
9223372036854775808(0x80000000_00000000)
EXPLOIT
• BossのHPをマイナスにすることができ、フラグを得るこ
とができた
• 成功率は低い(bufferingの影響だと思われる)
まとめ
• Race Conditionを起こし、本来なら起こりえない処
理を起こした
• マルチスレッド・マルチタスクな開発で、資源の
アクセス管理が杜撰だと有り得ない処理が起こり
うる

More Related Content

What's hot

パケットキャプチャの勘どころ Ssmjp 201501
パケットキャプチャの勘どころ Ssmjp 201501パケットキャプチャの勘どころ Ssmjp 201501
パケットキャプチャの勘どころ Ssmjp 201501
稔 小林
 
ctfで学ぼうリバースエンジニアリング
ctfで学ぼうリバースエンジニアリングctfで学ぼうリバースエンジニアリング
ctfで学ぼうリバースエンジニアリング
junk_coken
 
ネットワーク構築訓練 入門
ネットワーク構築訓練 入門ネットワーク構築訓練 入門
ネットワーク構築訓練 入門
株式会社 NTTテクノクロス
 
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudyネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
Yahoo!デベロッパーネットワーク
 
System.Drawing 周りの話
System.Drawing 周りの話System.Drawing 周りの話
System.Drawing 周りの話
Satoru Fujimori
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
Kentaro Matsui
 
コンピュータフォレンジックにちょっとだけ触れてみる
コンピュータフォレンジックにちょっとだけ触れてみるコンピュータフォレンジックにちょっとだけ触れてみる
コンピュータフォレンジックにちょっとだけ触れてみる
infinite_loop
 
バイナリ解析入門
バイナリ解析入門バイナリ解析入門
バイナリ解析入門
aksechack0001
 
Webアプリでパスワード保護はどこまでやればいいか
Webアプリでパスワード保護はどこまでやればいいかWebアプリでパスワード保護はどこまでやればいいか
Webアプリでパスワード保護はどこまでやればいいかHiroshi Tokumaru
 
CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)
Shota Shinogi
 
Rest ful api設計入門
Rest ful api設計入門Rest ful api設計入門
Rest ful api設計入門
Monstar Lab Inc.
 
RSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjpRSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjp
sonickun
 
Goでかんたんソースコードの静的解析
Goでかんたんソースコードの静的解析Goでかんたんソースコードの静的解析
Goでかんたんソースコードの静的解析
Takuya Ueda
 
TLS, HTTP/2演習
TLS, HTTP/2演習TLS, HTTP/2演習
TLS, HTTP/2演習
shigeki_ohtsu
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
Akihiko Horiuchi
 
非同期処理の基礎
非同期処理の基礎非同期処理の基礎
非同期処理の基礎
信之 岩永
 
How to run P4 BMv2
How to run P4 BMv2How to run P4 BMv2
How to run P4 BMv2
Kentaro Ebisawa
 
Use After Free 脆弱性攻撃を試す
Use After Free 脆弱性攻撃を試すUse After Free 脆弱性攻撃を試す
Use After Free 脆弱性攻撃を試す
monochrojazz
 
40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること
onozaty
 
Serf / Consul 入門 ~仕事を楽しくしよう~
Serf / Consul 入門 ~仕事を楽しくしよう~Serf / Consul 入門 ~仕事を楽しくしよう~
Serf / Consul 入門 ~仕事を楽しくしよう~
Masahito Zembutsu
 

What's hot (20)

パケットキャプチャの勘どころ Ssmjp 201501
パケットキャプチャの勘どころ Ssmjp 201501パケットキャプチャの勘どころ Ssmjp 201501
パケットキャプチャの勘どころ Ssmjp 201501
 
ctfで学ぼうリバースエンジニアリング
ctfで学ぼうリバースエンジニアリングctfで学ぼうリバースエンジニアリング
ctfで学ぼうリバースエンジニアリング
 
ネットワーク構築訓練 入門
ネットワーク構築訓練 入門ネットワーク構築訓練 入門
ネットワーク構築訓練 入門
 
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudyネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
ネットワークの自動化・監視の取り組みについて #netopscoding #npstudy
 
System.Drawing 周りの話
System.Drawing 周りの話System.Drawing 周りの話
System.Drawing 周りの話
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
 
コンピュータフォレンジックにちょっとだけ触れてみる
コンピュータフォレンジックにちょっとだけ触れてみるコンピュータフォレンジックにちょっとだけ触れてみる
コンピュータフォレンジックにちょっとだけ触れてみる
 
バイナリ解析入門
バイナリ解析入門バイナリ解析入門
バイナリ解析入門
 
Webアプリでパスワード保護はどこまでやればいいか
Webアプリでパスワード保護はどこまでやればいいかWebアプリでパスワード保護はどこまでやればいいか
Webアプリでパスワード保護はどこまでやればいいか
 
CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)CyberChefの使い方(HamaCTF2019 WriteUp編)
CyberChefの使い方(HamaCTF2019 WriteUp編)
 
Rest ful api設計入門
Rest ful api設計入門Rest ful api設計入門
Rest ful api設計入門
 
RSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjpRSA暗号運用でやってはいけない n のこと #ssmjp
RSA暗号運用でやってはいけない n のこと #ssmjp
 
Goでかんたんソースコードの静的解析
Goでかんたんソースコードの静的解析Goでかんたんソースコードの静的解析
Goでかんたんソースコードの静的解析
 
TLS, HTTP/2演習
TLS, HTTP/2演習TLS, HTTP/2演習
TLS, HTTP/2演習
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
 
非同期処理の基礎
非同期処理の基礎非同期処理の基礎
非同期処理の基礎
 
How to run P4 BMv2
How to run P4 BMv2How to run P4 BMv2
How to run P4 BMv2
 
Use After Free 脆弱性攻撃を試す
Use After Free 脆弱性攻撃を試すUse After Free 脆弱性攻撃を試す
Use After Free 脆弱性攻撃を試す
 
40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること
 
Serf / Consul 入門 ~仕事を楽しくしよう~
Serf / Consul 入門 ~仕事を楽しくしよう~Serf / Consul 入門 ~仕事を楽しくしよう~
Serf / Consul 入門 ~仕事を楽しくしよう~
 

Viewers also liked

CTFでアレコレ
CTFでアレコレCTFでアレコレ
CTFでアレコレ
hama7230
 
Race condition
Race conditionRace condition
情報危機管理コンテスト 二次予選&決勝の話
情報危機管理コンテスト 二次予選&決勝の話情報危機管理コンテスト 二次予選&決勝の話
情報危機管理コンテスト 二次予選&決勝の話
裕貴 西野
 
Processes and Thread OS_Tanenbaum_3e
Processes and Thread OS_Tanenbaum_3eProcesses and Thread OS_Tanenbaum_3e
Processes and Thread OS_Tanenbaum_3e
Le Gia Hoang
 
6. processes and threads
6. processes and threads6. processes and threads
6. processes and threads
Marian Marinov
 
Race conditions
Race conditionsRace conditions
Race conditions
Mohd Arif
 
Semaphore
SemaphoreSemaphore
Semaphore
naniix21_3
 
Semaphores OS Basics
Semaphores OS BasicsSemaphores OS Basics
Semaphores OS Basics
Shijin Raj P
 
Operating system critical section
Operating system   critical sectionOperating system   critical section
Operating system critical section
Harshana Madusanka Jayamaha
 
Producer consumer
Producer consumerProducer consumer
Producer consumer
Mohd Tousif
 
Inter process communication
Inter process communicationInter process communication
Inter process communication
RJ Mehul Gadhiya
 
Interprocess communication
Interprocess communicationInterprocess communication
Interprocess communication
Sushil Singh
 
Inter process communication
Inter process communicationInter process communication
Inter process communication
Mohd Tousif
 
OS Process Synchronization, semaphore and Monitors
OS Process Synchronization, semaphore and MonitorsOS Process Synchronization, semaphore and Monitors
OS Process Synchronization, semaphore and Monitors
sgpraju
 
Как создать эффективную презентацию?V 02
Как создать эффективную презентацию?V 02Как создать эффективную презентацию?V 02
Как создать эффективную презентацию?V 02Nadezhda Ivera
 
Process synchronization in Operating Systems
Process synchronization in Operating SystemsProcess synchronization in Operating Systems
Process synchronization in Operating Systems
Ritu Ranjan Shrivastwa
 
Ch7 OS
Ch7 OSCh7 OS
Ch7 OS
C.U
 
Op Sy 03 Ch 23
Op Sy 03 Ch 23Op Sy 03 Ch 23
Op Sy 03 Ch 23
Google
 
Inter Process Communication
Inter Process CommunicationInter Process Communication
Inter Process Communication
Anil Kumar Pugalia
 

Viewers also liked (19)

CTFでアレコレ
CTFでアレコレCTFでアレコレ
CTFでアレコレ
 
Race condition
Race conditionRace condition
Race condition
 
情報危機管理コンテスト 二次予選&決勝の話
情報危機管理コンテスト 二次予選&決勝の話情報危機管理コンテスト 二次予選&決勝の話
情報危機管理コンテスト 二次予選&決勝の話
 
Processes and Thread OS_Tanenbaum_3e
Processes and Thread OS_Tanenbaum_3eProcesses and Thread OS_Tanenbaum_3e
Processes and Thread OS_Tanenbaum_3e
 
6. processes and threads
6. processes and threads6. processes and threads
6. processes and threads
 
Race conditions
Race conditionsRace conditions
Race conditions
 
Semaphore
SemaphoreSemaphore
Semaphore
 
Semaphores OS Basics
Semaphores OS BasicsSemaphores OS Basics
Semaphores OS Basics
 
Operating system critical section
Operating system   critical sectionOperating system   critical section
Operating system critical section
 
Producer consumer
Producer consumerProducer consumer
Producer consumer
 
Inter process communication
Inter process communicationInter process communication
Inter process communication
 
Interprocess communication
Interprocess communicationInterprocess communication
Interprocess communication
 
Inter process communication
Inter process communicationInter process communication
Inter process communication
 
OS Process Synchronization, semaphore and Monitors
OS Process Synchronization, semaphore and MonitorsOS Process Synchronization, semaphore and Monitors
OS Process Synchronization, semaphore and Monitors
 
Как создать эффективную презентацию?V 02
Как создать эффективную презентацию?V 02Как создать эффективную презентацию?V 02
Как создать эффективную презентацию?V 02
 
Process synchronization in Operating Systems
Process synchronization in Operating SystemsProcess synchronization in Operating Systems
Process synchronization in Operating Systems
 
Ch7 OS
Ch7 OSCh7 OS
Ch7 OS
 
Op Sy 03 Ch 23
Op Sy 03 Ch 23Op Sy 03 Ch 23
Op Sy 03 Ch 23
 
Inter Process Communication
Inter Process CommunicationInter Process Communication
Inter Process Communication
 

Similar to Race condition

JavaLearning_1.pptx
JavaLearning_1.pptxJavaLearning_1.pptx
JavaLearning_1.pptx
RyuuGaku
 
Cocos2d-x Console @Cocos Talks #3
Cocos2d-x Console  @Cocos Talks #3Cocos2d-x Console  @Cocos Talks #3
Cocos2d-x Console @Cocos Talks #3
Akihiro Matsuura
 
Play framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレードPlay framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレード
Kazuhiro Hara
 
EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発
Kentaro Ohkouchi
 
LINE LIFF with Azure ハンズオン資料 - Azure サービス解説
LINE LIFF with Azure ハンズオン資料 - Azure サービス解説LINE LIFF with Azure ハンズオン資料 - Azure サービス解説
LINE LIFF with Azure ハンズオン資料 - Azure サービス解説
Kazumi IWANAGA
 
Openstack ceph 20171115 vtj
Openstack ceph 20171115 vtjOpenstack ceph 20171115 vtj
Openstack ceph 20171115 vtj
Takehiro Kudou
 
MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話
MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話
MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話
Takahiro Okumura
 

Similar to Race condition (7)

JavaLearning_1.pptx
JavaLearning_1.pptxJavaLearning_1.pptx
JavaLearning_1.pptx
 
Cocos2d-x Console @Cocos Talks #3
Cocos2d-x Console  @Cocos Talks #3Cocos2d-x Console  @Cocos Talks #3
Cocos2d-x Console @Cocos Talks #3
 
Play framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレードPlay framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレード
 
EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発EC-CUBE + PHPUnit で 実践テスト駆動開発
EC-CUBE + PHPUnit で 実践テスト駆動開発
 
LINE LIFF with Azure ハンズオン資料 - Azure サービス解説
LINE LIFF with Azure ハンズオン資料 - Azure サービス解説LINE LIFF with Azure ハンズオン資料 - Azure サービス解説
LINE LIFF with Azure ハンズオン資料 - Azure サービス解説
 
Openstack ceph 20171115 vtj
Openstack ceph 20171115 vtjOpenstack ceph 20171115 vtj
Openstack ceph 20171115 vtj
 
MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話
MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話
MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話
 

Race condition