WEB SYSTEM UPGRADE × SECURITY REMEDIATION

古いWebシステムを、
安全な最新環境へ。

サポートが終了した PHP やフレームワークのまま稼働している既存Webシステムを、最新の安全な環境へ段階的にアップグレード。同時に、Việt Vang が自社開発した診断ツールでソースコード全体の脆弱性を洗い出し、修正・再診断まで一貫して対応します。

対応例:
Laravel
CodeIgniter
その他 PHP フレームワーク
PHP 本体・サーバー環境

導入実績(Laravel 案件):4システム同時アップグレード

362
→
0

検出された脆弱性・不具合(修正前 → 修正後)

254,975
診断対象のコード行数
1,627
対象ファイル数
0 件
アップグレード後の新規不具合
8 → 11
Laravel(PHP 7.x → 8.3)

01 / CHALLENGES

こんな課題はありませんか?

サポート終了のまま運用

PHP 7系や古いバージョンのフレームワーク(例:Laravel 8)はすでに公式サポートが終了。新たな脆弱性が見つかっても修正が提供されません。

中身が把握できていない

開発当時の担当者が不在で、どこにどんなリスクがあるのか分からない。

更新で壊れるのが不安

バージョンを上げると既存機能が動かなくなるのでは、と手を付けられない。

診断と修正が別々

外部の脆弱性診断は報告書で終わり。指摘された箇所の修正は別途手配が必要。

02 / OUR OWN TOOL

Việt Vang 独自開発の診断ツール
「VV Laravel Checker」

Laravel の実案件を数多く手がけてきたエンジニアが自社開発した、品質・セキュリティ診断ツールです。汎用スキャナでは見逃しやすい Laravel 特有の書き方(ルート定義、Gate / Policy、Blade テンプレート、Eloquent)まで踏み込んで解析し、「どこが・なぜ危ないのか・どう直すか」を明確にします。

FEATURE 1

OWASP 準拠の独自ルール

アクセス制御の不備、他人のデータを操作できる IDOR、XSS、SSRF、オープンリダイレクト、CSRF、設定不備、危険なコードなどを Laravel 向けに検出。

FEATURE 2

複数チェックを一括実行

独自ルールに加え、依存ライブラリの既知脆弱性(composer audit)、PHPUnit、静的解析(PHPStan / PHP_CodeSniffer)を一度に実行します。

FEATURE 3

優先度つき対応計画

重大度(Critical / Error / Warning / Info)と対応優先度(P0〜P3)で整理。Quality Score とリリース可否(Release Gate)を自動判定します。

FEATURE 4

修正前後を数値で証明

修正前と修正後の診断結果をルール・ファイル単位で照合。「直った件数」「残件」「新たに発生した件数」を明確に報告します。

主な検出ルール

BROKEN_ACCESS_CONTROL
OWNERSHIP_IDOR
BLADE_XSS
SSRF
OPEN_REDIRECT
CSRF
SESSION_FIXATION
MISCONFIGURATION
WEAK_PASSWORD_POLICY
UNSAFE_EVAL
OBFUSCATED_PHP
ROUTE_MISSING_VALIDATION

実際の診断レポート

ブラウザで閲覧できる HTML レポートを毎回出力します(画面はプロジェクト名を伏せた実例)。

BEFORE
修正前:84件検出 ・ Score 79/100 ・ リリース不可

修正前の診断レポート画面。合計84件、Critical 2件、Error 47件、Quality Score 79/100、Release Gate BLOCKED

AFTER
修正後:0件 ・ Score 100/100 ・ リリース可

修正後の診断レポート画面。検出0件、Quality Score 100/100、Release Gate PASS

03 / CASE STUDY

導入実績:稼働中のビジネスマッチングサービス(Laravel)

サービスを止めずに、4つのソースコードを Laravel 8 → 9 → 10 → 11、PHP 7.x → 8.3 へ段階的に移行。並行して VV Laravel Checker による診断と修正を行い、修正前後を同じ条件で再診断して検証しました。

PROJECT PROFILE

日本企業が運営する
ビジネスマッチング Web サービス

企業同士の出会いと商談をつなぐプラットフォーム。現在も本番稼働中で、世界各国の企業ユーザーに日々利用されています。

利用者向け(フロントエンド)
世界中の企業ユーザーが閲覧・登録・やり取りを行う公開サイト
運営者向け(バックエンド)
運営スタッフが企業情報・データ取込・各種設定を管理する管理画面
ステータス
本番稼働中・グローバル利用
対象
4ソース・約25.5万行(PHP+Blade)
362 → 0
検出件数(修正前 → 修正後)
0 件
アップグレード後の新規不具合
254,975
診断したコード行数(PHP+Blade)
1,627
対象ファイル数

システム別の検出件数

システム修正前の検出件数修正後
プロジェクトA
86,927 行

103

0

プロジェクトB
74,727 行

80

0

プロジェクトC
44,752 行

95

0

プロジェクトD
48,569 行

84

0

重大度別の内訳(4システム合計)

Critical(致命的)4 → 0
Error(重大)175 → 0
Warning(警告)169 → 0
Info(情報)14 → 0

※ 一部の指摘は、影響範囲を確認したうえで設定ファイル上で明示的に除外管理(理由を記録)しています。除外項目もレポートで追跡可能です。

04 / FIX EXAMPLES

検出して、実際に直します

診断で終わらず、検出された箇所をエンジニアが修正します。以下は実案件での修正例です(コードは説明用に簡略化)。

