Photo by EU Webnerd
こんにちは。倉内です。
先日paizaラーニングに「攻撃手法から学ぶハッカー入門(Webセキュリティ入門編)」が新登場しました!女子高生ハッカー凉月美影(CV: 内田真礼)と一緒にWebサイトへの攻撃手法と対策を学べる講座となっています。
さて、昨今Webサイトやアプリケーションのセキュリティについてのニュースをよく目にしますが、普段からそれらを頻繁に利用していてもまだまだひとごとだと思っている方も多いのではないでしょうか。
しかしこれからITエンジニアになろうとしている方や、ITエンジニアになった方はWebサービスを開発し提供する側になるので、Webセキュリティについて知る必要があります。
そこで今回は、Webセキュリティの入門として「そもそもなんでWebってセキュリティ対策が必要なの…?」について、インターネットの仕組みやセキュリティ対策の基本知識をおさえながら考えていこうと思います。
インターネットの仕組みとセキュリティ
インターネットとは何か
普段当たり前に利用しているインターネットですが、専門的に学んだ人でもない限り「インターネットとは何か」という問いにはっきりと答えるのは難しいかもしれません。
利用するだけの立場ならインターネットの仕組みを理解していなくても問題ないですからね。ただ、冒頭にも書いたとおりITエンジニアとしてWebサービスを提供する側になった場合、基本的なことは押さえておいたほうがいいでしょう。
ブログの1記事ですべて説明しきれる内容ではないですが、ざっくりいうとインターネットはこんな感じの仕組みで成り立っています。

