macOS High Sierraで設定したパスワードがパスワードのヒントに平文のまま表示されてしまう不具合の原因をリバースエンジニアリングにより解説した記事が話題となっています。詳細は以下から。
昨日、元Microsoftのエンジニアで現在はPSPDFKitを開発しているDaniel Martínさん「macOS 10.13 High Sierraのディスクユーティリティでパスワードのヒントにパスワードが平文のまま保存され表示されてしまう不具合の原因は、コードのコピー&ペーストが原因ではないか?」というツイートをしていましたが、Martínさんがこの根拠をリバースエンジニアリングを用いて解説しています。
I've published the nitty-gritty details in a blog post, if you are interested: https://t.co/2UiYSXlCsh https://t.co/J02sb7HY8Y
— Daniel Martín (@dmartincy) 2017年10月8日
Reported by Matheus Mariano, a Brazilian software developer, a programming error was discovered in Apple’s most recent operating system, High Sierra, that exposed passwords of encrypted volumes as password hints. A serious bug that quickly made the headlines in technology websites everywhere.
Reverse Engineering macOS High Sierra Supplemental Update – Cocoa Engineering
StorageKit
MartínさんがAppleが公開した「macOS 10.13 High Sierra」と「追加アップデート」のディスクユーティリティの比較をEmacs(IDA)やDiaphoraを利用して行ったところ、新旧のディスクユーティリティのバイナリに違いはなく、ディスクユーティリティに利用されていたAppleのプライベートフレームワーク「StorageKit」にAPFSに対応するため加えられたコードがこの不具合を引き起こしたようで、
This is part of the code that runs when you add a new APFS volume from the Disk Utility interface (concretely, the controller responsible for managing the new volume sheet).
Reverse Engineering macOS High Sierra Supplemental Update – Cocoa Engineering
昨日Twitter上にも投稿していたように、そのコードは”kSKAPFSDiskPasswordOption”と”kSKAPFSDiskPasswordHintOption”という「パスワード」と「パスワードのヒント」の変数が違うものの同じ構造のためコピー&ペーストされた可能性が高く、これによりレジスタv50 (入力されたパスワード)を「パスワード」と「パスワードのヒント」に設定するという大きな間違いを導いてしまったようで、
NSMutableDictionary *optionsDictionary = [NSMutableDictionary alloc] init]; [...] optionsDictionary[kSKAPFSDiskPasswordOption] = password; optionsDictionary[kSKAPFSDiskPasswordHintOption] = password;
This is an example of a common category of bugs where code with a common structure is copied and pasted but the developer forgets to make every required modification and consequently there’s a fatal change in behavior.
Reverse Engineering macOS High Sierra Supplemental Update – Cocoa Engineering
Martínさんはこの様なバグは常に存在し、完全に潰すことは出来なくてもユニットテストやコードレビューによりバグを発見することが出来るとまとめているので、興味のある方はチェックしてみて下さい。
- Reverse Engineering macOS High Sierra Supplemental Update – Cocoa Engineering
コメント
macOSは最低でも2年おきのリリースにしてほしいわ
自分の不具合は棚に上げてAppleの粗探しか
MSは本当に根性が腐ってるな
探したっていうか、実際に粗が見えてた訳で。しかも”元”だし。
ないない
Appleに技術がないだけ!
言っている意味が本当にわからないw
Appleの中の人とかマジでこういう事言ってそうw