そのホームページ大丈夫? SQLインジェクションって何? それは「データベースシステムを不正に操作する攻撃方法」です!
こんにちは!
IT・プログラミング関連講師の荒川栄一郎です。
本日は「メールヘッダ・インジェクション」について記述します。
★「セキュリティ」って何?
まず「メールヘッダ・インジェクション」についてお伝えする前に
情報セキュリティについて知る必要がありますので
「セキュリティ」の概要についてお伝えします。
インターネットには、様々なユーザが接続しています。
その中には、インターネットを利用して
虎視眈々と悪さをしようと企んでいるユーザもいます。
インターネットに接続するコンピュータを安全に利用するためには
どのような脅威があり、その対策方法などを知っておく必要があります。
セキュリティは
「安全」「防護」「保障」などの意味を持つ英単語で
ITの分野では、「情報セキュリティ」のことを指し
コンピュータを安全に利用できるようにすることです。
現在はインターネットを利用して
HP(ホームページ)を閲覧したり
FacebookやTwitterなどのSNS(Social Networking Service)で
情報のやり取りを行うことができますよね。
このようなWebシステムを利用して
●クレジットカード情報
●個人情報
●メールの内容
●ログイン情報
のような情報を簡単に取得することも可能になっていますので
Webシステムの利用者は
いろいろな脅威があることを知っておいたほうがいいと考えます。
また、Webシステムを作成する側は
利用者が安心して利用できるように考慮しなければいけません。
しかし、情報セキュリティ対策は万全だと思っていても
日々いろいろな脅威が発生し、その対策方法が講じられていることも事実です。
★メールヘッダ・インジェクションって何?
インターネットには、様々なユーザが接続しています。
その中には、インターネットを利用して
虎視眈々と悪さをしようと企んでいるユーザもいます。
現在では
●SNS
●オンライン・ショッピング
●オンライン予約
などのWebシステムがよく利用されています。
もし、このようなWebシステムの
「お問い合わせフォーム」や「個人情報入力フォーム」などを利用して
特定の相手にメールを送信する機能に対して
入力データを改ざんすることでメールの送信先を操作することができたら
複数人にいたずらメールを送ったりすることも可能になり
迷惑メールの送信に悪用することができるサイトになるかもしれませんね。
通常
「お問い合わせフォーム」や「個人情報入力フォーム」などは
そのサイトの管理人や入力者に入力結果を送信したりします。
メールヘッダ・インジェクションは
送信先のメールアドレスなどに不正なコードを仕込ませる攻撃方法です。
メールヘッダとは
受け取ったメールがどこから、どのような経路で
送られてきたのかを記録したものです。
インジェクションとは
注入という意味があります。
メールヘッダからは下記のような情報が分かります。
●送信元のメールアドレス
●送信先のメールアドレス
●メールのタイトル
●メールが送信された時刻
●メールが配送されたルート
●メールの返信先
●メール配信エラーの際の差し戻し先
●電子メールの識別番号
●送信元の使用メールソフト
メールヘッダ・インジェクションは
送信先のメールアドレスなどに不正なコードを仕込ませ
迷惑メールを送る攻撃方法です。
メールヘッダ・インジェクションが起きる原因は
「お問い合わせフォーム」や「個人情報入力フォーム」などの
●メールのタイトル入力部分
●メールアドレス入力部分
などに不正なコードを仕込まれることです。
例えばメール送信時に
●送信元メールアドレス・・・「aaa.atmark.com」
●メールタイトル・・・「こんにちは」
●送信先メールアドレス・・・「bbb.atmark.com」
だった場合、下記のような形に設定されメールが送信されます。
【メールヘッダ】 ※メールヘッダは簡略化して表現します。
From: aaa.atmark.com
Subject: こんにちは
To: bbb.atmark.com
もしメールタイトルが入力できるようになっていて
その入力部に下記のように入力するとどうなるでしょうか?
「こんにちは%0d%0aBcc%3a%20ccc.atmark.com」
●%0d%0a・・・「改行コード」
●%3a・・・「:」
●%20・・・「半角スペース」
を表しますのでメールヘッダは下記のように改ざんできます。
【メールヘッダ】 ※メールヘッダは簡略化して表現します。
From: aaa.atmark.com
Subject: こんにちは
Bcc: ccc.atmark.com
To: bbb.atmark.com
Bccとは
「Blind Carbon Copy」の略語で
他の受信者にアドレスが見えないようにしてメールを送信したり
複数の相手にメールを一斉送信を行う場合に利用されます。
ということで
Bccで設定した「ccc.atmark.com」のメールアドレスに
いたずらメールを送信することができるようになります。
ということは。。。
Bcc: ccc.atmark.com ddd.atmark.com eee.atmark.com ・・・
のように設定すると
複数の相手に対していたずらメールを送信することが可能になります。
このように
入力内容を改ざんすることで
メールの送信先を「悪意のある攻撃者」によって操作できてしまうのです。
この攻撃のことを
「メールヘッダ・インジェクション」と呼びます。
システム開発側はこのようなシステムを作ると
利用者からクレームがくるでしょうし
多額な賠償請求を迫られる可能性もあるかもしれません。
システム開発側は
必ずメールヘッダ・インジェクション対策を施さなければ
利用者が安心して利用できません。
メールヘッダ・インジェクション対策は
(1)外部からの入力は全てメール本文に設定する。
(2)メールヘッダに埋め込む文字列に改行コードを許可しない。
(3)メールヘッダ・インジェクション対策されているメール送信APIを使用する。
などの方法があります。
(1)外部からの入力は全てメール本文に設定する。
メールタイトル「Subject」のような
メールヘッダに設定される項目を外部から入力可能にすると
改行コードを使用してメールヘッダを改ざんすることが可能になります。
外部からはメールタイトル「Subject」のような項目を入力不可とし
外部からの入力は全てメール本文に設定するようにすることで
メールヘッダ・インジェクションを回避することができます。
(2)メールヘッダに埋め込む文字列に改行コードを許可しない。
メールヘッダ・インジェクションは
入力部に改行文字を使用してしてメールヘッダへ不正な値を設定し
メールヘッダを改ざんさせ迷惑メールを送ります。
よって
入力値をチェックして
メールヘッダに埋め込む文字列に改行コードを許可しないようにすることにより
メールヘッダ・インジェクションを回避することができます。
(3)メールヘッダ・インジェクション対策されているメール送信APIを使用する。
Webアプリケーションを作成する言語には
メール送信用のAPIが用意されています。
APIとは
「Application Programming Interface」の略語で
開発者向けに公開している機能(部品)のことです。
そのAPIの中に
メールを送信するための部品なども含まれています。
Webシステムを利用してメールを送信する場合は
メールヘッダ・インジェクション対策されているメール送信用APIを使用することで
メールヘッダ・インジェクションを回避することができます。
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技術者を育成できる研修を目指していきたいです。
そして一人でも多くの受講者に受講してもらい理解してもらえる研修を行いたいと思っています。