ハニカムウエアのブログ

ハニカムウエアのブログ

システム開発、セキュリティ対策についての記事を書いています。

脆弱性に関するまとめ(2015年11月)

少し遅くなってしまいましたが11月の脆弱性件数は36件でした。
JVNでは複数脆弱性を1つの報告としてまとめている為、報告件数は26件です。
証明書やパスワードの管理に関する脆弱性が多い月でした。
※「Japan Vulnerability Notes(https://jvn.jp/)」を元に集計しています。

f:id:honeycomware_inc:20151226005535p:plain

(凡例の補足)
 XSSクロスサイトスクリプティング
 XSRFクロスサイトリクエストフォージェリ

f:id:honeycomware_inc:20151226005558p:plain

弊社ホームページにセキュリティ対策用ソリューションなど掲載していますので、ぜひご覧ください。

http://www.honeycomware.jp/

 

フィッシングメールにご注意!

11月から銀行を語るフィッシングメールに関する情報が数多く出ています。
2015年11月12日 ジャパンネット銀行
2015年11月30日 住信SBIネット銀行
2015年12月03日 横浜銀行
2015年12月04日 セブン銀行
2015年12月15日 ゆうちょ銀行
2015年12月21日 千葉銀行
2015年12月21日 イオン銀行
2015年12月24日 じぶん銀行

筆者には、住信SBIネット銀行セブン銀行じぶん銀行を語ったメールが来ていますので掲載しておきます。
HTMLメールを禁止にしているからでしょうか?文面を見る限り引っかかりようがないのですが、間違ってクリックという事も絶対にないとは言い切れませんので十分注意して下さい。

※フィッシング対策協議会(https://www.antiphishing.jp/)にも本文が掲載されていますので確認してみて下さい。

f:id:honeycomware_inc:20151225233138p:plain

f:id:honeycomware_inc:20151225233135p:plain

f:id:honeycomware_inc:20151225233128p:plain

ハニカムウエアのセキュリティ対策

f:id:honeycomware_inc:20170106123715j:plain

Javaでいう拡張for文について

セキュリティの記事は定期的に書いているのですが、そろそろ本業の開発についても触れていかないとなぁと思い何を書こうか迷っていましたが、複数言語の案件が同時に走っているとたまに混乱してしまう事がありましたので、備忘録としてまとめておこうと思います。

第1回目はタイトルにも書いてある通り、for文について書いていきます。

JavaPHPの開発を同時にやっている時に両方Eclipseを使っていて、頭ではわかっているのですが、PHPのコードにJavaのコード書いてたりしました。私がおっちょこちょいなのかもしれませんが・・・。

Java
 for (データ型 変数名 : 配列またはコレクション){
  処理;
 }

 

C#
 foreach(データ型 変数名 in 配列またはコレクション)
  処理;
 }

 

PHP
 foreach (配列 as $変数名){
  処理;
 }
 unset($変数名);

 

VB
 For Each 変数名 As データ型 In 配列またはコレクション
  処理
 Next

 

JavaScriptjQuery
 $.each(配列, function(インデックス変数, 値) {
  処理;
 });

 

最後まで読んで頂きありがとうございます。
JavaC#JavaScript以外はめったに使う事がないので「これ変だよ」と思ったらご指摘頂ければ幸いです。また他の言語について「この言語はこうだよ」と教えて頂ければ大変勉強になります。

SQLもデータベースによって方言があるので、そちらはインフラ担当のロボ2号くんにお任せしたいと思います。(1号って誰だろう・・・)

弊社ホームページもぜひご覧ください。

f:id:honeycomware_inc:20170106130819j:plain

脆弱性に関するまとめ(2015年10月)

10月の脆弱性件数は61件でした。

JVNでは複数脆弱性を1つの報告としてまとめている為、報告件数は37件です。

証明書やCookie、SessionなどWEBサイトやWEBアプリケーションに関する脆弱性が目立ちました。

※「Japan Vulnerability Notes(https://jvn.jp/)」を元に集計しています。

f:id:honeycomware_inc:20151107205515p:plain

(凡例の補足)

 XSSクロスサイトスクリプティング

 XSRFクロスサイトリクエストフォージェリ

 インジェクション関連:SQLLDAP

 ○○トラバーサル:ディレクトリトラバーサルパストラバーサル

f:id:honeycomware_inc:20151107205517p:plain

弊社ホームページにセキュリティ対策用ソリューションなど掲載していますので、ぜひご覧ください。

http://www.honeycomware.jp/

Oracle tips:SQL*Loader 制御ファイル、外部表作成における文字コードの注意事項

こんばんは、インフラ担当のロボ2号です。
最近、Oracle12c で少し嵌った事がありましたので、備忘録もかねてご紹介します。

# 制御ファイルと外部表を作成する SQL文の文字コード

ある案件で SQL*Loader を使用する機会があり、入力ファイルはUTF8でした。
データベースの文字コードセット(DB CHARACTERSET)はJA16EUCでしたが
ファイルサイズが巨大なため、変換は Oracle に任せることとしました。

# SQL*Loader が動かない!

で、制御ファイルを作成してテストをしたところ、いくつかのテーブルですが
SQL*Loader がエラーも返さず固まるという事象に出くわしました。
プロセスのシステムコールを見ても何かを待っている様子で処理がずっと
ループしており、Oracle の専用サーバプロセスを見ても
SQL*Net message from client イベントで待機しており応答待ちになっていました。

Oracle に詳しい方に相談したところ、このような現象は
はじめてとの事でしたが日本語(マルチバイト)があるので表名や列名は "" で括る方が
安全ですよ、とアドバイスを頂いたので早速変更しました。(そりゃそうですよね)

# 少し前進

早速変更したところ、処理は動くようになりましたがあいかわらず
エラーが出て処理ができません。その日はあきらめて早々に帰宅しました。
翌日、もう一度眺めてみたところ、おかしな現象が出るテーブルにはある共通点が
ありました。

# UTF8 と EUC では使える日本語の文字数が異なる

それは、テーブル名や列名に「11文字以上の日本語」があるテーブルでのみ
処理がおかしくなっていた、というものでした。制御ファイルもなぜか
UTF-8 で作っており、環境変数の NLS_LANG を JAPANESE_JAPAN.AL32UTF8 と
していたせいで、日本語をテーブル名や列名に設定する際の「文字数」が
10文字に制限される事に気が付いていませんでした。orz

内部的な処理までは分かりませんが、"" がない場合に固まるのは
テーブル名、列名を格納する変数に対して制御ファイルで指定している日本語部分が
バッファを超えてしまい、動きがおかしくなっていたのかもしれません。
"" で括ることによって、読み込みまでは動くものの、UTF-8 で許容される長さを
超えたテーブル名や列名があるため、やはり処理がおかしくなっていたのではないでしょうか。

# 外部表の定義でも同様の注意が必要

外部表の作成にあたっては列定義の他に ACCESS PARAMETERS 句の
FIELDS パラメータにも列の名称を記載します。この SQL文にもなぜか
UTF8 のファイルを使用して NLS_LANG=JAPANESE_JAPAN.AL32UTF8 として
処理していたせいで、SQL*Plus から外部表をアクセスした際に
本来は適切に読み込める筈の列でエラーが起きて、大量に bad ファイルが
出力されていました。

# まとめ

SQL*Loader 制御ファイル、外部表作成のSQL文の文字コード
 DB_CHARACTERSET と同じにしましょう。
 せめてマルチバイト文字のバイト数が同じ文字コードセットにすべきです。
・使用する OS の環境にあわせてやむなく変える場合、表や列の定義に
 マルチバイト文字を使用しているときは、AL32UTF8 だと
 使用できる文字数が減ることで、処理が動かなくなる可能性があります。

なぜか制御ファイルも UTF8 で作成したばっかりに
無駄な苦労をする羽目になりました。(^_^;

普通の方は私みたいに変な事をしないので、このような羽目にならないとは思いますが
Oracle 12c をご利用の際、同じ目に逢わぬようにご注意くださいね。

参照:
SQL*Loader制御ファイル
Oracle® Databaseユーティリティ 12c リリース1 (12.1.0.2) B71303-05
 http://docs.oracle.com/cd/E57425_01/121/SUTIL/toc.htm
 目次から、下記の節をご覧ください。
  7 SQL*Loaderの概念 ⇒ SQL*Loader制御ファイル
  15 ORACLE_LOADERアクセス・ドライバ



それではまた!

WindowsUpdateについて

今月からWindowsUpdateについて掲載していきます。

処々の問題により、WindowsUpdateを実施していないお客様が意外と多いのも、また事実です。かくいう私も毎度面倒だなと思っている側の一人なのですが、アップデートプログラムの中にはセキュリティに関する重大なものも紛れており、放置にはリスクが伴いますので、弊社のお客様には、公開後に必ず適用に関するご検討をして頂くよう、お願いしております。

総件数月平均重要警告緊急
2013年 106 8.8 53 0 42
2014年 85 7.0 64 3 29

※詳細はMicrosoft社のページをご参照ください。

上記の表は2013年と2014年に発生したアップデートプログラムの数を表しているのですが、個数×時間分だと思うと、確かに手間ですね。しかし、セキュリティとのトレードオフ、背に腹は変えられません。是非ともこまめにご実施頂くことをご推奨致します。

ただ、 私にような技術者が面倒に感じるくらいなので、ご多忙なビジネスマンの方が、 放置するのも頷けます。やはりルールの明確化や社内通知が必須ですね。

実はこのような細かな部分を再認識し、運用ルールを見つめなおしていくことも、企業の情報セキュリティに対する重要な対策の一つとなります。

弊社では、お客様のリスク軽減の一助になればとWindowsUpdate情報をデータベース化しております。 ご興味のある方は、弊社HPからご連絡をお願い致します。 

Shell script tips: 区切りファイルの内容確認

おはようございます、インフラ担当のロボ2号です。

UNIX/Linuxシェルスクリプトは準備なしに動かせるのでちょっとした事を試すには最適ですよね。ビルドは不要、デバッグもスイッチ一つで行えます。(bash -x <スクリプトファイル>)

今日は、特定の区切り文字で構成された可変長ファイルの内容を

さっと確認する方法について記載してみます。

CSV のような囲み文字や区切り文字のエスケープの事は考慮していませんが

列が多く、目で識別するには面倒なファイルの確認などに便利です。

ファイル:| (パイプ) で区切られた可変長テキストファイ

何かの電文だと思ってください。

ここでは sample.txt というファイル名とします。シェルは bash です。

 



# 何列目の項目かを目で確認するのは大変ですが、縦に表示すれば一目瞭然ですね。

それではまた。 

 

 

脆弱性に関するまとめ(2015年09月)

9月は脆弱性の件数は69件でした。

JVNでは複数脆弱性を1つの報告としてまとめている為、報告件数は41件です。

 前月に引き続き「XSS」「XSRF」が目立っています。また今月に入りインジェクション関連の脆弱性が多く報告されています。

 ※「Japan Vulnerability Notes(https://jvn.jp/)」を元に集計しています。

f:id:honeycomware_inc:20151001133306p:plain

(凡例の補足)

 XSSクロスサイトスクリプティング

 XSRFクロスサイトリクエストフォージェリ

 インジェクション関連:SQL、OSコマンド、コード、XML

f:id:honeycomware_inc:20151001133304p:plain

弊社ホームページにセキュリティ対策用ソリューションなど掲載していますので、ぜひご覧ください。

http://www.honeycomware.jp/

インフラ系:UNIX/Linux 管理スクリプトの基本構成 vol.2

こんばんは、ハニカムウエアのインフラ担当のロボ 2号です。

前回、「ことば」であらわした処理内容をシェルスクリプトのサンプルとして

記載してみたいと思います。

 

実際には実に多くの方法があると思いますので、一つのサンプルとしてご覧ください。

 ----

私が良く使うのは以下のような形式です。

あまり難しいコマンドや記述がないため、覚えやすく読みやすいのでよく使っています。

while は別プロセスを使用(forkして動作)するため、while の中で設定した変数はループ処理の外では

使用できませんが、個人的に for 文より使いやすいのでこちらにしています。

 

スクリプトは sh(B shell), csh, bash 等のシェルスクリプトperl, python など

別途インストールが必要なものまで様々ですが最近はどの OS でも

利用できる事が多く、記載のしやすい bash を選んでいます。

 

# 【 設定ファイル読込サンプル 】

# 変数設定

V_INIFILE="設定ファイルのフルパス"

V_RET=0                              # ループ内での異常処理判定用の変数

#   設定ファイルの読込みとループ処理

cat "${C_INIFILE}" | while read V_LINE;

do

    #   記載パラメータの読取り

    V_PRM1=`echo "${V_LINE}" | awk '{ print $1 }'`         # 1列目のパラメータ

    V_PRM2=`echo "${V_LINE}" | awk '{ print $2 }'`         # 2列目のパラメータ

 

    # パラメータを使用した処理を記載

    # 例:V_PRM1 のファイルと V_PRM2 のファイルを比較して差分を標準出力に表示する。

    #        差分があった場合にはスクリプトを異常ステータス(1)で終了させる。

    diff "${V_PRM1}" "${V_PRM2}"

    V_RET_DIFF="${?}"

    if [ 0 -ne ${V_RET_DIFF} ]; then

        echo "ファイル ${V_PRM1} と ${V_PRM2} に差分が見つかりました。終了します。"

        exit 1

    fi

done

#   ループ内処理の結果を受け取り

V_RET_LOOP="${?}"

 

#   正常/異常により処理を分岐....

----

と、こんな具合に基本的な構成は十分程度あれば記載できてしまいます。

 

ファイルを読んで順次処理するといった記述が簡単に出来るのが

シェルスクリプトの魅力の一つでもあると思いますので

この基本構成について、皆さんの必要な処理に使えるかぜひ一度試してみて下さい。

 

また、こんな方法があるよ!という方は教えて頂けるとロボ 2号(私)が

たいへん喜びます。

 

 

それでは、今回はこの辺で。

 

インフラ系:UNIX/Linux 管理スクリプトの基本構成 vol.1

はじめまして、ハニカムウエアのインフラ担当のロボ 2号です。

弊社代表よりブログ担当を拝命したのですが、なにぶん慣れていないもので右往左往しております。

 

何を記事にするか迷いましたが、まずは業務で使用している

インフラ系の管理スクリプトの基本構成について書いてみたいと思います。

----

ひとくちに管理スクリプトといっても用途は色々あると思いますが\。

例えば次のようなものがあります。

  1. バックアップ
  2. ログ収集
  3. メッセージ監視、アラートメール送信
  4. 日次、月次などの定期処理

UNIX/Linux で使用できるスクリプト系の言語はテキスト処理が簡単に行えるため

管理系の定期的な処理を作成するのに向いており

Windows 系のバッチや PowerShell と比べると歴史も長いため事例も豊富です。

インターネットが発達した現在では、サンプルも探しやすいのも魅力ですよね。

----

そんなスクリプトで非常によく使うのが「設定ファイル」を読んで

1行づつ記載されたパラメータに従って繰り返し処理を行うという構成です。

この基本構成について、よく使用している処理方法を書いてみたいと思います。

今回はまず処理の概要について文章で書いてみたいと思います。

 

----

# 変数設定

#   設定ファイルの読込みとループ処理

 

    #   記載パラメータの読取り

 

    # パラメータを使用した処理を記載

 

#   ループ内処理の結果を受け取り

#   正常/異常により処理を分岐....

 

 

----

インフラ系、業務系を問わず、情報システムだとよくあるパターンだと思います。

設定ファイルがクエリーの結果セットになったり、csv などのデータファイルになったりと

バリエーションはありますがループによる繰返し処理は必ず出てくると思います。

 

次回はこの処理を実際にシェルスクリプトのサンプルとして記載してみたいと思います。

 

 

それでは!