第 2 回セキュアコーディング勉強会まとめ

13
1 第 2 第第第第第第第第第第第第第第第第第 第第第第第第第第第第第第第 第第第 第第第第第第第第

description

第 2 回セキュアコーディング勉強会まとめ. セキュアコーディング勉強会      まとめ まっちゃだいふく. はじめに. セキュアコーディング勉強会 第弐回 日付: 2008 年 05 月 30 日(金曜日) 時間: 19 時 15 分~ 21 時 15 分 場所: アバンティホール会議室 Perl の Taint モード( AzureStone ) RealVNC から学ぶローカライズのセキュアコーディング( hashy ) - PowerPoint PPT Presentation

Transcript of 第 2 回セキュアコーディング勉強会まとめ

1

第 2 回セキュアコーディング勉強会まとめ

セキュアコーディング勉強会     まとめ まっちゃだいふく

2

はじめに セキュアコーディング勉強会 第弐回

日付: 2008 年 05 月 30 日(金曜日) 時間: 19 時 15 分~ 21 時 15 分 場所:アバンティホール会議室

Perl の Taint モード( AzureStone ) RealVNC から学ぶローカライズのセキュアコーディング

( hashy )

  今回も全体を通して、アットホームな雰囲気な会でした。

参加者が、発表者の内容や技術的フォローを行ったり、経験談を話して頂いたり、こたつを囲んでいる雰囲気な勉強会でした。

3

Perl の Taint モードについて#1 問題提起者: AzureStone 安全にプログラムを動かすには?

Perl には標準で Taint モード(汚染モード)という機能が内包されている ソースの一行目(シェバング)で -T を付けると利用可能

#!/usr/bin/perl -T 実行プログラムの外部から来たデータはすべて汚染されていると判断して

処理する (プログラムによるセキュリティ強化ガイドにて知った) 例えば Web アプリケーションの場合で入力って?

クエリストリング( POST/GET/Cookie とか ) ※ 厳密言うとこれも環境変数

環境変数 セッション ID(※ 厳密に言うとこれも cookie もしくは GET Request) データベース( DBI)… ファイルハンドル use hogehoge; → @INC ( Perl ライブラリの検索パス) 特殊変数

その他のアプリケーションまたプログラム system 関数に渡す引数→ system(“cat /etc/hosts”); 環境変数 ファイルハンドル

4

Perl の Taint モードについて#2 ユーザが入力したデータにしか目がいっていなかったり・・・

作っている場合、ユーザ入力データにしか目がいかなかったりする

汚染されているなら、除去せよ 環境変数で foreach で回すと色々みれる 使わない物は、 delete $ENV{PATH} したりする

使う PATH を設定する Taint モードは万能?

正規表現なので、間違えるとダメ Taint モードを実行すると関連モジュールが動かない場合がある

use IO::Handle; use POE;

Taint モードで動かなかったら?! BEGIN{} 句を使用する (※ 動的パッチとして扱う ) Tripletail で作っていたが、 Taint モードで動作しなかったが、作者に

対応してもらえた! モジュールで対応してもらった(除去コードや検査コードを作者に連絡した) 結果 Tripletail は Taint モードで動くようになった

5

Perl の Taint モードについて#3 質疑応答

Redhat とか CentOS は最初に入っている Vim は省略版、リッチ版を入れると HAPPY になれるw

Mail=~○○ の正規表現を .* にしたらどうなるのか? 正常終了!( Taint チェックを外れる) Taint チェックは機械的チェックを挟んでいるかしかチェッ

クしない 続きは、 perldoc perlsec で!!!

どうすれば Tainted かどうか、 Taint でなくなるかが記述されてる 機械的な処理チェックなので、正規表現にマッチであればチェッ

クは通過する use Safe; もあるらしいが AzureStone さん勉強中(ラクダ本) 出力段階のチェックも必要

シェバングな注意点w #!/usr/bin/perl –w とかはまだ良い #!/usr/bin/perl –U とかある… .

