投稿順表示 (51/282)
前のページ 1...46/47/48/49/50/51/52/53/54/55/56...282 次のページ
[4885] Re: 「最近の改竄事件でMicrosoft SQL Serverが狙われる理由」
りゅう (2008年5月15日 23時36分)
SQLは手続き型言語ではないので、大抵のDBMSではストアドプロシージャを定義するための手続き型言語が別途用意されています。それがPL/SQLやPL/pgSQLなどです。それらはストアドプロシージャを定義するためのものなので、ストアドプロシージャの定義以外の部分では使用できません。問い合わせに使用しているのはあくまでもSQLであって、PL/SQLやPL/pgSQLなどの手続き型言語ではないのです。
Transact-SQLではその2つを区別していないというか、問い合わせもストアドプロシージャの定義も、同じTransact-SQLを使って行います。したがって、ストアドプロシージャとして定義する必要があるような手続き的な処理も、単なる問い合わせとして実行できます。
Transact-SQLのインジェクションはもはや任意のプログラムのインジェクションに近いものであり、普通のSQLインジェクションとは異なるものと思った方が良いのかもしれません。
ちなみに複文をMUST要件としているのはUPDATE文のインジェクションの要件としてということになると思いますが(テーブル構造の取得ではMUSTではないので)、複文を使えないシステムでは情報更新系のインジェクションはできないということになるのでしょうか。
[4883] Re: 「最近の改竄事件でMicrosoft SQL Serverが狙われる理由」
徳丸浩(ockeghem) (2008年5月13日 14時9分)
コメントありがとうございます。要するに、複文はMUST要件だが、T-SQLは、より攻撃を容易にするWANT要件だということです。
また、OracleにはPL/SQLがあり、PostgreSQLにはPL/pgSQLがあります。SQL ServerのT-SQLのみが「ストアドプロシージャを記述できるほど高機能」だとは思えません。もっとも、PL/SQLやPL/pgSQLが今回の攻撃の記述ができる・できないまでは検証しておりませんので、これらを検証した上で「SQLインジェクション攻撃には使えない」ということであれば、ぜひご教授ください。Oracleは複文が使えませんので難しいと思いますが、PostgreSQLはできそうに思えます。
[4882] Re: 「最近の改竄事件でMicrosoft SQL Serverが狙われる理由」
りゅう (2008年5月12日 22時35分)
逆に複文が使えれば件の手法の攻撃ができるという訳でもないでしょう。件の手法を使うためには、攻撃対象がクエリー内で組み立てた文字列を新たなクエリーとして実行できる機能を持っている必要があります。調べた限りでは、そのような機能を持っているのはTransact-SQLのexecute文(関数ではなく文でした)のみのようです。
もちろんexecute文に類似する機能を持たないDBMSに対しても全テーブルの全カラムの値を更新する攻撃は可能ですが、SQLインジェクションやUNION攻撃などを行うには技術と手間を必要とします。とにかくクエリーを投げて待つだけで良いのとは雲泥の差があり、そこが狙われる理由となるのではないでしょうか。
[4881] Re: 「最近の改竄事件でMicrosoft SQL Serverが狙われる理由」
徳丸浩(ockeghem) (2008年5月9日 22時49分)
Transact-SQLを使うことで攻撃が簡単になるということは確かにありますが、そのTransact-SQLを使うためにも、複文が必要になるということです。既存のSQLはSELECTとかUPDATEなどの固定のキーワードで始まっており、複文が利用できない状況で後ろの方をいじったとしても、都合よく任意のTransact-SQLの構文にはできないと思います。
一方、Transact-SQLが使えないとしても、複数のSQLインジェクション攻撃を組み合わせることにより、テーブル構造の把握→更新は可能です。テーブル構造の把握には、UNIONインジェクションやブラインドSQLインジェクションが利用可能ですので、「任意の問い合わせ結果が取り出せる都合の良い脆弱性はなかなか存在しない」ということにはなりません。
[4880] Re: 「最近の改竄事件でMicrosoft SQL Serverが狙われる理由」
りゅう (2008年5月9日 17時44分)
SQL Serverが狙われるのは複文が使えるということよりも、Transact-SQLを使えばこの種の攻撃が簡単にできるという点にあるのではないかと思います。
未知のデータベースに対して全テーブルの全カラムの値を更新するということを行う場合、まずテーブルの名前とカラム名を取得して、それを元にUPDATE文を生成し、実行するという手順が必要になります。一般的なSQLでは動的にUPDATE文を生成し実行するということはできないため、テーブルの名前とカラム名の問い合わせ結果を一度入手して、手元でUPDATE文を生成するということを行うことになります。とはいえ、任意の問い合わせ結果が取り出せる都合の良い脆弱性はなかなか存在しないため、この攻撃を成功させるのは難しいはずです。
が、Transact-SQLはストアドプロシージャを記述できるほど高機能なため、前述の手順を単一のクエリーで行うことができます。これであれば、とにかくクエリーを実行させさえすれば攻撃が成功します。攻撃用のクエリーも固定で良いため、自動化も容易です。
通常のクエリーでTransact-SQLのexecute関数のようなものが使えるシステムであれば同様の攻撃を受ける可能性が高いですが、SQL Serverのようにストアドプロシージャの定義ではない部分でそういうものが使えるシステムはそうは無いと思います。
[4879] Re: 「Pマークでもパスワード定期変更は必須?」
だーく (2008年5月4日 20時6分)
パスワードの定期変更を義務づけると、本来なら推測されにくいパスワードをきちんと設定するような人が安易なパスワードを設定した上に付箋紙メモを机の上に貼ってしまうような事ってありませんか?
毎回推測されにくいパスワードを考えるのが大変→安易なパスワードに。
変更する毎に新しいパスワードを覚えるのが大変→付箋紙メモに。
とはいえ、こういったリスクを考えても同じパスワードを使い続ける方が危険だということだと思いますが。
[4878] Re: 「Pマークでもパスワード定期変更は必須?」
えむけい (2008年5月4日 7時10分)
つまりセキュリティ上の理由ですか【謎】。ちなみにパスワード変更の期間はやはり別途定められているのでしょうか【謎】。
[4877] Re: 「バターがない」
Niimi (2008年5月1日 21時0分)
私の好きな「雪印6P(チーズ)」も、最近は妙に薄くなってます。(;o;)
バイオ燃料の影響で飼料が高騰した関係で、乳製品全般が全世界的に品薄→値上がりしているようですね。
[4874] Re: 「バターがない」
頭文字R (2008年4月28日 12時59分)
[4873] Re: 「不正データによる終了時のステータスコードで悩む」
りゅう (2008年4月24日 18時17分)
>単純に、400 「Bad Request」 ではいけませんか?
400系のステータスはクライアントが原因のエラーを示すステータスですが、たとえばサーバ内部で使用していているデータファイルの内容がアレだったとか、データベースから取得したデータがアレだったという場合はクライアントが原因とは言えないので400系はふさわしくないと思います。
ちなみに 400 Bad Request はリクエストのシンタックスが不正なことを示すステータスなので、内容が不正という場合には使えないはずです。
[4872] Re: 「くりきんは危険かも」
ジン (2008年4月24日 13時52分)
始めまして、僕の固有キンは、ドラゴファージです それと、名前じぁキンは変わりませんなぜなら、同じ名前でもDSを変えればキンはかわります
[4871] Re: 「くりきんは危険かも」
クルリバーシ (2008年4月23日 18時20分)
くりキン危険かもさんドラゴファージほしいと結っていましたよね 僕がやったらできました 名前はファイヤーで性別は男でできましたやってもやらくてもいいです