OWNERSHIP_IDOR

他社のデータを削除できてしまう

IDを書き換えるだけで他のサプライヤーの価格表を削除可能だった箇所に、所有者チェックを追加。

- $item = PriceList::find($request->id);
- $item->delete();
+ $this->authorize('ownsSupplierResource', [PriceList::class, $id]);
+ $item = PriceList::query()
+     ->where('id', $request->id)
+     ->where('supplier_id', Auth::user()->supplier->id)
+     ->first();
+ $item?->delete();
BROKEN_ACCESS_CONTROL

ログインなしで使える画面・API

データ取込などの重要なルートに認証がかかっていなかったため、認証と権限チェックを追加。

- Route::get('/import_supplier',
-     [ImporterController::class, 'importSupplier']);
+ Route::get('/import_supplier',
+     [ImporterController::class, 'importSupplier'])
+     ->middleware('auth');
+ // Controller 側: $this->authorize('runLegacyImport');
BLADE_XSS

画面への不正スクリプト埋め込み(XSS)

エスケープなしで出力していた管理画面のテンプレートを、安全な出力方式に一括修正。

- <a href="{!! url('detail/' . $item->id) !!}">詳細</a>
+ <a href="{{ url('detail/' . $item->id) }}">詳細</a>
OPEN_REDIRECT

安全でないリダイレクト

URL文字列を直接組み立てていたリダイレクトを、許可リストで検証する共通クラスに統一。

- return redirect('/404');
- return redirect('/detail-company.html/' . $id);
+ return SafeRedirect::toNotFound();
+ return SafeRedirect::toRoute('buyer.detail', ['id' => $id]);

このほか、CORS のワイルドカード設定の是正、パスワードポリシーの強化、/phpinfo の公開停止、危険な eval を含む古いライブラリ(約2,300行)の撤去なども実施しました。

05 / SERVICE SCOPE

調査からリリース後の監視まで、ワンストップで

01

現状調査・暫定対応

本格的な更新の前に、すぐ効く対策を実施。php.ini の安全化(バージョン情報の非表示、セッションの厳格化など)、上限値の適正化、ログイン・アップロードへのアクセス制限。

02

PHP 8.3 への更新

コンテナイメージを再構築し、データやボリュームを維持したまま入れ替え。バージョン確認と疎通テストまで実施。

03

フレームワークの段階更新

Laravel・CodeIgniter など、各フレームワークの公式アップグレードガイドに沿って 1バージョンずつ確実に移行(例:Laravel 8 → 9 → 10 → 11)。依存ライブラリの更新と、メール・ファイルストレージ・設定まわりの互換性修正。

04

セキュリティ診断・修正

独自の診断ツール(Laravel 案件では VV Laravel Checker)で修正前を診断し、検出項目を修正。修正後に再診断し、残件ゼロ・新規発生ゼロを確認してレポートします。

05

認証情報・権限の整備

DB 接続情報や .env の秘匿化、ファイル権限の是正(全開放の 777 権限の撤廃など)、接続設定の見直し。

06

回帰テスト・リリース・監視

ログイン、CSV取込、メール送信、アップロード、出力など主要機能を回帰テスト。メンテナンス時間内に本番反映(15分で切り戻せる体制)、リリース後1〜2週間のログ監視。

06 / SCHEDULE

標準スケジュール:10営業日

体制:開発 2名 + テスト 1名(Laravel・2アプリ構成の事例。フレームワークや規模により変動します)

作業D1D2D3D4D5D6D7D8D9D10
暫定対応

DB・公開ファイル整備

PHP 8.3 更新

認証情報・権限整備

フレームワーク段階更新

先行テスト

回帰テスト・修正

本番リリース・監視開始

07 / PRICING

料金の目安

参考例:2アプリ構成(PHP 更新+Laravel 8 → 11)の場合

約
US$2,500
〜

約15人日 ・ 単価 US$170 / 人日

※ 実案件の見積りをもとにした参考価格です。フレームワークの種類、ソース規模、バージョン、インフラ構成により変動します。セキュリティ診断のみのご依頼や、修正範囲のご相談も承ります。初回のご相談・概算見積りは無料です。

項目工数(人日)
現状調査・暫定対応1.5
PHP 8.3 更新2.0
Laravel 8 → 11 段階更新5.0
認証情報・権限の整備1.0
回帰テスト・不具合修正2.0
本番リリース・監視2.0
プロジェクト管理(全体の10%)1.35
合計14.85 人日 = US$2,524.5

08 / WHY VIỆT VANG

Việt Vang が選ばれる理由

自社ツールによる客観的な品質保証

担当者の勘に頼らず、同じ基準で修正前後を診断。成果を数値とレポートでお渡しします。

日本企業とのセキュリティ案件実績

日本の政府系企業のWebサイト情報セキュリティ診断や、日本・ドイツ企業向けシステム開発の実績があります。

診断から修正・運用までワンストップ

報告書だけで終わらず、修正・テスト・本番リリース・監視まで同じチームが責任を持って対応します。

まずは無料相談から

現在の PHP・フレームワークの種類とバージョン、おおよそのソース規模をお知らせください。対応範囲・期間・費用の目安をご提案します。

お問い合わせフォームへ

TEL:+84 28 6265 1411
CHUAN VIET VANG JSC
7-9-11 Tran Xuan Hoa Street, Ho Chi Minh City, Vietnam