MITERが運営する国土安全保証システム技術開発研究所は、ソフトウェアの脆弱性を調査し、「2023年の危険な脆弱性タイプトップ25」を発表しました。
IT業界が浅い人でもわかるように、かいつまんでわかりやすく解説します。
- 2023年の危険な脆弱性タイプトップ25
- 第1位:Out-of-bounds Write(領域外への書込み)
- 第2位:Cross-site Scripting(クロスサイトスクリプティング)
- 第3位:SQL Injection(SQLインジェクション)
- 第4位:Use After Free
- 第5位:OS Command Injection(OSコマンドインジェクション)
- 第6位:Improper Input Validation(入力バリデーション)
- 第8位:Path Traversal(パストラバーサル攻撃)
- 第9位:Cross-Site Request Forgery(クロスサイトリクエストフォージェリ)
- まとめ
2023年の危険な脆弱性タイプトップ25
第1位:→:Out-of-bounds Write(CWE-787)
第2位:→:Cross-site Scripting(CWE-79)
第3位:→:SQL Injection(CWE-89)
第4位:↑:Use After Free(CWE-416)
第5位:↑:OS Command Injection(CWE-78)
第6位:↓:Improper Input Validation(CWE-20)
第7位:↓:Out-of-bounds Read(CWE-125)
第8位:→:Path Traversal(CWE-22)
第9位:→:Cross-Site Request Forgery(CWE-352)
第10位:→:Unrestricted Upload of File with Dangerous Type(CWE-434)
第11位:↑:Missing Authorization(CWE-862)
第12位:↓:NULL Pointer Dereference(CWE-476)
第13位:↑:Improper Authentication(CWE-287)
第14位:↓:Integer Overflow or Wraparound(CWE-190)
第15位:↓:Deserialization of Untrusted Data(CWE-502)
第16位:↑:Command Injection(CWE-77)
第17位:↑:Improper Restriction of Operations within the Bounds of a Memory Buffer(CWE-119)
第18位:↓:Use of Hard-coded Credentials(CWE-798)
第19位:↑:Server-Side Request Forgery(CWE-918)
第20位:↓:Missing Authentication for Critical Function(CWE-306)
第21位:↑:Race Condition(CWE-362)
第22位:↑:Improper Privilege Management(CWE-269)
第23位:↑:Code Injection(CWE-94)
第24位:↑:Incorrect Authorization(CWE-863)
第25位:↓:Incorrect Default Permissions(CWE-276)
出典:【セキュリティ ニュース】危険な脆弱性タイプ、2023年の「トップ25」(2ページ目 / 全2ページ):Security NEXT
第1位:Out-of-bounds Write(領域外への書込み)
想定のサイズを超えるデータをバッファに送り込み、誤作動を起こさせる攻撃です。
マルウェアから不正プログラムを実行し、システムの誤作動やコンピュータの乗っ取りの影響があります。
主にIoT機器が狙われやすく、C/C++のコードでは対策が必要です。
開発者側はC/C++でメモリ管理が安全なライブラリを使うことが簡単にできる対策です。
対策のできていない古いアプリケーションや不要なアプリケーションをインストールしない、マルウェアに感染するようなサイトを見ない、といったことでリスクを減らせます。
第2位:Cross-site Scripting(クロスサイトスクリプティング)
Webアプリケーションの脆弱性を突く攻撃です。
掲示板の投稿や検索キーワードなどにHTMLタグやJavaScriptのコードなどを埋め込み、不正に実行させます。
対策としては、入力値をエスケープ処理(HTMLエンコード・URLエンコード)が有効です。最新のフレームワークを使えば標準で対策されるものもあります。
第3位:SQL Injection(SQLインジェクション)
Webアプリケーションの脆弱性を突く攻撃です。
入力フォームや検索フォームに対して攻撃します。
例えば、”SELECT * FROM A_Table WHERE Keyword LIKE ‘%{入力値}%’ “という文が処理されるとして、入力値が” ‘; DELETE FROM Users; –“(SELECT文実行後、削除し残りの構文をコメントアウト)だった場合にもしUsersテーブルがあればすべて削除されてしまいます。
本来見れないデータの盗み見や、データベース破壊などできてしまいます。
対策としては、①入力値を制限する(SELECT や DELETE など)、②入力値をエスケープ処理する、③SQL文にパラメータ変数で渡す(文字連結でSQL文を作らない)などがあります。
第4位:Use After Free
すでに解放したポインタを使って、破壊や不正プログラムを実行させて攻撃します。
メールのリンクなどで攻撃プログラムのあるサイトに誘導して、IEの脆弱性を突いて攻撃した事例もあります。
最新でないブラウザを使わないことや、迷惑メールのリンクを触らないようにしましょう。
第5位:OS Command Injection(OSコマンドインジェクション)
Webアプリケーションの脆弱性を突く攻撃です。
入力フォームなどでOSのコマンドを入力して実行させることで、情報漏えいやサーバー破壊をします。
対策としては、入力値に特殊文字を入れさせないチェックをすることや、外部プログラムを呼び出す機能を使わないことです。
第6位:Improper Input Validation(入力バリデーション)
正常なデータになっているかチェックしなさいよってことです。
例えば、金額の入力があったとして負(マイナス)の数値が入力検証しなかったら、請求したいのに入金しないといけなくなります。
第8位:Path Traversal(パストラバーサル攻撃)
見えないものを見ようとして、パスを指定したら見えちゃった♪というような残念無念なものです(Bump of Chicken、替え歌にしてすみません)
公開前のファイルが見えてしまったり、アクセス権が特に設定されていなくて見れてしまうようなこともあります。
情報漏えいで問題になりやすいので気を付けよう。
第9位:Cross-Site Request Forgery(クロスサイトリクエストフォージェリ)
Webアプリケーションの脆弱性を突く攻撃です。
悪意のあるWEBサイトにアクセス後、意図しないHTTPリクエストを送られてしまい、パソコンの遠隔操作や電子掲示板の自動投稿、銀行振り込みや他WEBサービスの設定変更などの被害がありました。
開発者側は本人による操作かをチェックする対策が必要です。
利用者側は、WEBサービスにログインしたまましない、つまりログアウトする習慣をつけることで、勝手にネット銀行から振込み実行されることや重要なサービスのパスワード情報を変更されるリスクを減らせます。根本的には、悪意のあるWEBサイトにアクセスしないことが重要です。
まとめ
大きくわけると、バッファ攻撃・インジェクション・権限起因の脆弱性が多いです。
開発者側は、入力データの検証やエスケープ処理するようには特に気を付けましょう。
利用者側は、怪しいメールのリンクを押さない!これに尽きます。