-U は -T の反対 -U のプログラムはプログラマを信用しない方がよい

6

Perl の Taint モードについて#4 以前 CGI では #!/usr/bin/perl -T を付けるのが一

般的との話があった 昔は、 #!/usr/bin/perl -w –T を付けましょうと言って

いた #!/usr/bin/perl -w は use warning; と同じ意味

次回以降の AzureStone さんの課題 use Safe; とか IO::Handle; とか BEGIN の書き方とか

7

Perl の Taint モードについて#補足 「セキュアコーディング勉強会 第弐回で勉強してきまし

た。 - AzureStone SecureCoding memo - セキュアコーディング」http://securecode.g.hatena.ne.jp/azurestone/20080603/1212156333

プログラミング Perl 第 3 版 VOLUME 2 http://www.oreilly.co.jp/books/4873110971/

Safe - Compile and execute code in restricted compartments - search.cpan.org http://search.cpan.org/~rgarcia/Safe-2.16/Safe.pm

perlsec - perldoc.perl.org http://perldoc.perl.org/perlsec.html

8

RealVNC から学ぶローカライズのセキュアコーディング#1 講師: hashy ローカライズとは

各国の環境に合わせた変更行うこと 一般的なローカライズはメニュー・画面・ヘルプを母

国語に翻訳すること 必要に応じてソースコードを修正すること

RealVNC では・・・ 英語環境では動くけど日本語環境では問題がある

MacOSX の場合 “ パッケージの内容を表示“すると、 Resource の中にリソース情報が入って

いる English.lproj をコピーして japanese.lproj にする ダイアログや文字情報が入っている Preference を見ると英語の情報が出てくる ラベルを変えてやると変更可能 Interface Builder で動かす

Windows の場合 ResouceHacker で実行状態のリソース情報を編集可能 リソース情報を変えているだけ

9

RealVNC から学ぶローカライズのセキュアコーディング#2 RealVNC のローカライズ

プログラムが国際化されていない RealVNC でクリップボードの対応

なぜか、クリップボード転送する内容が ASCII コードでフィルタリングされている

RealVNC をサービスとして登録して実行することで、 RealVNC を管理者権限で実行可能?

JVN で見ても脆弱性情報ないなぁ・・・・ 日本語パッチでは ASCII コードフィルタリングを外してい

る影響は???

日本語をコピペしたい・・・・ Shift_jis だけどそのままでよい?

クライアント・サーバ双方にエンコーディング情報を持っていないといけない・・・

VNC は X プロトコルを Windows 同士でもできることが前提

10

RealVNC から学ぶローカライズのセキュアコーディング#3 まとめ

国際化するときには注意 便利性と脆弱性 日本語環境対応パッチの危険性(特にリソースだけを

いじっている場合) パッチ公開されている場合はソースを読める人はソー

スを読んでみんなでいいものを作っていきましょう 管理者権限で動作するプログラムに対する改変はリス

クを伴う

11

参考情報 第二回セキュアコーディング勉強会に参加したよ

- Hatena::Group::securecodetri::hashy1126 - セキュアコーディング http://securecode.g.hatena.ne.jp/

hashy1126/20080601/1212302480

資料 http://hashy.jp/slide/20080530securecode_locari

ze.pdf

12

セキュアコーディング勉強会について 「セキュアコーディング」

http://securecode.g.hatena.ne.jp/

セキュアコーディング勉強会 第壱回 http://securecode.g.hatena.ne.jp/keyword/

2008%2d03%2d21

セキュアコーディング勉強会 第弐回 http://securecode.g.hatena.ne.jp/keyword/

2008%2d05%2d30

13

最後に 今回の講師、 hashy さん、 AzureStone さんあ

りがとうございました。 また金曜日夜という時間帯の中参加いただいた皆

様ありがとうございました。

次回は、 2008 年 07 月頃に予定していますのでよろしくお願いいたします。