Nick Security Blog

securityブログです

スキル習得方法 ver2020/11/22

書いた理由

Androidアプリの脆弱性探しを始めて、いくつか試した勉強法の1つ。
意外と使える方法だったため、忘れないようにと、頭の中をまとめるために書く。

目的や理由

「成功体験を得る」ことを目的としている。
成功体験を得ることで、体にスキルが馴染み始める。

馴染み始めれば、考える際の負担が減る。
負担が減れば、このスキルの練度を上げたり、他のスキルの成功体験への準備をすることができる。

手順

直近やったAndroidアプリの脆弱性探しを例として書く。

情報を集める

得たいスキルで成功体験を得るための情報を集める。
後述もするが、成功体験は客観的である必要がある。
そのため、自己満足な側面ではいけない。

例としては、以下のようになる。
・ Androidの脆弱性を報告したい。どのような脆弱性が報告対象となるか?
 →hackeroneのレポートを見る。
・ 脆弱性はわかったが、どうやるかがわからない。
 →Youtubeやブログなどで解説動画を探す。
・ なんとなくやり方は見つけたが、どうすれば認められる?
 →バグバウンティプログラムなど。

ここまで来たら次のステップに移る。

成功体験を得る

客観的な成功体験を得る。
客観的である理由は、自分自身に言い訳がしやすいから。
「客観的に成功しているとわかるから、このスキルはある程度身についたんだろう」という感覚でいったんごまかす。

数値化できるものはわかりやすくて良い。
「前よりハイスコアを取れた」など。
数値化できないものは、第三者に認められる必要と考える。

「成功体験」の基準は長年検証したり吟味したわけではないので、あくまで一例とする。
他の業界や細かい話は知らない。
おそらくだが、外部にアウトプットするのも成功体験に近いかもしれない。
ブログやSNSで反応がもられえたら成功、と位置づけてしまえば結構簡単に得られるかも。

例としては、バグバウンティでトリアージされるなど。

馴染ませる

体にスキルを馴染ませる。
時間がかかる段階。

ここから先はどうすればいいかはわかっていない。
基礎を掘り下げていくか、様々なパターンを検証していくか。

逆に言うと、このステップに来ないと基礎をやっても意味が無い気はしている。
机上で理論だけわかったスキルに対し、基礎まで詰めるのは頭がこんがらがる。

まとめ

とりあえず何かやって結果を認められる。

当時の気持ちや背景など

相変わらずどうやって勉強したらいいかわからず、2~3ヶ月くらい困っていた。
Todoリストを作ってもダメ、休憩をうまく取り入れてもダメ、熱中しようにも意図的には熱中できない。

どうすればいいかわからない状態が続き、Twitterを見れば「〇〇ができました!」みたいな報告が転がっている。
なんでこんなできないんだろう?と、ますます手が進まない状態になった。
(ちなみにTwitterは色々試した結果、見たくないものは片っ端からミュートにするのが一番良いということになった)

ある日、とりあえずでバグハントしていたら、動画で見たとおりな脆弱性があった。
参考にしたレポートを見ながら、報告した。
結果は重複だったし、リスクも低かったが、それが勉強した脆弱性だったことはわかった。

「こうやって見つけるのか!」と思った。
このときに、今までやってきた方法は間違ってなかったんだなとも思った。

ここまで当時の気持ちを思い出してみて、結局は「今やっていることは間違っていない」という安心感が欲しいだけな気はしている。
成功体験は、手っ取り早くそれを得られた。

「今やっていることは間違っていない」ようだったので、この方法をまとめた。
しばらくはこの方法で食っていけそうだ。