Diablo III の所持金増殖バグ、原因は整数値のオーバーフロー
2013年5月15日 10:20
hylom 曰く、
人気オンラインゲーム「Diablo III」で 5 月 7 日にゲーム内貨幣を増殖させることができるバグの存在が明らかになり、波紋を広げている (Game*Spark の記事より) 。
通常のオンラインゲームではこのようなバグが発見された場合、バグによって生成されたゲーム内貨幣を没収したり、サーバーデータのロールバックを行うことで対策を取ることが多いのだが、Diablo III ではゲーム内のアイテムをリアルマネーで売買できる「リアルマネーオークションハウス」というシステムが存在するためこのような対策を取りにくい点も騒動に拍車をかけている。
さて、5 月 10 日時点で問題は解決され、オークションハウスも現在では復旧しているのだが、この問題の原因は「整数値のオーバーフロー」にあったことも明らかになった (本家 /. 記事より) 。
問題のバグはリアルマネーオークションで一定額以上のゲーム貨幣 (ゴールド) を出品してキャンセルすると、出品した金額以上のゴールドが戻ってくるというもの。具体的には、2 の 31 乗 (2,147,483,648 ゴールド) 以上の金額を出品すると「出品金額を 2 の 31 乗で割った余り」が手持ちのゴールドから引かれるにもかかわらず、キャンセルすると出品金額全額が戻ってくるということらしい。2 の 31 乗という数字から、出品金額関連の処理途中のどこかで 32 ビット整数型の変数が使われており、オーバーフローが発生していると推測できるとのこと。
スラッシュドットのコメントを読む | ITセクション | バグ | ゲーム | IT