2019-08-29 Cookpad 夏季就業型インターン成果発表会 成果報告
@hakatashi
(最終成果報告)
実際に動いているアプリケーションに対して
攻撃を仕掛け、脆弱性が存在するかどうか
確認する
インターンでの成果物
対象の
Railsアプリ
DB
③アクセス
を監視
ファイル
システム
攻撃
スクリプト
②攻撃
ペイロード
①静的解析でURLと
パラメーターを取得
④実際に攻撃が発火したか
確認する
レスポンス
(XSSなどを検証)
残念ながらRailsのURLパラメーターは
統一的なインタフェースでアクセスできない。
現在、パラメーターの抽出はRubyのコードをパースして
静的解析で抽出している。
一言で言うとparams変数を見るだけだが⋯⋯
if params[:hoge] == 'fuga'
# ここに脆弱なコードを入力
end
user = User.find_by(id: params[:user_id])
return not_found unless user.present?
# ここに脆弱なコードを入力
if params[:password] == params[:password_confirm]
# ここに脆弱なコードを入力
end
if params[:user][:password].present?
# ここに脆弱なコードを入力
end
class UserController
before_action :set_user
def show
# ここに脆弱なコードを入力
end
private
def set_user
@user = User.find_by(id: params[:user_id])
return not_found unless @user.present?
end
end
%i[user password].each do |keyword|
return bad_request if params[keyword].nil?
end
# ここに脆弱なコードを入力
class UserController
def show
parameters = user_params
# ここに脆弱なコードを入力
end
private
def user_params
params.require(:user).permit(:name, :email)
end
end
パターンが多くて大変!
→rspec-mockのdoubleみたいな手法で
paramsへのアクセスも動的に解析する?