だいぶ期間が空いてしまいましたが、2024年8月22日から24日にかけて開催されたiOSDC 2024にて、ゼロから始めるiOSセキュリティ ~ OWASP Mobile Top10から学ぶ脆弱性対策というタイトルにて、スピーカーとして登壇しました。
本記事では、備忘録がてら、登壇資料および発表後の感想や反省を軽くまとめようかなと思います。
登壇内容
ゼロから始めるiOSセキュリティ ~ OWASP Mobile Top10から学ぶ脆弱性対策というタイトルで、以下の事柄について話しました。
- どのようにスマホアプリの脆弱性診断をしているか
- MASVS / MASTGについて
- OWASP Mobile Top 10について
- M9: Insecure Data Storageについて
- 機微情報の保存方法について
- 対策について
- M1: Improper Credential Usageについて
- 難読化について
- ハードコードされた情報の暗号化について
- デバッガーでの解析について
- まとめ
- 開発者が、脆弱性に対して、どのように向き合うべきかについて
なお、この発表では、「セキュリティに興味を持ってもらい、これをhookとして『リスクを正しく判定する』ことの重要性」を伝えることを主目的としました。
これは、20分の枠内ではネイティブアプリのセキュリティの一部しかお伝えできないためです。
また、個人的に開発側は『正しくリスク判定を行ったうえで』リスク許容/修正要否を決定できるべきであると考えています。(当然セキュリティエンジニアもその判断ができるべきですが、ビジネス上/開発上の要求や経緯を最も知っているのは開発者側であるため)
セキュリティエンジニアが、「脆弱性」を指摘したとしても、それに盲信的に従うことは非常にいびつな関係性であり、互いに健全な議論を行ったうえで最終的な決定を行うことが重要ですし、そうあってほしいと思っています。
CfP提出 & 準備について
現在はセキュリティエンジニアとして事業会社に勤務しているのですが、元々iOSの脱獄アプリ(Tweak)の開発を行っていました。
また、社内でモバイルアプリの脆弱性診断を行っていることもあり、その流れからモバイルアプリ開発チームより進言があり、iOSDC 2024へのスピーカー応募を行うことになりました。(もちろんiOSDCについては以前から知っていて、自分としても興味が強い領域でした)
正直にいうと、iOSDCにおけるセキュリティトークはあまり多くないと思われるため、目新しさもあるだろう、という気持ちもありました。
そのため、セキュリティに関するトークのCfPを1本のみ提出し、無事採択されることになりました。(こんなことを書いていますが、実際は後述の通り、新規性が薄かったな、という反省が強いです)
準備に際しては、20分という枠もあり、内容を絞りつつ、わかりやすく、かつ、聞いていて楽しい内容になるように心がけました。
なお、資料については、英語話 者の方もいるだろう、ということで英語で作成し、Speakingは日本語で行いました。(今思えば外大卒とは思えないほど微妙な英語かも)
特にモバイルアプリのセキュリティに関しては圧倒的に英語文献のほうが多いため、資料公開を見据えると、今後もおそらくカンファレンスでは英語で資料を作成することになるかなと思っています。
当日について
「果たしてみんなセキュリティに興味があるのだろうか...」という不安もありましたが、当日はルームが満員になり参加できない方が出たほど多くの方にお聞きいただき、とても嬉しかったです。
また、Ask the speakerにおいても、懇親会においても、多くの方とお話しでき、非常に楽しい時間を過ごすことができました。
モバイルアプリのセキュリティについて社外で話す機会は殆どなく、ここまで多くの方とモバイルアプリセキュリティについての話ができたのは、とても貴重な経験でした。
反省点
良い感想ばかり書いていますが、初登壇ということもあり、反省点も多々あります。
- トークの内容にそこまでの新規性がなかった
- 今までそんなにトークは多くなかろう、と思っていたが、実際は過去セキュリティトークをした方も多くおり、あまり新しい情報がなかった
- トークの内容があまり広くも濃くもなかった
- 20分という枠に収めるため、内容を絞りすぎた結果、あまり深く掘り下げられなかった
- 事前にスマホアプリの脆弱性診断って何するの?(iOS編)という記事を書いていてこともあり、少し内容に迷ってしまった
まとめると、セキュリティの触りのトークになってしまった、というのが一番の反省点です。(これは自分が参加したことのあるカンファレンスがワントピックを掘り下げる系だったことも大きいかもしれないですし、「自分の知っていることはみんな知っているだろう」という気持ちが強いところから来ているかもなあ、とも思いつつ)
当然、今回の発表は「iOSDCに参加するモバイルアプリエンジニア」を対象にしているのであって、「モバイルアプリの脆弱性診断の経験があるセキュリティエンジニア」を対象にしているわけではありません。
その意味において、深さは掘り下げにくいところがあるのですが、さすがに2つの脆弱性についてしか話せなかったのは、もう少し工夫ができたのではないか、という気持ちが強いです。
また、デバッガーの話はある意味「深く掘り下げることができた」話だったのかもしれませんが、正直あの部分に大きな時間を割くべきだったのか、という疑問もあります。
実際に「こうやってやれば暗号化も割れるよ!」みたいな話をしたほうがより多くの興味を引くかなという気持ちがありそ の部分の比率を大きくしたのですが、中身として実演は特に役立つ情報ではないので、もう少し他の話をしたほうがよかったかもしれません。
当然、TLP:CLEARくらいな内容に絞る必要があり、どこまでをスコープとすべきかは事前のCfP提出の段階で悩んでいたことでした。20分または40分の時間制限の中では、どこまでを話すべきかは難しい問題かなと思っています。
最後に
反省点はもちろんありますが、初めての登壇ということもあり、とても楽しい経験でした。今後また登壇の機会があれば、反省点を活かして、より良いトークを行いたいと思います。
(iOSのフレームワークのリバースエンジニアリングの話とかしても良いのだろうか...)