LINE株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。 LINEヤフー Tech Blog

Blog


【Team & Project】LINEのSecurity consultation and risk assessmentに関わる業務を担当しているチームを紹介します

LINEの開発組織のそれぞれの部門やプロジェクトについて、その役割や体制、技術スタック、今後の課題やロードマップなどを具体的に紹介していく「Team & Project」シリーズ。
今回は、LINE全体のサービスの企画段階におけるセキュリティ観点の検討、セキュリティコンサル、セキュリティリスクアセスメントの業務を担当しているApplication Securityチームを紹介します。

Application SecurityチームのLunde Robin、Oh Sehunに話を聞きました。

Application Securityチームのzoom会議の様子

―― まず、自己紹介をお願いします。

Robin: LINEでSecurity EngineerをしているRobinです。LINEに新卒で入社して約2年半になります。Application Securityチームでエンジニアリング業務、リスクアセスメントやインシデントの対応を行なっています。主にLINEのLINE Security Bug Bounty Programを担当していて、暇な時はBug BountyハンティングやCTF、ウォーゲームをしています。ワークアウトも大好きです。

Sehun: Application SecurityチームでSecurity Engineerをしています。Sehunです。私は韓国のセキュリティコンサルティング会社で2年間働き、LINEに転職しました。主な業務はRisk Assessmentで、Consulting、Bug Bounty、Development(e.g. Scanner)なども担当しています。プライベートではREVERSELABというチームでCTF参加と技術研究をしています。

――みなさんがLINEに入った理由、やりがいなどを教えてください。

Robin: LINEの面接を受けた時、セキュリティーチャレンジの課題がとても面白くて印象的でした。試験が終わってからうまく解けなかった課題を何日もかけて調べました(笑)また、面接を担当した社員の方がリラックスしていて、とても楽しく面接を受けることができました。課題や面接を通じて、スキルの高い人たちと一緒に仕事ができる素敵な職場だと感じたので、入社を決めました。

Sehun:私は最初、LINEのロゴがシンプルで綺麗だったのでLINEという会社に興味を持ちました。それからLINEのセキュリティチームは何をしているんだろう?と気になって調べてみた所、技術力が高い方が多く、セキュリティに関わる業務も自分のこれまでの経験を活かして活躍できると思ったので、志願しました。

Robin:課題を見つけることができ、その課題を見つけることで多くのユーザーを保護したことを知ることができるのは、モチベーションに繋がりますよね。私たちのチームは自由度が高いので、自分が参加したいプロジェクトを選び、重要だと思うタスクに責任を持つことができます。そのため、多くの新しい技術を自由にテストしたり、探求したりすることができます。また、多くの熟練したレポーターが新しいセキュリティ研究を共有しているので、LINE Security Bug Bounty Programで受け取ったレポートから多くのことを学べるのでとても楽しいです。

Sehun:社内のサービスをリリースしたりアップデートをする前に、私たちのチームは必ず事前にセキュリティチェックを行います。脆弱な部分を発見し、安全なサービスを提供できることは、とてもやりがいを感じます。また、本人がやりたいプロジェクトをチーム内で作って進めることもができます。現在、スキャナーと様々な診断ツールの開発を進めているのですが、作ったものを利用して脆弱な部分を発見した時に手応えを感じます。

左からLunde RobinとOh Sehun

――チームの構成・役割などについて教えてください。

Robin: Application Securityチームは、主に2つのパートで構成されています。

  • Software Engineers
    • セキュリティエンジニアの効率を向上させ、仕事を楽にするためのソフトウェアを開発しています。彼らの仕事の例としては、コードスキャンツールの開発やチケット管理システムの改善などがあります。
  • Security Engineers
    • Consulting:新しいサービスがセキュリティを考慮して設計されていることを確認することで、開発が始まる前に潜在的な問題を防ぐことができます。また、開発者が計画を立てる時間を確保できるように、潜在的な問題を検討できるように支援します。
    • Risk Assessments:ソースコードの読み込みとチェック、Applicationのテスト、問題が存在しないことを確認します。これは、ユーザに安全なサービスを提供するために、リリース前に実施します。
    • Penetration tests:リスクアセスメントと似ていますが、テストは自社のライブ環境で実施します。これは定期的に行うので、誤ってリリースされた可能性のある問題をキャッチすることができます。また、ネットワークレベルの問題もチェックし、実際の攻撃者の脅威をエミュレートしようとする点では、リスクアセスメントとは異なります。また、特定のサービスを運営するために法律で義務付けられているPCI DSSのような認証要件をクリアするために行うこともあります。
    • LINE Security Bug Bounty Program: Security Researcher からの報告を受けるプログラムです。レポートの内容を検証し、問題点を特定し、開発者と共有します。また、必要に応じて開発者が修正案を見つけるのを支援します。さらに、問題の影響を評価し、その問題が報奨に値するかどうかを判断し、報奨に値する場合には報告者にどのくらいの報奨を与えるべきかを決定します。

上記の作業に加えて、効率性を向上させ、日々の作業をより簡単にするために、新しいツールの作成や古いシステムの改善に関連したプロジェクトも進行中です。

――チームメンバーを紹介してください。

