ketyiaの学んだこと議事録

このサイトでは学んだことを記事にまとめていきます

ウェブ・セキュリティ基礎試験(徳丸試験)の勉強 ⑳構造化データ

ウェブ・セキュリティ基礎試験(徳丸試験)の勉強 ⑲ファイルインクルード攻撃


こんばんわ!
世間では徳丸試験といわれている、ウェブ・セキュリティ基礎試験に挑戦しようということで、いつものごとくアウトプットで記事にまとめていきます。

今回は第二十回目の構造化データについてまとめます。

evalインジェクション


外部から送り込んだスクリプトを実行される脆弱性です。

影響は下記です

・情報漏洩

・サイト改ざん

・不正な機能実行

・踏み台

・マイニング

対策は下記です

・evalに相当する機能を使わない

・引数には外部からのパラメータを含めない

・外部からのパラメータを英数字に限定する

安全でないデシリアライゼーション


シリアライズとは、複数の要素を一列に並べる操作や処理のことで、特にプログラムの実行状態や複雑なデータ構造などを一つの文字列やバイト列で表現する「直列化」を指すことが多い。具体的には、実行中のプログラムが扱う複雑な構造を持つデータ集合や、メインメモリに展開されているオブジェクトなどのある瞬間の状態などを、特定のデータ形式や変換規則などに基づいて丸ごと単一のデータ列で表現することを指します。シリアライズされたデータはストレージで永続的に保存したり、ネットワークを通じて別のコンピュータに伝送することができます。

一方、デシリアライゼーションはその逆の処理で、シリアライズ処理により一つの文字列やバイト列に変換されたデータを、元の複合的なデータ構造やオブジェクトに復元することを指します。シリアライズされたデータをソフトウェアから呼び出して利用する際に必要となります。シリアライズ処理とデシリアライズ処理はほぼ必ずセットで定義されており、ある関数やメソッドなどでシリアライズされたデータは、対応するデシリアライズ用の逆変換コードによって復元することができます。

このデシリアライゼーションが安全でないとOSコマンドインジェクションと同様の被害が想定されます。

対策は下記です

シリアライズ・デシリアライゼーションを使用しない。JSON等で代用する。

・デシリアライズ処理には外部パラメータを使用しないで、クッキーやhiddenパラメータでなくセッション変数など書き換えできない形でシリアライズ形式のデータを受け渡す。

XML外部実体参照(XXE)


XMLデータを外部から受け取るプログラムは、外部実体参照の形でWebサーバー内部のファイルなどを不正に読み取られる可能性があります。

影響は以下です

・情報漏洩

・踏み台

対策はXMLの代わりにJSONを使用する等があります。

ここまでです。
読んでいただきありがとうございます