シェア
//セキュアコーディングの概念とDVWAを使った一般的なセキュリティの脆弱性

セキュアコーディングの概念とDVWAを使った一般的なセキュリティの脆弱性

1. 紹介

デジタル化が進む現代社会では、情報セキュリティがプロジェクトの存続と成功に欠かせない要素となっています。セキュアコーディングは、システムをハッカーによって悪用される脆弱性から保護するために重要な方法です。セキュアコーディングは、プログラムが正しく動作するだけでなく、セキュリティホールを排除することを目的としています。

サイバー攻撃とセキュリティ脅威が増加する中で、セキュアコーディングの原則を理解し実践することがますます重要になっています。この記事では、セキュアコーディングの基本的な原則から、セキュリティを強化し、持続可能なソフトウェアを開発するためのベストプラクティスを探ります。

1.1 セキュアコーディングとは?

セキュアコーディングは、ソフトウェア開発中にセキュリティホールを最小限に抑え、排除するための原則と実践のセットです。セキュアコーディングの目的は、ソフトウェアが正しく機能するだけでなく、外部からの潜在的な攻撃に対して保護できるようにすることです。

簡単に言うと、「セキュアコーディング」とは、セキュリティホールを生じさせないようにソフトウェアを開発することです。

経験と知識なしでは、セキュリティホールをイメージしにくいため、次に紹介する「DVWA」という安全な環境で実際に試すことをお勧めします。

1.2 DVWAとは?

DVWA(Damn Vulnerable Web Application)は、一般的なセキュリティ脆弱性をシミュレートするウェブアプリケーションで、セキュリティの専門家や開発者、テスト担当者がウェブアプリケーションのセキュリティについて実践的に学べるツールです。DVWAは、実際のシステムに害を与えることなく、攻撃技術と防御技術を試すための安全な環境を提供します。

1.3 DVWAのインストール

DVWAのインストールは非常に簡単で、次のDocker記事を参考にしてすぐにセットアップできます。こちらの記事をご覧ください。

git clone https://github.com/digininja/DVWA.git
cd DVWA
docker-compose up -d

インストール後、アプリケーションはポート4280で動作します。
デフォルトの管理者アカウント:admin/admin
一般ユーザーアカウント:gordonb/abc123
DVWA login page

アクセスしてログイン:http://localhost:4280/security.php
その後、セキュリティレベルを“medium”に設定します。

DVWA setting page

2. Webアプリケーションでよくあるセキュリティの脆弱性

次に、Webアプリケーションを開発する際によく遭遇するセキュリティの脆弱性について見ていきましょう。

2.1 アクセス制御の欠如 (Broken Access Control)

アクセス制御が不十分で、ユーザーが許可されていない情報にアクセスしたり、データが漏洩したりする脆弱性です。
詳細はこちらを参照してください。

例:
アクセスするには、http://localhost:4280/vulnerabilities/authbypass/を使用します。

このページはユーザー管理ページで、管理者のみがアクセスできます。ログインしたアカウントを一般ユーザーに変更した後、ユーザー管理ページにアクセスできません。

しかし、このページは、http://localhost:4280/vulnerabilities/authbypass/get_user_data.phpというAPIを使用してユーザーデータを取得します。一般ユーザーアカウントでこのエンドポイントにアクセスすると、ユーザー情報が表示されます。

原因: 開発者がAPIアクセス制御を確認していないため、管理者だけが見るべき情報が漏洩してしまいました。

2.2 SQLインジェクション (SQL Injection)

攻撃者がアプリケーションの入力フィールドに悪意のあるコードを挿入し、データの漏洩を引き起こす脆弱性です。
詳細はこちらをご覧ください。

例:
アカウント「gordonb」で、http://localhost:4280/vulnerabilities/sqli/にアクセスします。

「Submit」ボタンをクリックすると、ユーザーID 1の情報が表示されます。

「Developer Tool」を使用して、オプション1の値を次のように変更します:

1 union select version(), GROUP_CONCAT(table_name) AS all_table_names FROM information_schema.tables;--

「Submit」をクリックすると、データベース内のすべてのテーブル情報が表示されます。

原因: 開発者が入力検証を適切に行わず、データを十分にサニタイズしていませんでした。

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

攻撃者が悪意のあるJavaScriptコードをウェブページに挿入し、ユーザー情報の漏洩を引き起こす脆弱性です。XSSは、ブラウザのセキュリティ機構であるSame-origin policyを回避するために使われることが多いです。
XSSには3種類あります:Reflected XSS、Stored XSS、DOM Based XSS。このセクションではDOM Based XSSを取り上げます。

例:
http://localhost:4280/vulnerabilities/xss_d/にアクセスします。

「Select」をクリックすると、URLが次のようになります:

http://localhost:4280/vulnerabilities/xss_d/?default=English

「default」の値を変更してもアプリケーションは内容をそのまま表示します。

http://localhost:4280/vulnerabilities/xss_d/?default=ABC

次に「default」の値を以下のように変更します:

ABC></option></select><script>alert(document.cookie)</script><select>

URLは次のようになります:

http://localhost:4280/vulnerabilities/xss_d/?default=ABC></option></select><script>alert(document.cookie)</script><select>

このエラーが表示されることで、攻撃者は他の方法で悪意のあるコードを実行することができることがわかります。

原因: 開発者がユーザー入力を適切に検証せず、表示時にエスケープ処理を行っていないことです。

3. 結論

上記の脆弱性はすべてユーザー入力を適切に制御していないことに起因します。したがって、開発者として常に覚えておくべきことは、「NEVER TRUST USER INPUT」です。

Nguyễn Hữu Phận
Developer

今すぐ応募







    福利厚生

    給料・ボーナス制度

    社員の感情・願望を理解しているので、リバークレーンベトナムは特に年2回の定期昇給制度を設けています。毎年6月と12月に評価を行い、毎年1月と7月に給与が変更されます。また、社員は月次と年次の優秀な個人には定期的な業績賞与が別で支給されます。

    日本研修制度

    世界中の新しい技術分野に触れるために、社員を日本にオンサイトさせる方針があります。さらに、技術分野か管理分野かのキャリアパスは社員の決定次第です。

    毎年社員旅行

    リバークレイン・ベトナムは、スタッフに挑戦の機会を提供するだけでなく、年に一度の魅力的な旅行で彼らを楽しませています。エキサイティングなガラディナーやチームビルディングゲームは、リバークレインのメンバー同士の絆をさらに深める手助けをします。

    リバークレイン イベント

    チームビルディング・ファミリーデー・お夏休み・中秋節などのイベントはチーム内のメンバーが接続出来るしお互いに自分のことを共有出来る機会です。ご家族員に連携する際にはそれも誇りに言われています。

    社会保険制度

    リバークレーンベトナムは従業員に社会保険、医療保険、失業手当などの社会保険制度があります。当社は、これらの保険に関するあらゆる手続きをスタッフに必ずサポートしています。さらに、他の保険契約も考慮され、検討されています。

    他福利

    社員向けの活動をサポートすることもあります。 ・文化・芸術・スポーツクラブの運営費用 ・技術研究の教科書を購入する金額 ・エンジニア試験・言語能力試験を受験料 ・ソフトスキルのセミナー・コースの参加費 ・等 また会社政策通り、他のベネフィットもあります。

    © 2012 RiverCrane Vietnam. All rights reserved.

    Close