セコムとトレンドマイクロの事件からみる人間の脆弱性の話
ちょっと話題はすぎちゃったけど、人間の脆弱性に関わる事件が立て続けに起こったので。今回の記事も雑に。
先週こんな事件が起きました。
要約すると(ほぼタイトル通りだが)、
・セキュリティ会社が顧客情報を第三者に売りそこから被害が生じた
・家のセキュリティを任せた相手に窃盗された
ってことらしい。
すごい(小並感)。セキュリティを取り扱う会社として、それも超大手であるプロの会社が、考え得る事件の中で一番やっちゃいけないことを立て続けにやらかしてる。
まず、トレンドマイクロの件から。セキュリティ会社が情報漏えいさせるってなんの冗談だよと。しかもそれが、システマチックに被害を受けるとかじゃなくて単に内部の人間が意図的に情報を漏えいさせたときたものだ。個人情報守るためにセキュリティソフト買ったらそこの会社に個人情報売られるって、ギャグか。現代落語みたいだな。
セコムの件も。家の貴重品を守るために警備を任せた相手に貴重品を盗まれる、これもギャグか。警備ってなんだっけ?でもまあ、こっちの事件は似たような事例が多い気がする。なんかのテレビでみた記憶があるけど、夜間警備中に大金を見つけてしまい魔が差して盗んでしまった、って事件に近いのかな。この事件は、窃盗した人が悪意を持って事前からそのつもりで窃盗したのか、それともそんなつもりは無かったものの魔が差して盗みを働いてしまったのか、それが気になる。前者と後者で話は少し変わってくるからね。
いずれの事件においても、セキュリティを提供する会社としては信頼がガクって落ちたんじゃないかな。会社としての目的とやらかした事件の内容があまりにも噛み合いすぎてるし。
数年前のベネッセの情報漏洩の件とかは、ベネッセ自体がセキュリティ会社じゃなかったからまぁ致命的じゃなかったと思う。それでもダメな事には変わりないけど。
さて、ここで本題。
ここに挙げた事件は、ベネッセの件含めて全部人間の脆弱性に起因するわけで。ハッカーからテクニカルな攻撃を受けたわけでもなく、「USBメモリから個人情報を持ち出せちゃった」みたいな。なぜこうも、しょうもない経緯で情報が漏洩してしまうのだろうか?
それについて語る前に、ソーシャルエンジニアリング(SE)に関する研究を紹介しようと思う。
時はさかのぼり1995年。USENIXの論文"Information Security Technology: Don’t Rely on It"では、この時代から流行していた人間心理をついたハッキングについてまとめられている。
https://dl.acm.org/citation.cfm?id=1267591.1267592
タイトルから分かる通り、情報セキュリティ技術は完全に信頼してはいけないことを述べた論文である。
引用(和訳):
攻撃者は、会社の情報を得るためにゴミをあさったり、警備員になったり、会社に雇用すらされようとする。
また、2006年のEDPACSの論文"Social Engineering: Concepts and Solutions"でも、
同じような分析が述べられている。
https://www.tandfonline.com/doi/abs/10.1201/1079.07366981/45802.33.8.20060201/91956.1
引用(和訳):
ソーシャルエンジニアリング攻撃のうち30%が完全外部から、70%が内部からの犯行である
この2つから言えることは、社内の人間こそ一番情報を漏洩し得るということである。しかも、冒頭に挙げた2つの事件に関わらず、20年以上前からそういう傾向があるのである。
しかもタチの悪い事が、標的の会社の機密情報を不正に得るために、その会社に雇用される手段も取ることがあるという事で、もとから悪意をもって働いていることになる。
さてここで話を戻すが、先ほど「しょうもない経緯で情報が漏洩してしまう」と書いた。しかしそれは果たして本当に「しょうもない」と言えるのか。寧ろ、情報を取得する手段としては一番合理的な手法なのではないか。
外部からシステマチックなハッキングをするとなると、少なからずガチガチに固められたセキュリティ網を突破する必要がある。しかし内部から、それも機密情報を取り扱う立ち位置に就けたのであれば、その情報を漏洩させたり不正に使用することははるかに簡単だろう。
つまり、この事件に対する見方を変えるべきなのである。
「USBメモリで情報漏洩とかありえないwwww」
「内部の人間が犯行するとか教育ちゃんとしとけよ」
こういった意見は少し違うんじゃないかなって思う。(まぁモチロンUSBへの書き出しを禁止しとけよって話ではあるんだけど、そこは本質的な話じゃないので渇愛。権限さえあればどっちにしろデータベースから引っ張ってこれるからね。)
むしろ
「セキュリティの一番簡単な突破方法ってやっぱ内部犯行なんだよね」
「どんな人でも悪意を持ってるかどうかって分からないからなぁ…」
みたいな、SEがあまりにも簡単に情報を不正入手できる手段なんだって、認知させなきゃいけないと思う。
一般的にSEの対策として、情報セキュリティに関する社内教育は有効であると言われているが、もとから悪意をもって入社した場合にそれはまるで通じない。
ではどうすればいいのか。
そこで提案したいのが性悪説である。
簡単な話で、周りの人間が全員悪意をもって行動していると仮定しつつシステムを構築する。例えばさっきも書いたけどUSBの書き出しは一括で禁止するとか、何かの行動をするとしても絶対にもう一人監視役をつけるとか、すべての行動をトラッキングするとか。
まあでも現実的にそんな社会は嫌だし、何より面倒くさい。世間が一般的に性善説で成り立っているのは、この「面倒くささ」が一番の要因なんじゃないかなって思ってる。
性悪説でシステムを構築する。それが嫌なのであれば、SEの被害は覚悟しておけ
なんだか話がまとまらなくなっちゃったけど、この主張がこの記事で言いたいことかな。とにかくSE被害がはるか昔からあるのに、世間ではそこまで問題視されていないのは、早急に変えていくべきだと思う。
そして次同じような事件が起こったときには、「しょうもない」の一言では片づけずに、人間の悪意について考えてほしい。
情報弱者向けビジネスは正義なのか?思うところを雑に書いてみる【二段階認証】
久々のブログ更新。とあるニュース記事を見ていろいろと思う事があったので雑に。
まずはこちらをご覧いただきたい。
ひとつの認証フォームを使うだけだと脆弱性があるから、スマホの電話番号とかを使って二段階で認証させようぜってのが二段階認証。このニュース記事では、そんな二段階認証を偽ったサイトでハッキングを行う手口が確認できる。
要するに、今までは
- 個人情報 → 偽サイト
としてハッキングしていたものが
- 個人情報 → 偽サイト → 本サイト →(認証) →偽サイト
となっている。(厳密にはもっと高度であるが今回は省略)
なんだかしょうもないいたちごっこであるが、言われてみれば対策が難しく、攻撃としては優秀である。特に二段階認証を行う旨のメッセージが正規サイトから送られてくるわけだから、利用者としても信頼してしまうだろう。
この攻撃は誰かの端末をハッキングするわけでもなく、利用者自身に個人情報を記入させる。ぶっちゃけセキュリティソフトでは対策することが困難である。(SSL証明書とかURLでフィルタリングを行う機能もすでに古い)
こういったシステマチックでなく、ユーザの心理を利用した悪意ある攻撃のことをソーシャルエンジニアリング(SE: Social Engineering)と言うが、果たしてこの攻撃を対策することは可能なのか?
僕はSEの研究をしているが、最近これに関して根本的なところから思うところがあったために本ブログ記事を書いた(メモ代わりである)。
まず、SEの被害に遭う人が、自分が被害に遭ったことを認識しない可能性があるということである。世間一般的に、ハッキングは「個人情報流出」といった形で世間に知らされる。しかし個人情報が盗まれたがそれが誰にも知られない場合。個人情報は確かに流出しているのだが、それが本人に気づかれていなければ、被害に遭っているとは言えないだろう(観測されない事象を証明することはできない。悪魔の証明である)。
むしろ、攻撃者が個人情報を不正に取得したうえで、利用者から感謝されるケースもあるのである。
よくあるネットビジネス(情報商材とか)の話でよくあるのが、利用者は傍から見れば明らかに詐欺的な金額で情報を売られているものの、その情報に価値を見出しむしろ売り手に感謝をするらしいのである。実際には対価に見合わない額を払っているものの、情報を取得でき、サポートも受けられるために売り手を訴えることが基本無いのだという。
実はそんな話は身の回りに溢れていて、例えば携帯会社なんかがいい例だ。メールを使えるようにするのに10000円取ったり(Gmailアドレスを取得しスマホから参照できるようにするだけ)、Twitterを利用するために5000円、なんてこともザラである。
ネットにちょっとでも詳しい人から見れば、そんなのぼったくりだというのは一目でわかる。そういうTwitterの投稿もしょっちゅうバズるし話題になる。だが、何も分からないし調べられない人は存在するし、そういうサービスを必要としている人も確かに存在する。
ここでSEの話に戻るが、上記の話を応用させるととんでもなく楽に情報弱者を騙し、ビジネスを成立させることができるのではないか?例えば正規のサービスをラップする形で偽サイトを作成し、その偽サイト上で正規の処理を行えるようにする。そこにちょっと便利な機能も付けちゃったりして。すると、その偽サイトを利用する人は正常に処理が行えちゃうから、全然偽サイトだなんて思わない。むしろ「いいサービスだな」なんて思わせちゃったりできる。でもその一方で攻撃者(偽サイト作成者)は個人情報・機密情報が取得できる。
さてここでひとつの疑問が生じる。
- 攻撃者と被害者(本人は被害者だと気づいていない)はWin-Winの関係にある
攻撃者は欲しい個人情報を取得でき、被害者は便利なサービスを利用できる。
攻撃者が被害者に「あなたの個人情報は盗まれています」なんてことを告げなければ、攻撃されていることなんか気づきようがないし、なんなら「これはいいサービスだ」なんていってどんどん拡散されることもあるだろう。
(個人情報が盗まれたことを脅し文句にして直接金銭の振り込みを要求するような攻撃もモチロン存在する)
話はより複雑である。
悪事を働かせるために正義を行う悪者は正義なのか?悪なのか?
他者を欺いても他者がそれに気づかなければそれは正義になるのか?
逆に、見かけ上の正義を脅かす存在はそれが最終的に正義であっても悪になるのではないか?
例えば。
youtubeから無料で動画をダウンロードできるようなサイトはいくつも存在する。しかし、そのサイトの真の目的は利用者を欺き、金銭的利益をあげることにある(単に広告収入目的の場合もあるが)。それでも利用者はそのサービスをありがたく思う。そのサービスが無くなった時には不満をあげたりもする。
善と悪が逆転している。
何が正義で何が悪かはよくわからない
(※ちびロボのギッチョマンより引用)
話がだいぶそれてしまったが、冒頭に挙げた二段階認証のフェイクサイトの例から、以下のことが言えるだろう。
- もはやネットでは完全に信頼を担保できなくなってしまった
- しかし見かけ上の信頼さえあれば、多くのユーザは騙せる
もとから信頼なぞ微塵もなかったという意見はごもっともである。ハッキングがゼロになった瞬間など一度もないのだから。
二つ目はこれからの社会を生きていくうえで大切な考え方になりそうである。
「人を騙した方がお金は稼げるし、自分の地位も上がっていく。そのような社会で、何を選択するのか?」
少なくとも僕自身はこのような社会に大きな不満を持っている。幸い、直近のSNSの動向なんかを見ていると僕が望む方向に進みつつある気はしている。しかしまだまだだとも思う。
ブロックチェーンなんていう究極的な信頼システムができてもなお、取引所という存在ができてしまった。そしてそれが多くのユーザから求められてしまった。
(無論サービス業を否定するつもりは無いが、何も考えずに利用するユーザのことは批判したい)
本質的な「信頼」と、見せかけ上の「信頼」
いまは見せかけ上の「信頼」の比重がほぼ100%だと考えている。
その比重を少しでも本質的な方へと傾かせたい。
そして、悪意が一切機能しなくなる世界へと変えていきたい。
これが、SEを無くすための対策手法だと考えている。
もしこの記事をみている人がいるのであれば、思考することの大切さは意識してみてほしい(実際にSEは思考しなくなったときに一番被害に遭いやすいというデータが出ている)。
余談だけど、究極的に思考しなくなった時に出る症状が統合失調症だよね。僕も2年前くらいまではそんな状態だったから、こういうテーマに敏感になってるのかもな。
【Rails】ActionController::InvalidAuthenticityTokenの解決方法(CSRFを無効にしても例外が出るとき)
自分が3時間くらい悩まされてようやく解決できたので、簡単に共有します。
症状:
ActionController::InvalidAuthenticityTokenが出てくるんだけど、ググってみてもCSRFを無効にしたら解決するとか、form_tagを使うとかしか情報が出てこない…無効にしても例外出るし、なんかWebリロードしてpostするとなぜか例外でなくなるし、なんでや…
原因・戦犯:
>>>>turbolinks<<<<
こいつでした。
turbolinksってなんぞや
Webの高速化のために、いちいちページを読み込まずにヘッダー情報は省略して読み込もうぜっていうRailsのGemみたいです。(超簡略化解説)
Rails 4以降に標準搭載になったみたい。
こいつが機能したままだと、
- jQueryのreadyイベンドが実行されない
%(function(){})内の処理が実行されません!ページを更新すると実行されます。
- metaタグが更新されない
これが、今回CSRFを無効にしpostをしてもエラーに引っかかってしまった原因みたいです。metaタグの中にCSRFトークンがあるってことは、要するにturbolinksが機能するとこのトークンまで更新されなくなっちゃうっていうわけですね。
てか、そもそもCSRFを無効にしているのに引っかかる意味が分からない。なぜだ(情報求む)
また、このturbolinksが機能するときはGETメソッドでページ遷移したときのみなので、ページ更新したりするとエラーが消えたってわけですね。なんてややこしい…w
対策:
turbolinksを消しましょう。ここからの内容はほぼこの記事と同じです。
Gemfileに記述されている
gem 'turbolinks', '~> {version}'
を消し、bundle update。app/assets/javascripts/application.jsに記述されている
//= require turbolinks
を消す。これでOK!
余談:
この類の話は、InvalidAuthenticityToken関連で調べると全然出てこなかったんだけど、jQueryが機能しない件で調べたら一瞬で見つかりましたw例外出るのと同じタイミングでjQueryが実行されない問題も出てて、同じ原因なんだろうな~ってなんとなく察してたからたどり着けました。
同じ現象に悩まされる人も多そうだなぁと思ったので、記事にしてみた次第。InvalidAuthenticityTokenに悩む人が減ればいいね。
参考記事:
こちらの記事を見つけて解決できました。ありがとうございました!!
進路決定! 雑に殴り書き
久々のブログ更新~
長々しくなるのもアレなんで簡潔に現状報告します!
殴り書きなんでそうとう雑な文章だけど、それでもよければ読んでくれるとうれしいです!
◆進路◆
前回の記事で、将来の道をそろそろ明確化しないとなぁと書きましたが、決まったので報告します!
率直に言うと博士課程に進学して、研究者としてがんばることに決めました!その息抜きとして配信業を営んでいこうと考えています。要するに
メイン:学業
副業的な:配信業
で、これからはやっていきます!
大きな理由としては「自分のスキル向上・業績」この辺が総合的に一番得られるのが研究だと考えたから!
それと自分の時間の確保。仕事をしていると週の拘束時間があまりにも多くなるのが自分にとってデメリットだと思って、消去法的な考えでこうしました。週3-4勤務でいいような仕事があればそっちも考えるけど、それを探す労力がとてつもなくかかりそうで。今の日本社会だと正社員は週5-6勤務ゼッタイ的な慣習だし、正社員で働くくらいならバイト・インターンで働きつつ柔軟に生活していきたい。
ぶっちゃけ社会的には甘えなんだけど、どうしても自分の性格上そこは譲れないんだよね。だったらとことん実力つけて、実力で勝負してやろうって考えにしました。
研究でも拘束時間長くね?って思うかもだけど、情報系の研究だと在宅でほとんどできるのがつよい。お昼過ぎに起床して、そこから10時間くらい研究、息抜きに配信したり、遊んだり。こんな生活、仕事してたらできないよなぁってね。
お金に関しては、今はかんがえないことにします!
在学中は奨学金と仕送りでやりくりして、その間にスキルつけまくれば博士卒業したときになんとでもなるだろうってかんがえです!何事においても地力だと思ってて、例えば圧倒的プログラミング能力があれば仕事経験なくても重宝されるとおもう。
世の中見てみると、圧倒的にプログラミング能力ない人の方が多い。そういう人でも普通にIT企業で働いてたりする。最近特に思うことが、世間はかなり適当に動いているってこと。能力とか気力とか、全然関係ない。仕事している人は全員モチベーション持ってるわけでもないし、その仕事に誇りを持っているわけでもない。働いている人のほとんどは生活のために仕事してるんじゃないのかな。もちろん例外はいるけどね。その辺のギャップに気づき始めて落胆したのも最近だったりする。
世の中適当に動いていくからこそ、結構ズルすることもできちゃったりして、そこが僕的に納得いかないです。ズルして得する人がいるのであれば、理不尽に損する人もいるわけで、圧倒的に不平等だよなって。
僕の研究はそこらへんを追求していく分野でもあるので、かなりモチベーションが湧いてます。
◆配信◆
今後どうしていくのか、これは正直わからない!!
モチベーションはめちゃくちゃあるんだけど、現実問題これから成功する保障もないしそこに一点集中させるにはリスクがでかいなって考え。
そうである以上は副業的な立ち位置が限界かなぁ。でもそれ以上に、自分にとっての一番の息抜きでもあるからそういうポジションでしばらくは続けていきたいね。
いろいろと迷走しちゃって申し訳ないんだけど、少なくとも今年の8月までは低頻度更新でやらせてもらいます!(研究成果審査会が7月下旬だから。今まで研究サボってた分それまではそっちに集中したい)
いい感じに生活リズム整えられたら、毎日更新も可能だって目途もあるんで、そこは今後にご期待くださいって感じでw
配信業の方でも、引き続き応援していただければうれしいです!!
◆最後に◆
このくらいの雑な文章であれば結構な頻度でブログ更新できると思うんで、こういうノリで不定期で更新していきます!まんま喋り言葉っぽい感じで文章書いてくので支離滅裂な感じになるけど、そこはみんなががんばって読み解いてほしい!
24歳になりました。今までの人生を振り返って
こんばんは。こんけあです。大変お久しぶりです。
前回のブログ記事の更新が2016/12/11だったので、おおよそ2年ぶりの更新ですって。
さぼりすぎた。
...orz
まぁ前回までの記事も言うて、技術録みたいなものでブログ本来の趣旨とはかけ離れていたんですけど
今回の記事はブログ本来の意味を取り戻し、日記というか人生録みたいなものを書こうかなーと思います!
今日は24歳になったということで、僕の今までの人生みたいなものを書いていきます!
続きを読む
【11】Siv3D スコアの実装と、それをシーン間でデータ共有する
ゲームに欠かせない要素がスコアです。ゲームをクリアしていく過程で、特定のアイテムをゲットしたり時間に応じて得点が加算されれば、かなり競技性が増すでしょう。今まで作ってきたシューティングゲームには敵にショットが当たったときのhit処理を既に実装しました。そこにスコア処理を入れてあげれば、スコアシステムができそうです。そこで、その実装例を見てみましょう。
またスコアシステムを実装するのだから、ハイスコアというものをシーンを超えて保存できればなお良いでしょう。古きファミコンソフトなんかでもハイスコアはある程度保存されているかと思います。そこで、シーン間でのデータ共有の方法も同時に実装してみます。
それと、ブログで紹介するにはコードが長くなりすぎているので、細かい解説は省かせていただきます。今回はコード丸々載せますが、次回以降は単体の機能のみを作って紹介したほうがいいですね…許してくだちい。ブログにコードを載せるのでなく、随時GitHubにプルしてきます。
続きを読む