Hello there, ('ω')ノ
まず結論:すべてを読む必要はない!
脆弱性チェックで見るべきは、以下のような部分です:
- 入力を受け取る場所
- データベースにアクセスする場所
- ファイル操作する場所
- 認証・認可を管理する場所
見つけやすい脆弱性パターン一覧
✅ 1. 入力チェック漏れ
例:
username = request.GET['user']
- 何もフィルターせず、そのまま使っている
- XSSやSQLインジェクションの温床
✅ 2. ハードコードされた秘密情報
例:
SECRET_KEY = "abc123" DB_PASSWORD = "password123"
- ソースコード内にAPIキーやパスワードがそのまま書かれているケース
✅ 3. ファイルアップロード機能周り
- 拡張子チェックがない
- サイズ制限がない
- アップロード先が誰でもアクセスできる場所になっている
✅ 4. 認証処理の簡略化
- if password == "admin": のような固定値チェック
- 管理者用URLがアクセス制限されていない
✅ 5. デバッグ用コードやコメント
例:
# TODO: 本番前に削除 # 開発用バックドア有効中
- 意図せずそのまま本番環境に残っているケース
よく使う単語ベースで探す方法
非エンジニアの方でも以下のような単語を検索すれば、怪しい箇所を発見しやすくなります。
- password
- secret
- key
- upload
- admin
- debug
- token
実際の社内チェック例
① ソースコードを開く(GitHubやファイルサーバー上) ② 検索機能(Ctrl + F)で上記キーワードを探す ③ 見つけた箇所を開発担当者に確認する
例:
- ソース中に「DB_PASSWORD」がハードコードされていた
- URLリストに「/admin」や「/test」が含まれていた
チェックリストまとめ
- [ ] 入力値チェックが実装されているか?
- [ ] ハードコードされたパスワードや秘密情報がないか?
- [ ] ファイルアップロード周りの制限が適切か?
- [ ] 認証処理が固定値など単純すぎないか?
- [ ] デバッグ用コメントやテスト用コードが残っていないか?
まとめ:ソースコードは宝の山
- すべてのコードを読む必要はなし
- キーワード検索と目視チェックだけでも脆弱性発見につながる
- 気づいたら開発チームに共有する習慣を
Best regards, (^^ゞ