セキュリティの
学び場

SHIFT SECURITY セキュリティの学び場 用語・国際規格 バッファーオーバーフロー攻撃|サクッと読めるセキュリティ用語解説

バッファーオーバーフロー攻撃|サクッと読めるセキュリティ用語解説

サクッと読めるセキュリティ用語解説 バッファーオーバーフロー攻撃
目次
  • バッファーオーバーフロー攻撃の概要
  • バッファーオーバーフローによって起きる事象と対策

バッファーオーバーフロー攻撃の概要

「バッファーオーバーフロー攻撃」は、コンピュータプログラムの典型的な誤りである「バッファーオーバーフロー」を悪用した、ソフトウェアシステムに対する攻撃手法です。

「バッファー」とは、プログラムの実行に必要なデータの一時的なメモリ上での置き場のことです。「オーバーフロー」とは「あふれる」ことです。感覚としては、水槽の容量を上回る量の水を入れたら部屋が水浸しになってしまいます。これと似たようなことがソフトウェアでも起きてしまうということです。

通常、バッファーは大きさを指定して確保します。例えば「ユーザーIDは10文字までだから10文字分」などです。ここに、プログラム上の誤りで、10文字以上のデータを書き込んでしまうと、バッファーの後ろにあるデータが書きつぶされてしまい、いろんな不具合が生じます。これがバッファーオーバーフローです。

バッファーオーバーフローによって起きる事象と対策

バッフォオーバーフローによって起きる事象とその対策についてご紹介します。

バッファーオーバーフローによって起きる事象

最も可能性が高い攻撃は、データが単に意図しない値に書き換えられることでプログラムの実行に失敗する(停止する)ことですが、プログラムそれ自体もデータとしてメモリ上に配置されているので、巧妙にデータを細工して意図的にバッファーオーバーフローを引き起こすことでプログラムの改竄もできてしまうかもしれません。

また、データの格納状況を推察できれば「ユーザー権限を管理者権限に昇格する」などのことも可能です。「バッファーオーバーフロー攻撃」ではこのように非常に危険な攻撃が可能になります。

バッファーオーバーフローへの対策

データのサイズを常に意識し、確実に適切なサイズのバッファーを確保し、またデータ書き込み前にサイズをチェックできるような実装を行うことです。静的解析ツールではこのようなチェックを自動で行えます。

JavaやJavaScript、PHP、Pythonなど現代的な多くのプログラミング言語では、バッファーの大きさを自動で調整する機構が備わっているため、バッファーオーバーフローの脅威は減っているといえます。しかしながら、ハードウェアやOSといった「低レイヤー」の操作を行うには、C/C++のようなバッファーを自己管理する言語が必要であり、そのため多くのライブラリやプログラミング言語処理系、ミドルウェアはバッファーオーバーフローの可能性があります。

クラウドであればマネージドサービスの利用により、こういった周辺ソフトウェアの管理を委託することも有効です。

あなたの疑問を一緒に解決します!

解説してほしい用語や技術、仕組みについての疑問、
みなさまのクラウドセキュリティのお悩みに関して技術者が記事にして回答します!
ぜひご気軽にご投稿ください。

クラウドの脆弱性診断にご興味があるかたはこちら

この記事の著者 おがさわらなるひこ

2015年より株式会社SHIFTにてソフトウェアテスト自動化の顧客導入支援・プラットフォーム開発に従事。加えてSHIFT SECURITY設立に兼務で参画し、初期の標準化や教育などを担当。2019年に同社専任になってからは、開発者向けのソフトウェアセキュリティサービス、スマートフォンアプリ診断手法および社内ツール開発などを主な業務とする。個人としては主にデスクトップ領域のオープンソースソフトウェアの愛好家であり、翻訳やバグ報告、雑誌やWeb媒体への執筆、イベントへの登壇なども行う。隠れた趣味はリバーカヤック。

\ 記事をシェアする /

Contact

お見積り・ご相談など、お気軽にご相談ください

ご相談・ご質問はこちら

お問い合わせ

お見積り依頼はこちら

お見積り依頼

資料請求はこちら

資料請求

お電話でのご相談はこちら
(平日10:00~18:00)

TEL.050-5532-3255
サイトTOPへ