Robin:私たちのチームには、様々なバックグラウンドを持つ多国籍のメンバーがいます。そして私たちのメンバーの多くは、プライベートでの時間を使って趣味でCTFやウォーゲームのようなセキュリティチャレンジをしたり、Bug Bounty Programでバグを探したりしています。
チームのエンジニアの多くはブログを持っていたり、CVEで公にクレジットされていたりします。また様々なカンファレンスで発表したり、定期的に新しい知見の共有を行うことでコミュニティへ貢献をしています。
このように様々なバックグラウンドを持つSoftware EngineerやSecurity Engineerがサポートや支援を行っています。

――利用技術・開発環境について教えてください。

Robin: 私たちのチームでは、特別なプログラミング言語や開発スタックを使用しているわけではありません。しかし理解しておくとセキュリティチェックに関わる作業がスムーズに進む技術がいくつかあるのでご紹介します。

  • Java Spring Framework
    • LINEのApplicationの多くは、Java Springを利用しています。テストの段階でこのFrameworkを触ることがとても多いため、Frameworkの構造やベースとなっている言語(Java)は理解しておいた方が良いですね。
  • Kotlin, Swift
    • Mobile Applicationの開発には、KotlinやSwiftが多く使われています。これらの言語を理解しているとセキュリティチェックがスムーズに進みます。

セキュリティチェックの業務では、多くのプログラミング言語を包括的に理解していることが求められます。

私たちの業務はWebベースでのテストが中心のため、ツールとしてはBurp Suiteを多用しています。また、特定のテストを行うために、カスタムのPythonスクリプトも使用しています。しかしほとんどの場合、内部ツールはエンジニアが好む言語で開発されており、制限はありません。どのツールを使うかは、それぞれのエンジニア次第です。最も重要なのはテストの結果であって、どのツールを使って結果を得るかではありません。

――今のチーム課題と課題解決に向けた取り組みについて教えてください。

Sehun:技術は日々進化していきます。セキュリティエンジニアは常に新しい技術を習得、発見しなければいけません。私たちはこれらの新しい技術を活用して安全なサービスをサポートする必要があるからです。また、効率的に脆弱点を発見する方法も日々研究しています。

私たちの課題は大きく3つに分かれます。

1.新しい技術の共有または発見
  - どうやって新しい技術を習得するのか
  - どれだけ迅速に新しい情報を収集するのか
  - 本人が好む分野について研究をしているか

2.サービスの設計段階からより安全なサービスのための協力
  - デザイン的に問題が発生し得るか
  - 安全な3rd partyライブラリを使用するか

3.効率的に脆弱点を探し出す
  - 単純な脆弱点は何があるだろうか
  - より多くの脆弱点を見つけられる方法は何だろうか

これらの課題を解決するために、現在、自動化ツールの開発を進めています。

効率的な脆弱点を発見するために見つけやすい弱点に対して自動で探知できるスキャナや、RAを進める際に役立つツールを制作または計画しています。これを利用することでセキュリティエンジニアは複雑または困難な攻撃に集中できる環境をつくり、業務の効率がアップに繋がると考えられます。

先ほどお伝えしたように、技術は日々発展しています。セキュリティエンジニアも最新のセキュリティイシューやカンファレンスなどで様々な情報を習得することが重要です。情報収集方法は様々なので、全てお話しすることは難しいですが、CTFはそのうちの一つです。セキュリティのエンジニアとして働く上で、情報の習得は大きな課題となります。

具体的な課題に対する取り組み

- 新しい技術の共有または発見
  - TwitterやRedditなどSNSを通じた最新技術やissueを収集・共有
  - カンファレンス参加(Black Hat、Zer0conなど)
  - CTF参加(DEFCON、PlaidCTF)
  - 関心分野についての研究

- サービスの設計段階からより安全なサービスのための協力
  - 上と同じように最新技術やissueを収集

- 効率的に脆弱点を探し出す
  - 単純な作業の自動化
  - スキャナーや Registration Authority に役立つツールを作る

――今後のロードマップを教えてください。

Sehun:ユーザのセキュリティを向上させるためには、今後セキュリティチームは業務を通じて得た知識と情報を活用して効率的にサービスのセキュリティを確認する作業に集中しようとしています。
基本的な業務環境の改善を始め、サービスで脆弱性を効率的に発見できるようにするための独自の点検道具の開発、そして業務を通じて蓄積されたデータとマシンラーニング技術などを活用してより正確に脆弱性を発見できる方法論を探していく予定です。

―― 最後に、 Application Securityチームに興味を持ってくれた人にメッセージをお願いします。

Robin:私たちの仕事についてご相談されたい方、セキュリティ関連のお手伝いを希望される方、私たちのチームへの参加に興味がある方は、以下フォームから連絡してください。私たちができることは何でもお手伝いさせていただきますので、ご連絡をお待ちしております。

Sehun:LINEのセキュリティの向上やSecurity Engineerの業務にご興味がありましたら、いつでもご連絡ください。

Application Securityチームではメンバーを募集しています

アプリケーションセキュリティエンジニア / セキュリティセンター

Security Research Engineer /セキュリティセンター