以下の内容はhttps://cysec148.hatenablog.com/entry/2025/07/15/070116より取得しました。


第11回 ソースコードを読む:脆弱性が見つかりやすい箇所一覧

Hello there, ('ω')ノ

まず結論:すべてを読む必要はない!

脆弱性チェックで見るべきは、以下のような部分です:

  1. 入力を受け取る場所
  2. データベースにアクセスする場所
  3. ファイル操作する場所
  4. 認証・認可を管理する場所

見つけやすい脆弱性パターン一覧

✅ 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, (^^ゞ




以上の内容はhttps://cysec148.hatenablog.com/entry/2025/07/15/070116より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14