Insights」の第5弾です。迎え、エンジニア同士でざっくばらんにお話を伺っていくというものです。エンジニアは一体どんな人達なのか、その内面に迫っていきたいと思います。アプリケーションセキュリティチーム所属の石田暁久に、LINEのスパム対策やセキュリティのツール開発などについて聞いてきました。tokuhirom宜しくお願いします。入社は2011年の10月なので今年で6年目です。セキュリティ室のアプリケーションセキュリティチームに所属していて、主にスパム対応と各種Abusing対応をやっています。LINE上で行われる無意味なメッセージ送信や、スタンプを大量に送ったりアカウントを乗っ取る目的で他ユーザーにコンタクトをとるといった行為などを指します。構成としては大きく4つです。リスクアセスメントと呼ばれるリリース前の脆弱性診断をやるパート、企画段階からセキュリティチェックを行うコンサルティングパート、ゲームのセキュリティやAbusing対策をするパート、LINEアプリに関するスパムやAbusingなどの対応をするパート、となります。それぞれのパートに名前がついているのではなく、アプリケーションセキュリティチームの中で大まかに役割が分かれている感じです。運営や最新のセキュリティ技術を研究する業務もあります。tokuhiromどういうバックグラウンドを持っている方達がいらっしゃるんでしょうか。中途だとセキュリティ系の会社や部署で働いていたエンジニアの方が多いですね。新卒で入社された方などは元々セキュリティ関連の研究を学校でやっていたという方が多いですが、全く関係ないところから入ってきた人もいてわりとユニークなメンバーが多い印象です。東大の大学院を卒業して流体力学のシミュレーションを研究テーマにしていたんですが、セキュリティに興味があってLINEでアルバイトをしているうちにセキュリティ室の室長である林マンギさんに見込まれてそのまま入社された方もいます。JPというイベントでトークしていたりします。私の場合は新卒でセキュリティ専門会社に入ってそこに6年くらいいたんですけど、そこでサーバーやネットワークを対象とした脆弱性診断を主にやっていたんですが、時代の流れで少しずつWebアプリケーションの脆弱性診断の方が比重が大きくなっていました。私は当時Webアプリケーションを開発した経験がなく、Webアプリケーションの脆弱性診断をやるためにはまず開発の経験が必要という考えがあったんです。それで、セキュリティの専門会社だけどSIの部署もあったので「開発の経験も積ませてほしい」と言って開発をやらせてもらっていたらそっちの方が面白くなっちゃって。新卒で入社したその会社を辞めてからいくつかのSIerを経て、開発をしながら個人的にセキュリティの勉強も続けていたらある時セキュリティに詳しい開発エンジニアって貴重だよねって言われて、それならセキュリティをもう少し伸ばしていきたいなと思うようになりました。開発もできてセキュリティもできる人材を募集していたので応募して入社したという経緯です。する人しかいなかった状況からかなり変わってきたんでしょうか?以前はゲームの脆弱性診断しかやっていなかったイメージがありますけども。石田たしかに4年くらい前のタイミングではゲームのリリースが続いたのでゲームの診断を多くやっていましたけど、基本的には以前からほぼ全てのLINEサービスをセキュリティチームが診断しています。ゲームの診断業務が多かったのはその通りなので、業務内容の比率が変わったといった感じだと思います。組み合わせた手法で行っています。スパマーの行動や通報内容を分析して特徴を抽出し、ブロックします。tokuhirom一番気になるのは、トークルームって人同士のやりとりの場合は内容が見えないと思うのですが、その中でどうやってスパマーを判定しているんですか?編集部注:LINE上でやりとりされるデータは電気通信事業法における「通信の秘密」に該当し、エンドツーエンドの暗号化の適用等、LINE社員であってもユーザー同士のチャットメッセージのやり取りは見ることが出来ないような対策を施しています。通信の秘密などに関してはこちら、エンドツーエンド暗号化については以下のエントリをご覧ください。石田メッセージ内容が見えなくても対策法はいくつかあって、単純なフィルタリングルールだと例えば「短時間に大量のメッセージを送ったらブロックする」というものがあるんですけど、他にも「スパマーと受け取るユーザーとのソーシャルな関係」を見て、あまりにも遠い関係なのにいきなりメッセージを送ってきた場合はスパマーと判断される材料になることもあります。スパマーはほとんど自動化してスパムを送ってきているので、例えばデバイスにAndroidのエミュレーターを使っていたり、設定するディスプレイネームがわかりやすかったり、特徴があるんですよね。いった特徴を拾ってフィルタリングルールを適用しています。使ってディープラーニングで似た画像を引っ掛けてブロックしたり、機械学習で情報を蓄積していったりということをやっています。通報されたものに関しては可能ですね。これはセキュリティチームの愛甲さんがやっている部分なんですけど、スパマーが送ってる画像というのが決まってるというか、ほとんど同じようなものをいつも送るんですね。その画像をまず登録しておいて、それと似たようなものをディープラーニングを使って取って来る。似ている画像だったらスパマーと判定するというような形でやっています。通報されていないものに関してはメッセージと同様に内容が確認できないため、このような対策は行えません。セキュリティ室所属のエンジニア。SPAM対策やリリース前の製品(Webアプリ、ゲームなど)のセキュリティ診断が主な業務。tokuhirom機械学習ベースで通報内容をフィルタリングするのと、あとはソーシャルグラフなどでやっていると。石田はい、あとは通報件数、ブロック率、友だちの人数といった情報も見てますね。positive(誤検知)が出てしまうので、最終的には色々なルールと組み合わせてブロックするかどうかを判断しています。通報件数の約30%は日本のユーザが通報しています。その内約20%はスパム通報なんですが、残りの10%はスパムではない通報です。日本の場合はこのスパムではない通報の割合が特に多いです。tokuhiromそれは結構な割合ですね。「こいつムカつくから通報しちゃおう」みたいな感じなんですかね。石田おそらくそうだと思います。割りとカジュアルに通報する印象がありますね。日本のユーザーと台湾のユーザーを狙ったスパマーが昔から多いんですが、国によって傾向も違いますね。日本のユーザーを狙ったものは出会い系サイトへの誘導がほとんどで、台湾は偽ブランドへの誘導とか車のローン融資、学習教材を売りつけるような広告スパムの内容が多いです。台湾ですと、何も対応をしていないのに急に通報件数が下がることがあって現地の方に話を聞いてみたら「今日はドラゴンボートフェスティバルという祝日でお休みなんですよ」というような話があって。いえば過去の事例を見ると土日は通報が少ないなと思い当たって、台湾の場合は土日祝日はスパムも休むんだなということがわかりました。日本をターゲットにしたスパマーは土日もやっていたりして。「真面目か」みたいな(笑)私の経験則でいうと、スパムの件数は日本が下がると台湾が上がって、日本が上がると台湾が下がるんですよ。なんか相関関係があるみたいなんですよね。これは想像なんですけど、スパマーの台湾本店と日本支店みたいなのがあって共通のノルマをクリアしないといけないので台湾が下がっても日本は上がったりするのかなと。想像してみているんですが真相はわかりません。石田スパムとしてブロックできている件数は把握していますが配信されてしまっている件数を正確に出すのは難しいですね。代わりにグローバルの通報件数ベースでKPIを設定しています。tokuhiromスパムじゃない通報も多いですよね。2014年のKPIが「グローバルの通報件数を10%以下にする」となっていました。厳しい目標でしたけど、様々な対策を施した結果何とか10%以下にできた期間もありました。スパム対策を本格的に開始したのが2013年後半ですが、今はその当時のグローバル通報件数の15%以下を安定して維持しています。電話番号での友だち追加を大量に行ったらブロックするなど様々な対策をしています。昔は「短時間に大量に友だち追加して短時間にスパムを送ったらそのアカウント捨ててはい次」みたいなスパマーの行動が多かったんですけど、最近はランダムな時間に少人数を友だち追加したり、スパムメッセージを数回しか送信しなくなったのでフィルターには引っかかりにくくなってしまいました。1アカウントでのスパムメッセージの送信件数が少なくなった事は私たちの対応の成果といってもいいかなという気がしていますが、イタチごっこですね。すごい入れるとか、登録フローを面倒くさくするみたいなことをしていくしかないけどユーザビリティにも影響するから悩ましいですよね。石田はい、実は6月から私もタイムラインスパム対策に関わるようになりまして、今ちょうど現状把握をしているところです。私たちの方でトークルームはかなりブロックしてたのでスパマーが最近あまり力を入れてこないなと思ってたんですけど、どうやらタイムラインの方に活動範囲を変えていたのがわかりました。私たちが持っているトークルームでのスパム対策のナレッジを活用してタイムラインの方も対策をやりましょうという感じで進んでいます。設定することでその人にスパム広告を気づかせるというパターンが多いようです。tokuhiromそれはなかなか対応しづらいですね。現状の把握とスパマーの行動分析を最優先で行い、簡単にできる対策から始めています。tokuhiromトークルームの対策に比べると既にあるノウハウで何とかできそうな感じもしますけどね。既存のノウハウでの対策も検討していますが、まず実施した対策としてはトークルーム側でメッセージ送信をブロックしていたスパマーをタイムライン投稿できないように一括でブロックしました。したらだいぶ効果があったようでスパムの件数も減少しました。tokuhirom使いまわしてたんですね。入れないとダメとかそういう感じですよね。こちらとしてはオープンにやり取りして楽しんで欲しいのに、スパムが起因でダメってなっちゃうと厳しいですよね。石田そうなんですよね。入れてユーザビリティを下げるような対策は避けたいんですが...。必要、くらいは許容範囲のような気がしますけど。室長の構想ではスパムに限らずAbusing対策の専門パートみたいなのを作って、今まで貯めてきたノウハウを横展開していこうという狙いがあるみたいです。スパム対策をやってる部署がセキュリティ部門にいるということを社内でも知らない人が多そうですよね。セキュリティの部署って主にニコライさんみたいな人が外向けに結構出てますけど、スパム対策となるとスパマーに対策を知られることになるので、社外で発表するわけにもいかないですからね。社内の勉強会でそういったことを共有するといったことを積極的にやっていってもよいかもしれません。セキュリティ室所属のエンジニア。新しいサービス、機能のセキュリティ設計、コンサルティングとリリース前のリスク評価に関わっている。いうテーマで話をしました。スパムやAbusingに対してどのような対策をしているのか、サービス担当者が気をつけなければいけないことはどんなことかといったことを共有したんですが、なかなか評判がよかったので次回も何かやりたいなと思っています。今のタイムラインの状況と同じだと思うんですけど、LINEが沢山の方に使っていただけるようになった一方でトークルームの方でスパムが発生していて「なんとかしろ」と指令が出ていて、細かい経緯は覚えていないんですけど色々と発言していたら巻き込まれていって、いつのまにか専任になったという感じで今に至ります。当時は今のような分析環境もないし、調査したいけどデータがどこにあるかわからない、担当者が誰かもわからないで、本当に手探りの状態だった上にうちの会社ってスピード感がすごく求められるので苦労しましたね。関係しそうな人にいきなり「こんにちは、石田と言います。スパム対策をやっているんですけど、このデータはどこにありますか?」とかLINEで聞きまくりました。そんな事を繰り返しやっていたら自然と周りの人が色々助けてくれるようになって。スパマーの分析内容とか対策案についてLINE上で半日ぐらい議論して、この対策はイケそうだとなったら関係各部署と調整して2,3日後にはリリース。その後効果測定をして結果しだいでまた次の対策を考えるみたいな運用フローを作り上げました。tokuhirom結構短期間の話ですよね。いつもそんなスピードで進行できるとはかぎらないんですけどもだいたいそんな感じです。あとスピードを阻害する要因として「リソースがない」って言われることがあります。リソースが空くまで待ってられない時もあるので、そういう時はSIerでの経験を活かして可能な範囲で自分で開発しています。スパムの分析システムなどは自作していますね。tokuhiromSIでの経験が強みになってるんですね。どちらかといえばセキュリティメインでやってきた方の方が多いと思いますね。tokuhiromこの会社は結構、自分でガンガン他のチームの人と調整してやっていかないとなかなか成果が出せないような気がします。実は初めはそのやり方がうまくできなかったんですが、スパム対策をやり始めてから完全に吹っ切れました(笑)。吹っ切れてしまえば、あとは自分からどんどん話しかけて他のチームと調整しながらスピード感をもって進行できるようになったと思います。このスタイルに慣れてしまうと逆に「このやり方じゃないと遅すぎて無理」と感じるようになりました。常に改善していくので期間というと難しいのですが、フローの原型みたいなのは1-2ヶ月ぐらいで出来上がったと思います。今とほぼ同様のフローが出来上がるまでには1年ぐらいかかりました。可視化して分析して、その結果をフィルターに反映するっていうのをやっています。機能が使えるようになったので今それを試しているところです。Notify経由でLINEに通知する仕組みも作りました。使ってみてるっていう話はちょこちょこ聞きますね。みたいなチャンネルがあって話題が出てたりします。的な、異常値検知をやろうとしているんですけど、なかなかうまくいかないみたいです。自分も試している段階ですが「どうしてこの時に異常値として検知されたんだろう」とかあって、まだ色々と探っている段階ですね。使ってる人を募集してた時期がありましたね。PyConにスポンサーしようとしていて、誰か話をしてくれということを言っていて。話をしてもらうことで落ち着いたと思いますけど。使ってちょっとしたツールを作るっていうのは多いですね。他の言語を使ってる人はあんまりみたことがないです。Pythonも使うというだけで、それぞれ得意な言語を別に持っているといった印象ですけれど。ライブラリが充実してて便利」みたいな話があるじゃないですか。書かれている(サポートされている)ことが多いです。脆弱性の実証コード(PoC)もPython製のものをよく見ますね。特別というわけではないですが、セキュリティ系の技術者はPython使いが多いかもしれません。作ってるのあまり見たことなかったです。書いてあるやつとかもあったりします。