はじめに
こんにちは。morimolymolyです。 今回は、アカツキの就業型短期インターンに参加しましたので、そちらの振り返りをしたいと思います。
アカツキとは
皆様御存知、八月のシンデレラナインなどで有名なゲームを軸に事業を展開している会社です。 なんでセキュリティやっている人間がゲーム会社のインターンを受けたのかというと、就活を進めるにあたり、セキュリティエンジニアとしてのポジションがある会社を探していたところ、アカツキにめぐりあったからです(!?)。
インターンの流れ
今回は、フルリモートでの参加となりました。 MacBook Proの15インチモデルをお借りし、業務の一端を担うことになります。 いくつかタスクが与えられ、それをこなし最終報告会で報告すると無事インターンクリアとなります。
振られたタスク
今回のインターンで振られたタスクは以下の2つになります。
- Web脆弱性診断入門
- アンチチートライブラリ開発
前者は、僕がWebの脆弱性診断をした経験がない(CTFのめちゃくちゃ簡単な問題で有名な脆弱性に触れる程度)ことから少し不安でした。後者はリサーチに近いものである程度裁量をもって進めることができました。(インターンなのに)
Web脆弱性診断入門
OWASP(Webセキュリティの団体)がトレーニング用に開発したやられアプリ、RailsGoatに対して攻撃し、脆弱性を発見、レポートをまとめるというトレーニングを受けました。
診断に使ったツールはBurp Suite Community Editionとniktoだけで、全部手動で診断を行いました。
最終的に20個の脆弱性を見つけてレポートにまとめることができました。 最初はクリティカルな脆弱性がみつからず、頭を捻っていましたが、メンターの方のアドバイスにより、網羅性を考え全リクエストを確認することを意識し始めたら、発見できる脆弱性の数が増えていきました。脆弱性診断には網羅性が大事なのだということを再認識することができました。
また、脆弱性診断の要となるのがレポートで、開発者にどのような脆弱性がどれほどの影響があるのかということを簡潔にわかりやすく伝える必要がありましたが、僕にはその力が欠けていたため、何度も推敲して良さげな文章を生成しました。 結果、レポートのテンプレートに10件ほどマージされることになりました。 苦労の甲斐がありました。
アンチチートライブラリ開発
アカツキではチート対策のためのライブラリの開発を行っていました。 まだ、成熟したものではないため、ある程度インターン生でも裁量を持って機能の実装などが行うことができました。
今回、振られたタスクは以下の通り。
- フォーマッタ導入
- ディレクトリ構成やUnitTestの導入
- 文字列難読化処理の実装
フォーマッタの導入はclang-formatを導入するだけとお手軽。 ディレクトリ構成はLLVMなどを参考にしつつ、見通しの良いように変更しました。 UnitTestはそもそも導入されていなかったので、今回の担当箇所のみテストコードを書きました。フレームワークはGoogleTest、テストランナーはCTestにしました。
文字列難読化処理は、マルウェア解析での知見を活かして、独自の難読化処理を実装しました。IDA Proなどで実際に難読化を施したバイナリを解析して耐性を確かめたりしました。 解析していてこれ嫌だなっていう地味な嫌がらせが実装できたのではないかと思います。
総括
フルリモートでの就業型インターンでしたが、本当に充実していました。 朝はギリギリまで寝ていられるし、仕事が終わった瞬間に家なので、爆速で支度してジムに行くことだって可能なわけです。(気力があれば) コミュニケーションは基本的にSlackとZoomで行われ、毎日行われるメンターとの昼会、インターン生や社員さんとの交流のためのランチなど、なんなら出社するよりコミュニケーションが取れているのでは!?と思うほどでした。(コミュ障なので)
業務に関しては、脆弱性診断の一端を見ることができ、ゲーム会社独自のセキュリティへの取り組みというものもみることができました。
最後に
僕を受け入れてくれたチームの皆様、メンターの方、労務・人事の皆様、誠にありがとうございました。最後まで楽しくインターンできてよかったです。 以上で私のインターン報告とさせていただきます。
ありがとうございました。