Output Diary

プログラミング × 読書 のアウトプットを発信しています

【Rails】インジェクション

 
インジェクションとはなんでしょうか?
 
車の燃料の種類が解らない時は車検証を見て確認しましょう! - 南自動車学校のブログ

 

 
ウェキペディアによると以下のように定義されています。
 
 
 
 
インジェクションとは、
エンジンに燃料を噴射するための装置で、
車にとって欠かせないパーツですね💡
 
 
 
 
、、、ということを今回説明したいわけではなく、
 
 
 
 
今回はWEBアプリケーションで実行される
インジェクション攻撃について説明していきます。
 
 
 
 

インジェクション攻撃とは

 
インジェクション攻撃は、
別名注入攻撃と呼ばれ、ソフトウェアへの攻撃手法の1つです。
 
外部から文字列の入力を受け付けるプログラムに対して悪意のある不正な文字列を与え、システムを乗っ取ったりデータの改ざん詐取を行う手法のことをいいます。
 
 
インジェクション攻撃の標的となるのは、
ユーザーが入力可能なところ全てになります。
 
 
 
「なんと、、
常に危険にさらされているのではないか、、」ってなりますね。
 
 

代表的なインジェクション

 
Rubyコードインジェクション
コマンドラインインジェクション

 

 
 

XSSクロスサイトスクリプティング

 
ユーザーに表示するコンテンツに対し悪意のある文字列をしかけ、
そのコンテンツを表示したユーザーにスクリプトを実行させることで任意の操作を行う攻撃です。
 
 
主にJavaScriptで攻撃を仕掛けられることが多いです。
 
JavaScriptはユーザーの行動を読み取ったり任意のアクションを実行させることができるのでそれらを利用し悪意ある攻撃をしかけてきます。
 
 
対策としては、
 
クライアントからの入力などははならずエスケープを行いましょう。
ユーザーからの入力html_escapeヘルパーを利用し,
エスケープして表示するのが望ましいです。
 
 RailsのデフォルトではHTMLはエスケープ処理されます。
 

 SQLインジェクション

 
データ入力時に悪意のあるSQLを入力することで攻撃を試みます。
 
 
 
これらを防ぐためには、
ユーザーが入力した文字列をそのままSQLに埋め込んではいけません。
エスケープなどの加工が必要になってきます。
 
 Railsには'"NULL改行などのSQLにおいて特殊な意味を持つ文字をエスケープする機能があります。
 
 
 

コマンドラインインジェクション

 
コマンドラインインジェクションとは、
アプリケーションに対して送信するパラメータ情報に不正なOSコマンドを含ませる等の手法です。
 
 
 
OSコマンド・インジェクションの根本的な原因は、
脆弱性のあるアプリケーションの設計です。
 
 
対策としては、
systemメソッドを利用しましょう。
 
 コマンドラインインジェクションについて
詳しく書かれた記事もあるのでぜひ参考にしてみてください。
 

被害例

 
・情報漏えい
・不正なシステム操作
・ウイルスなどのマルウェア操作

 

 

日テレ個人情報漏洩事件

 
2016年4月21日、日テレのWebサイトが何者かによって不正アクセスを受け、
最大で43万件におよぶ個人情報(氏名、住所や電話番号など)が外部に流出した事件です。
 
 
この事件が引き起こされた要因としては、
 
・ソフトウェアが十分なセキュリティ対策を講じていなかったこと
内部情報にアクセスできないようにする十分な侵入防御の仕組みが十分にとられていなかったこと

  

が原因ではないかと述べられています。
 
 
<参考記事>
 
 

感想

 
Webというものが普及してとても便利な世の中になりました。
 
しかしそれと同時に、
危険と隣合わせで暮らしているということも常に意識しなければいけません。
 
 
「いつ・どこで狙われるかわからない」という
このことを常に意識する必要があるのだなと改めて感じました。
 
大きな組織であればあるほど、比例してセキュリティに対する意識も常に高く持ち続けなければいけないという責任もずっしりありそうですね。
 
 
セキュリティ対策はしっかり勉強する必要がありそうだと感じました!
それではまた明日ー!
 

f:id:kina_kq:20210227062818p:plain