macOS High Sierraでディスクユーティリティのヒントに平文のままパスワードが表示されてしまう不具合は、コードのコピー/ペーストが原因だった可能性があるようです。詳細は以下から。
macOS 10.13 High Sierraのディスクユーティリティで「パスワードのヒント」にパスワードが平文のまま保存され表示されてしまう不具合は簡単に再現でき、Appleが「macOS 10.13追加アップデート」でこの不具合をすぐに修正し、サポートドキュメントまで出したことで各所で話題になりましたが、この不具合の原因はコードのコピー&ペーストが原因だったようです。
Diff
元Microsoftのエンジニアで現在はPSPDFKitを開発しているDaniel Martínさんが追加アップデートで修正されたStorageKitと問題があったバージョンを比較してみたところ、この不具合は”kSKAPFSDiskPasswordOption”と”kSKAPFSDiskPasswordHintOption”が同じ”v50″に収納されてしまうことで、「パスワードのヒント」に「パスワード」が表示されてしまうという問題が発生してしまったようで、
Martínさんや他の開発者の方々は「Appleの内部テストやコードレビューに問題があるのではないか?」や、MavericksおよびiOS 7.0.6で修正されたSSL/TLS脆弱性(通称”Goto fail“)を引き合いに出してブラケットの有無をコメントしている人もいるので、興味のある方はMartínさんへのリプライをチェックしてみて下さい。
The APFS password hint bug in High Sierra was actually a copy/paste error filing keys in a dictionary. From StorageKit diffs: pic.twitter.com/pRZfeZE8MN
— Daniel Martín (@dmartincy) 2017年10月6日
And it’s pretty clear that internally, Apple doesn’t have a culture of unit testing. Such a shame. https://t.co/zJATVNch3n
— Ash Furrghost 🌑👻 (@ashfurrow) 2017年10月7日
I also notice that they still haven’t learned to add braces in if-statements. Goto fail, anyone? https://t.co/a3TgLiCiDV
— Philippe Casgrain (@philippec) 2017年10月7日
コメント
私が詳細設計書や環境設計でやらかしてレビュー時に上司に叱責受けるあれと同じレベル…
実装した機能は全部動作確認するという当たり前のことをやってれば防げたんだよなあ
ブラケットがないのは逆コンパイルしたからなのでは
この手の問題っていつもソースコードを解析しているけど、
このソースコードってどこから手に入るの?
コンパイルされているならバイナリしかないし、
インタープリタ的なデータがあるのかな?
Appleのオープンソースで入手できるのか、それとも逆アセンブルで解析しているのか・・・
Mac/iOSでリバースエンジニアを行っている方の大半は「Hopper」を利用しているようですが、
MartínさんはEmacsと幾つかのスクリプトを利用したそうです。
ttps://www.hopperapp.com
ttps://twitter.com/dmartincy/status/916746326335000576
Objective-Cはメッセージパッシング用にバイナリにも結構なメタ情報を持ってるので、逆コンパイラでそこそこ高精度にソースコードが生成できちゃうのよ。
リリース速度優先で動作テストしてねえんだろうな
他にも致命的不具合がありそうだ
最近こういうミス多いからなぁ。パスワードが平文で見られるなんて下手したら裁判沙汰だろ
多少のバグは許すが、こういう致命的なものは本当やめてほしい