そのホームページ大丈夫? SQLインジェクションって何? それは「データベースシステムを不正に操作する攻撃方法」です!
こんにちは!
IT・プログラミング関連講師の荒川栄一郎です。
本日は「バッファ・オーバーフロー」について記述します。
★「セキュリティ」って何?
まず「バッファ・オーバーフロー」についてお伝えする前に
情報セキュリティについて知る必要がありますので
「セキュリティ」の概要についてお伝えします。
インターネットには、様々なユーザが接続しています。
その中には、インターネットを利用して
虎視眈々と悪さをしようと企んでいるユーザもいます。
インターネットに接続するコンピュータを安全に利用するためには
どのような脅威があり、その対策方法などを知っておく必要があります。
セキュリティは
「安全」「防護」「保障」などの意味を持つ英単語で
ITの分野では、「情報セキュリティ」のことを指し
コンピュータを安全に利用できるようにすることです。
現在はインターネットを利用して
HP(ホームページ)を閲覧したり
FacebookやTwitterなどのSNS(Social Networking Service)で
情報のやり取りを行うことができますよね。
このようなWebシステムを利用して
●クレジットカード情報
●個人情報
●メールの内容
●ログイン情報
のような情報を簡単に取得することも可能になっていますので
Webシステムの利用者は
いろいろな脅威があることを知っておいたほうがいいと考えます。
また、Webシステムを作成する側は
利用者が安心して利用できるように考慮しなければいけません。
しかし、情報セキュリティ対策は万全だと思っていても
日々いろいろな脅威が発生し、その対策方法が講じられていることも事実です。
★バッファ・オーバーフローって何?
インターネットには、様々なユーザが接続しています。
その中には、インターネットを利用して
虎視眈々と悪さをしようと企んでいるユーザもいます。
現在では
●SNS
●オンライン・ショッピング
●オンライン予約
などのWebシステムがよく利用されています。
もし、このようなWebシステムを利用して
入力した年齢が「20」だったにもかかわらず
「50」として利用されていたとしたら
正常なプログラムの実行結果が得られないかもしれませんね。
バッファ・オーバーフローは
コンピュータに異常な処理を行わせる攻撃方法です。
バッファとは
データの一時記憶領域です。
オーバーフローとは
「あふれる」や「あふれ出る」という意味があります。
バッファというデータを記憶する場所には
●キーボードから入力したデータ
●計算処理を行う対象データ
などが格納されます。
バッファに格納できるデータは無限ではなく
必ず格納できる範囲があります。
例えば
バッファに格納できるデータの範囲が「0~9」までであれば
「0~9」までしか格納できません。
しかし
「0~9」までしか格納できないバッファに「10以上」のデータを格納すると
バッファには格納できず、そのデータはあふれ出てしまいます。
あふれ出たデータが別のバッファに流れ込むと
元のバッファのデータも別のバッファのデータも
正常な値ではなくなるためプログラムに誤動作を起こす可能性が秘められています。
もう少し簡単に言うと
年齢を格納するバッファと学年を格納するバッファがあったとして
年齢を格納するバッファには「0~100」までのデータしか格納できず
学年を格納するバッファには「1~6」までのデータしか格納できないとしましょう。
学年に「3」が格納されている状態で
年齢に「101」を格納すると「1」があふれ出てしまうと
学年の方に流れ込んで「4」になってしまい
年齢が「100」で学年が「4」となり
全く意図しないデータになってしまう可能性が秘められています。
こうなると
プログラムにも大きな影響を及ぼします。
データがあふれ出たことによる意図しないプログラムの動きを利用して
悪意のあるプログラムを実行することもできるようになる可能性も秘められています。
この現象が
バッファ・オーバーフローになります。
バッファ・オーバーフローが実行されると
●意図しないサービス停止
●ウイルス、ワーム、ボット等への感染
●バックドアの設置
●他のシステムへの攻撃
●重要情報の漏えい
などの被害に遭う可能性が秘められており
大変なことになるかもしれませんね。
バッファ・オーバーフローは
コンピュータ内部で利用するデータに
利用可能範囲外のデータを仕込み
コンピュータに異常な処理を行わせる攻撃方法です。
バッファ・オーバーフローが起きる原因は
C、C++、アセンブラなどの直接メモリを操作できる言語で
記述されている場合に起こります。
これらの言語を使って開発された
Webシステムを利用しているサイトは注意が必要です。
システム開発側はこのようなシステムを作ると
利用者からクレームがくるでしょうし
多額な賠償請求を迫られる可能性もあるかもしれません。
システム開発側は
必ずバッファ・オーバーフロー対策を施さなければ
利用者が安心して利用できません。
バッファ・オーバーフロー対策は
(1)直接メモリにアクセスできないプログラミング言語で記述する。
(2)入力データのチェックを厳格に行う。
などの方法があります。
(1)直接メモリにアクセスできないプログラミング言語で記述する。
バッファ・オーバーフローが起きる原因は
C、C++、アセンブラなどの直接メモリを操作できる言語で
記述されている場合に起こります。
これらの言語を使って開発された
Webシステムを利用しているサイトは注意が必要です。
よって
C、C++、アセンブラのような
直接メモリにアクセスできるプログラミング言語で記述しないことにより
バッファ・オーバーフローを回避することができます。
(2)入力データのチェックを厳格に行う。
バッファ・オーバーフローは
入力されたデータが正常範囲外のデータにより発生する脅威になります。
よって
入力データのチェックを厳格に行うことにより
バッファ・オーバーフローを回避することができます。
Webサイトには様々な脅威が潜んでいますので
常に最悪の事態も想定したりして
対策方法を考慮することが大切だと考えます。
Webサイトを構築する側の人は
Webサイトの利用者が安心して利用できるシステムを作成するように
心掛けなければいけません。
Webサイトを利用する側も
インターネットを利用するシステムには
様々な脅威が潜んでいることを頭に入れておかなければいけません。
ネット社会では
企業だけでなく個人にとっても脅威が潜んでいます。
セキュリティ対策は
しっかりと行う必要がありますね。
★バッファ・オーバーフローのまとめ
バッファ・オーバーフローって
難しいと思われている方も多々いると思いますが
コンピュータに異常な処理を行わせる攻撃方法です。
セキュリティ対策という言葉を聞いたことがある方は非常に多いと思いますし
セキュリティを意識している人も非常に多いと思います。
バッファ・オーバーフローは
今やPCやスマートフォンでインターネットを利用する上で
潜んでいる脅威だと考えますが
明確に内容や仕組みを理解している人は少ないと思います。
ただバッファ・オーバーフローというものは
●コンピュータに異常な処理を行わせる攻撃方法
●Webサイトの作る側も利用する側も考えなければいけないこと
ということだけでも
このコラムを通じて理解していただけましたら幸いに思います。
バッファ・オーバーフローは
コンピュータに異常な処理を行わせる攻撃方法です。
もしバッファ・オーバーフローに興味を持たれたら
少しずつ勉強してみてはいかがでしょうか?
ユーザとしては知る必要がありませんが
少しずつ覚えていくことで、点が線で繋がることも多々あります。
そうなると結構楽しくなるかもしれません。
これからIT業界を目指している人には
知っておいてほしい知識だと思いますが
少しずつ勉強していってほしいと思います。
★バッファ・オーバーフローについて学ぶ方法は
バッファ・オーバーフローについては
新入社員研修やIT・プログラミング関連の研修で
学ぶことができるようになっています。
【IT・プログラミング研修】
●「Java(Webアプリ開発)」の詳細情報
https://itlaboj.com/courses/java_training/java_web/
●「Java(Webアプリ開発 - Spring Framework -)」の詳細情報
https://itlaboj.com/courses/java_training/java_spring/
●「Python(Webアプリ開発)」の詳細情報
https://itlaboj.com/courses/python_training/python_web/
●「PHP(Webアプリ開発)」の詳細情報
https://itlaboj.com/courses/php_training/php_web/
●「C#(Webアプリ開発)」の詳細情報
https://itlaboj.com/courses/cs_training/cs_web/
●「ネットワーク基礎」の詳細情報
https://itlaboj.com/courses/it_training/network_kiso/
★「バッファ・オーバーフロー」習得に必要なもの
バッファ・オーバーフローの内容は基本的に座学になりますが
Webアプリケーションの知識や構築方法を学んだ後に行う内容ですので
それぞれのプログラミング言語のセットアップなどが必要になります。
また、このコースは
リアルでもオンラインでも受講することが可能です。
オンラインで受講される人は
「Zoom」が利用できる環境があればいいと考えます。
このコースはシステム開発に直結する話ではあり
SEやプログラマになるための必要な内容になります。
みんなが楽しみながらWebサイトの脅威・対策方法の知識を習得してほしいと思いますし
将来のIT技術者を研修や動画コンテンツを通じて
育成していきたいと考えています。
私は日本全国に多くのIT技術者を育成できる研修を目指していきたいです。
そして一人でも多くの受講者に受講してもらい理解してもらえる研修を行いたいと思っています。