ITエンジニアであればもう一歩踏み込んで、IPアドレスやTCP/IC通信、DNS、OSI参照モデルなども基本知識として習得しておきたいところですね。
今やパソコン、スマートフォンに限らず、テレビや冷蔵庫などの家電もインターネットに接続する時代です。仕事はもちろん、家事や遊びにさえインターネットは欠かせないものとなっています。
なお、paizaラーニングの「Web技術入門編」講座では、インターネットの仕組みを動画で学ぶことができます。
HTTP通信やプログラミングでHTMLを処理する仕組み、Webアプリケーション開発には欠かせないWebAPIなど分かりやすく解説しています。ぜひチェックしてみてください!
インターネット上の脅威
インターネット上でやり取りされる情報には、SNSに投稿されたなんでもないテキストや画像から、ショッピングサイトで入力された氏名・住所やクレジットカード情報などの個人情報までさまざまです。
会社であれば仕事の重要な情報も社内外とメールやファイルサーバを介してやり取りする可能性もありますよね。
今の時代ほぼありえないとは思いますが、もしすべての情報をそのまま誰でものぞける状態で(つまり、暗号化せずに)送受信してしまうと…悪意を持った第三者の格好のえじきです。(パスワードをDBに平文で管理していたなんて話もありましたが……)
また、情報を悪用されること以外にもWebサイトの内容を改ざんされてユーザーを詐欺サイトへ誘導するための踏み台にされたり、不正スクリプトを実行されてマルウェアに感染、もしくは感染源になってしまったりといったことも考えられます。
ここ最近ニュースでもよく報道がある「個人情報の流出」「機密情報の漏洩」はシステムのセキュリティの欠陥(これを脆弱性といいます)が原因となることが多く、ユーザーの不利益はもちろんのこと、企業のブランドイメージや業界での競争力を著しく損なう恐れがあります。以下のニュースは記憶に新しいですよね。
そのためWebサイトやサービス、アプリを作る側(提供する側)はそれらの脅威から身を守るために対策を講じる必要があります。
たとえば「Webアプリケーションを作りたい!」となったとき、多くの場合、まずはプログラミングを勉強してサービスを作るほうに力を入れると思いますが、インターネットにそれを公開するのであれば企業・個人にかかわらず、セキュリティについて考えなければならないことはたくさんあります。(個人と企業では度合いが異なりますが)
ちなみに総務省からは「組織幹部のための情報セキュリティ対策」というページが公開されており、「企業や組織にとって、情報セキュリティ対策は、いまや重要な経営課題のひとつです。」とはっきり書かれています。
今の時代、いかなる理由があってもWebサイトやサービスを提供する際にセキュリティを無視することはできません。
サイバー攻撃の種類と対策
サイバー攻撃とは
さきほども少し触れましたが、サイバー攻撃とは悪意のある第三者が個人情報や機密情報を盗んで悪用したり、破壊・改ざんすることを目的に、さまざまな手段でネットワークそのものやネットワーク上にある情報に対して仕掛けてくる攻撃のことです。
古くからあるサーバに負荷をかけダウンさせるDDoS攻撃、正規サイトを装ってIDやパスワードを盗むフィッシング詐欺などその攻撃手法はさまざまですが、システムのセキュリティ上の欠点である脆弱性を狙った攻撃も非常に多く存在します。
脆弱性はシステム設計や実装におけるミス(考慮不足による想定外の利用のされ方、など)およびネットワークに関する設定のミス(ファイアーウォールの設定ミスがセキュリティホールとなる、など)により生じます。
それらを突いた攻撃は、嫌がらせ目的や愉快犯によるものもありますが、昨今では金銭目的やテロ行為など悪質な犯罪行為が多いのも現実です。
警視庁が発表しているサイバー攻撃に関する広報資料では、2018年のサイバー犯罪検挙件数は9,040件で過去最多にのぼったと報告されています。
脆弱性を突くサイバー攻撃
IPAが公開している「ソフトウェア等の脆弱性関連情報に関する届出状況」(2018年10月~12月)によると、この期間で届出された脆弱性の原因別の内訳でもっとも多いのが「ウェブアプリケーションの脆弱性」、次いで「その他実装上の不備」となっています。
過去2年間の累計では「ウェブアプリケーションの脆弱性」が57%を占めています。
続いてWebサイトの脆弱性の種類別の届出状況を見ると、過去2年間の累計9,615件のうち55%が「クロスサイトスクリプティング(XSS)」、次いで「DNS 情報の設定不備」「SQLインジェクション」となっています。
これらの脆弱性がもたらす影響として、「本物サイト上への偽情報の表示」、「ドメイン情報の挿入」、「データの改ざん、消去」が全体の約 8 割を占めています。
ここには挙がってきていませんが、脆弱性をついた攻撃として「バッファオーバーフロー」「ディレクトリトラバーサル」といったものも存在します。
それぞれどのような攻撃内容かは、セキュリティ対策製品の代表格であるMcAfeeの公式ブログに分かりやすくまとめられています。
また、「SSRF(Server Side Request Forgery)攻撃」を受けた米金融大手の個人情報流出の件も記憶に新しいと思います。これはWAF(Web Application Firewall)の設定ミスが発端となり、1億人以上の個人情報が流出したというショッキングな出来事でした。
(参考)SSRF攻撃によるCapital Oneの個人情報流出についてまとめてみた - piyolog
このようにセキュリティに関するニュースはあとを絶たず、悪意のある人物(組織)は日々脆弱性を狙って攻撃をしかけてきます。
脆弱性を突いた攻撃への対策
システムの欠陥を狙って攻撃されるということが分かったので、開発時にはそれらを把握して対策をする必要があります。
たとえば、攻撃のところで挙げた「SQLインジェクション」は、さきほどのIPAの資料によると深刻度「高」に分類されています。
入力フォームなどからSQLを含む文字列(データベースへの命令)を送り込み、データベースへの操作を実行して情報の閲覧、更新(改ざん)、削除などをおこなうため、特に個人情報を扱うシステムの場合は対策は必須と言えます。
「では具体的にはどう対策したらよいのか?」についてはpaizaラーニングの新規講座「攻撃手法から学ぶハッカー入門(Webセキュリティ入門)」で解説しています。
この講座では、「SQLインジェクション」や「クロスサイトスクリプティング(XSS)」といった攻撃手法および対策方法を試しながら実践的に学ぶことができます。攻撃手法は実際のWebサイトで試すと不正アクセス禁止法に抵触しますが、このレッスンではpaizaラーニングの仮想実行環境上で、ハッキングとその対策方法を実践できます。
今まであまりセキュリティについては勉強したことがないという方向けに、最近のセキュリティ動向も解説していますので、まずはこの動画講座で入門してみてください。
「攻撃手法から学ぶハッカー入門(Webセキュリティ入門編)」について詳しくはこちら
また、Webアプリケーションのセキュリティについて学ぶときの必読本をご紹介します。具体的な対策のためのサンプルコードも豊富に掲載されています。
![体系的に学ぶ 安全なWebアプリケーションの作り方 第2版[リフロー版] 脆弱性が生まれる原理と対策の実践 体系的に学ぶ 安全なWebアプリケーションの作り方 第2版[リフロー版] 脆弱性が生まれる原理と対策の実践](https://m.media-amazon.com/images/I/41g55gKRKEL._SL160_.jpg)
体系的に学ぶ 安全なWebアプリケーションの作り方 第2版[リフロー版] 脆弱性が生まれる原理と対策の実践
- 作者:徳丸 浩
- 発売日: 2018/09/20
- メディア: Kindle版
合わせてIPAから公開されたばかりの「情報セキュリティ白書2019」もPDF版は無償でダウンロードできますのでチェックしてみてください。(会員登録とアンケート解答必要)
まとめ
インターネットの仕組みから始まり、なぜWebサイトやアプリケーションの開発にセキュリティ対策が必要かというお話をしてきました。
手口も巧妙化し、終わりのない戦いに見えるセキュリティ対策ですが、だからといって何もしないわけにはいきません。
ITエンジニアになったばかりの方、ITエンジニアを目指している方はぜひプログラミング学習などと合わせてセキュリティについても知識をつけていっていただけるとよいかなと思います。
Amazonギフト券などが当たる!開講記念キャンペーン実施中
新レッスンの公開を記念して、内田真礼さんの直筆サイン色紙やAmazonギフト券が当たるキャンペーンを実施中です。
Twitterのpaiza公式アカウント(@paiza_official)をフォローし、こちらの攻撃手法から学ぶハッカー入門(Webセキュリティ入門編)のキャンペーンページのツイートボタン、もしくは同講座の演習問題完了後に表示される画面のツイートボタンから、ハッシュタグ「#paiza_hack」を消さずにツイートすると応募完了となります。
※応募期間:2019年7月30日(火)~2019年8月30日(金)
「paizaラーニング」では、未経験者でもブラウザさえあれば、今すぐプログラミングの基礎が動画で学べるレッスンを多数公開しております。
詳しくはこちら
そしてpaizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。
スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。
詳しくはこちら