日経など:中国製「雷ガード」、発煙・発火12件 輸入元、無償交換へ

リコール情報を見てからぼちぼち探していましたが、昔気休め用に使ったのがいくつか有りました。もう使っていないので、新しいのをもらうよりも捨てる方がまだ地球に優しいでしょうか。

しかしPDFでお知らせするところが多いです。そんなアプリがあるんだとか、今そのバージョン使ってちゃだめじゃん、とかプロパティが面白いっちゃ面白いんですが。

本当は怖いtar

などと刺激的なタイトルをつけてしまいましたが、「ディレクトリトラバーサル」とか「GNU tarのsuper userでの展開時のumask」とかを思い起こす方が多いと思います。主に展開時に大きな問題になるそれらも重要なことなのはもちろんですが、基本も忘れずにしていないと作成時でも泣きをみるかもしれません。設定ファイルのバックアップを取ろうとしたとします。

深く考えずにやってしまいそうですが… umaskの確認をお忘れなく。/somewhere/が論理的に他人に読めず物理的にも安全な場所であれば完璧です。単純にsudoを設定すれば防げるという話でもなく、.profileや.cshrcでumaskを厳しく設定していても、普段自分だけがユーザの機械での作業をメインにされている方は他人の機械で作業しているときは忘れてしまうかもしれません。

のようにする癖が付いていれば、せっかく読めなくなっているファイル(例:/etc/master.passwdやら/etc/shadowやら)を他のユーザが読めてしまう危険が激減します。既存のファイルに追記する場合はモードの確認も必要です。

cpio, dd, zip, 普通にcp などなどなど、そしてWindowsも含めて暗号化ファイルシステム上のファイルをzipしたりコピーするときなどなどなど、コピー元が安全にしてあってもコピー先で読めてしまってはいけません。プログラミングでは一時ファイルを作成する際とかも関連事項です。当たり前すぎ?こりゃまた失礼いたしました。

迫るサポート期限

セキュリティ更新が原則ストップする予定日(予測日)

Windows 10 2004 2021-12-14 サービス オプションごとの Windows 10 の現在のバージョン
ご存じですか? OS にはサポート期限があります!
Windows 10 20H2 2022-05-10 サービス オプションごとの Windows 10 の現在のバージョン
ご存じですか? OS にはサポート期限があります!
Windows 10 21H1 2022-12-13 サービス オプションごとの Windows 10 の現在のバージョン
ご存じですか? OS にはサポート期限があります!
Windows 8.1 2023-01-10 マイクロソフト サポート ライフサイクル
ご存じですか? OS にはサポート期限があります!
Windows Server 2012/2012 R2 2023-10-10 など マイクロソフト サポート ライフサイクル
FreeBSD 12.x-RELEASE security branch 2024-06-30 http://security.freebsd.org/#sup
FreeBSD 13.x-RELEASE security branch 2026-01-31 http://security.freebsd.org/#sup
Ubuntu 20.04 LTS
Focal Fossa
2030-04 List of Releases
Ubuntu kernel release cycle
FreeBSD security branch http://security.freebsd.org/#sup
Internet Explorer Internet Explorer 11 desktop app retirement FAQ
Adobe製品 Supported Product Versions

終了したもの

Ubuntu 16.04 LTS
Xenial Xerus
16.04.5(16.04.1,16.04.0)
2021/4 List of Releases
16.04.x Ubuntu Kernel Support
Debian GNU/Linux
8 Jessie
LTS 2020/6/30
(2018/6/17)
https://wiki.debian.org/LTS/
https://wiki.debian.org/DebianJessie
Windows Server 2008/2008 R2 2020/1/14 など マイクロソフト サポート ライフサイクル
Windows 7 最終SP 2020/1/14 など マイクロソフト サポート ライフサイクル
ご存じですか? OS にはサポート期限があります!
Ubuntu 14.04 LTS
Trusty Tahr
14.04.5(14.04.1,14.04.0)
2019/4 List of Releases
14.04.x Ubuntu Kernel Support
FreeBSD 10.4-RELEASE security branch 2018/10/31 http://security.freebsd.org/#sup
Firefox NPAPI plug-in support (ESR 52) ESR 2018/8(2018/5) NPAPI plug-in support…
FreeBSD 10.3-RELEASE security branch
(extended)
2018/4/30 https://www.freebsd.org/security/unsupported.html
Debian GNU/Linux
7 Wheezy
LTS 2018/5/31
(2016/4/26)
https://wiki.debian.org/LTS/
https://wiki.debian.org/DebianWheezy
FreeBSD 11.0-RELEASE security branch 2017/11/30 https://www.freebsd.org/security/unsupported.html
Ubuntu 12.04 LTS
Precise Pangolin
12.04.5(12.04.1,12.04.0)
2017/4/28 List of Releases
12.04.x Ubuntu Kernel Support
Windows Vista 最終SP 2017/4/11 など サポートの終了とは
マイクロソフト サポート ライフサイクル
Firefox NPAPI plug-in support (51) 2017/3/7 Firefox 52… NPAPI plug-in support… NPAPI プラグイン のサポートは終了しました
FreeBSD 10.2-RELEASE security branch 2016/12/31 https://www.freebsd.org/security/unsupported.html
FreeBSD 10.1-RELEASE security branch
(extended)
2016/12/31 https://www.freebsd.org/security/unsupported.html
FreeBSD 9.3-RELEASE security branch
(extended)
2016/12/31 http://security.freebsd.org/#sup
Debian GNU/Linux
6 Squeeze
LTS 2016/2/29
(2014/5/31)
https://wiki.debian.org/LTS/
https://wiki.debian.org/DebianSqueeze
Windows 8 2016/1/12 など マイクロソフト サポート ライフサイクル
FreeBSD 8.4-RELEASE security branch
(extended)
2015/8/1
2015/6/30
https://www.freebsd.org/security/unsupported.html
Windows Server 2003/2003 R2 最終SP 2015/7/14 サポートの終了とは
マイクロソフト サポート ライフサイクル
FreeBSD 10.0-RELEASE security branch
(extended)
2015/2/28 https://www.freebsd.org/security/unsupported.html
FreeBSD 9.2-RELEASE security branch
(extended)
2014/12/31 https://www.freebsd.org/security/unsupported.html
FreeBSD 9.1-RELEASE security branch
(extended)
2014/12/31 https://www.freebsd.org/security/unsupported.html
FreeBSD 8.3-RELEASE security branch (extended) 2014/4/30 https://www.freebsd.org/security/unsupported.html
Windows XP 最終SP 2014/4/8など サポートの終了とは
マイクロソフト サポート ライフサイクル
FreeBSD 9.0-RELEASE security branch 2013/3/31
2013/1/31
https://www.freebsd.org/security/unsupported.html
FreeBSD 7.4-RELEASE security branch
(extended)
2013/2/28 https://www.freebsd.org/security/unsupported.html
FreeBSD 8.2-RELEASE security branch 2012/7/31
2012/2/29
https://www.freebsd.org/security/unsupported.html
FreeBSD 8.1-RELEASE security branch (extended) 2012/7/31 https://www.freebsd.org/security/unsupported.html
FreeBSD 7.3-RELEASE security branch (extended) 2012/3/31 https://www.freebsd.org/security/unsupported.html
Debian GNU/Linux Lenny 2012/2/6 http://www.debian.org/News/2012/20120209
Windows Vista SP1 2011/7/12 サポートの終了とは
マイクロソフト サポート ライフサイクル
Windows Server 2008/2008 R2 SPなし 2011/7/12 マイクロソフト サポート ライフサイクル
FreeBSD 7.1-RELEASE security branch 2011/2/28
2011/1/31
https://www.freebsd.org/security/unsupported.html
Adobe Flash Player 9 2011/2/8 http://kb2.adobe.com/cps/406/kb406791.html
FreeBSD 8.0-RELEASE security branch 2010/11/30 https://www.freebsd.org/security/unsupported.html
FreeBSD 6.4-RELEASE security branch, 6-STABLE 2010/11/30 https://www.freebsd.org/security/unsupported.html
Windows XP SP2 2010/7/13 サポートの終了とは
マイクロソフト サポート ライフサイクル
Windows 2000 2010/7/13 サポートの終了とは
マイクロソフト サポート ライフサイクル
FreeBSD 7.2-RELEASE security branch 2010/6/30
2010/5/31
https://www.freebsd.org/security/unsupported.html
Windows Vista SPなし 2010/4/13 サポートの終了とは
マイクロソフト サポート ライフサイクル
Debian GNU/Linux Etch 2010/2/15 http://www.debian.org/News/2010/20100121
FreeBSD 6.3-RELEASE security branch 2010/1/31 http://security.freebsd.org/#sup

忍び寄るIPv4アドレス枯渇

またbogonが減ったそうです。The Team Cymru Bogon List IANA IPv4 Address Space Registry

逆に追加された 198.51.100.0/24 and 203.0.113.0/24 はIANAの出典をみると RFC5737 のことで、特別なアドレス領域をまとめていた RFC3330RFC5735 にobsoleteにされた(差分は最後の方のAppendix A)とのこと。パケットフィルタでbogonを自動更新で無く運用(=RESERVEDだけをフィルタ)されている方は変更すると幸せになれるかもしれません。自動更新でなく未割り当て領域をフィルタすると悲しいことになるのでだめですよー。

とはいえまだまだIPv4の空きはあるっちゃあるわけですが。(その後中央在庫無くなってます)

ご参考:文書に記述するときに使って良い説明用のドメイン名、IPアドレス

CodeZine:「動けばいいってもんじゃない」 脆弱性を作り込まないコーディング

良いタイトルですね。CodeZineの記事です:『脆弱性体質の改善』。『バッファーオーバーフロー等の脆弱性をうっかり作り込んでしまったがために、数千万円ものコストをかけて、ユーザに告知し、製品を回収して、工場でファームウェアをアップデートする事態に陥ったり、あるいは脆弱性を放置してユーザを危険にさらし、それが明るみに出て「世間を騒がす」ことになったりしなくても済むように』を読んでぐっと来ました。不景気だからと「とにかく安い」や「オフショアにやらせとけ」で痛い目に遭ってる人がいるんですよー、と。もっとも安くないところに頼んでも、スタートインから何週間も動かなかったり、ウィルス撒いたりしてしまうところもあるようなので、こういう啓蒙活動は良いことです。もちろん単なる脅しではなく、かつ内容が正確である必要があります。

ポインタの加減算での誤り、本当に言語仕様ならではの誤りです。エンベッドの世界、高速に動作させなければいけないプログラムを作るとき、いろいろなOSで動作させなければいけないプログラムを使うときなどなど、高級言語として比較的機械語寄りのことができる思想のCはバリバリの現役で進化を続けています。記事はまだ2回目、続きも期待して待ってます。

ばっちり書けてますかhref= 特に&(&)などを含む場合 属性値としてのCDATA

<a href=”xxx”>や、<param name=”FlashVars” value=”xxx”>のxxxに&(ampersand アンパサンド)が含まれる場合、正しい書き方ができていますでしょうか?


追記(2016/8/31)

最近ではAccelerated Mobile Pages(AMP)を有効にするパラメータとして本当にampが使われてamp=1とかを利用するプラグインなどが出てきました。今時ではXHTMLも使わないでしょうし&amp + ;以外の記号 でもエラー部分を消さずに &amp;amp + ;以外の記号 相当とみなしてパースが進行するようになっているので気にする必要もないかもしれません。

  • <link rel=”amphtml” href=”/hoge?amp=1″ /> OK
  • <link rel=”amphtml” href=”/hoge?param1=1&amp;amp=1″ /> OK
  • <link rel=”amphtml” href=”/hoge?param1=1&amp=1″ /> NG

とはいえ、amphtml以外のpathが/ampで終わらないようにできるのであれば、 /amp を query string の amp=1 に、例えばmod_rewriteならば

のようにwebサーバ側でrewiteする方が気にすることも減って無難かもしれません。

追記終了


複数の変数/パラメータを渡したい場合、その変数/パラメータの名前がampだったり、値に&が含まれている場合を考えていきます。

書くまでも無い当たり前なネタなのかもしれませんが、AdobeサイトのFlashVars解説にも誤記が あったり、「表示」⇒「ページのソース」だけで学んでいる人は気づかなかったりするかもしれないので、関連仕様書を一まとめにしておく意味でも書いておき ます。大きな問題であるわけでもなく気にしなければしないですませられますが、実体参照と同じ名前の変数を使いたい場合のように機能的に困る場合があります。


クイズです。次のHTMLをノートパッドなどのテキストエディタで作成してhoge.html等適当な名前で保存します。

次にこのファイルをお好きなwebブラウザでこのHTMLファイルを開き、アンカーのリンク先を右クリック等ででクリップボードにコピーし、テキストエディタにペーストします。どうなるか予想できましたでしょうか。

Windowsの実験機で試した結果は以下の通りです。

FF3⇒notepad file:///?hoge=123&=567
Safari4⇒notepad file:///?hoge=123&=567
Opera10⇒notepad file://localhost/?hoge=123&=567
IE8⇒notepad file:///D:/?hoge=123&=567
IE7⇒notepad file:///D:/?hoge=123&=567
IE6⇒notepad file:///D:/?hoge=123&=567
IE5.5⇒notepad file:///D:/?hoge=123&=567

hostのあるものやpathにドライブのあるものなどいろいろ面白いですが、今回の本題は123の右です。どこにもampがありません。これは「不幸に も多くのHTMLユーザエージェントは変な実体参照でも適当に問題をシカトして先に進んでしまう。(下記参照)」からです。&amp=の部分を& amp;quot=や&copy=などに変えたり、先頭に

を付けたりして(ローカルのファイルでもXML宣言を見てこれをエラーにするブラウザは有りましたか?)いろいろ試してみてください。quotやcopy等では&すら出てこなくなるので間違いにすぐに気づくかもしれません。今まで気づいていなかった方にはとても違和感があるかもしれませんが、パラメータampに値567を渡したい場合の正解は

になります。Flash PlayerにFlashVarsを<object>の中の<param>で渡したい場合はどうでしょうか。HTMLやXHTMLの世界での話なので、変数p1,p2,ampにそれぞれ値を渡したい場合は

といったものが正しい書き方になります。あとは=前後の%エンコード(Percent-Encoding)(FlashVarsの説明ではURL encodingと書かれていますが、各種のURLencode()のような関数やapplication/x-www-form-urlencodedで使われるエンコードではあの記号はそのまま、この記号は%エンコードという奇々怪々な仕組みも含まれる場合があるので素直に%エンコードと呼び、かつFlashVarsの値はECMAScriptのencodeURIComponent()相当の符号化、つまりUTF-8以外の場合はUTF-8に変換をしてから英数以外は積極的に%エンコードする、というのがさまざまな場合で無難だと思います)もお忘れなく。具体的にはもしFlashVarsで変数p1,p2,ampに&が含まれている値を渡したい場合は次のようになります。(%26はUS- ASCIIのスーパーセットの文字セット-文字符号化では&になります。)

変数側に記号を入れてみたりするのも面白いかもしれません(例外的にNULは文字列終端扱いである模様で、例えば

ではswfのhogeにheroが渡されました。実装された詳細仕様は不明です)。href=での%エンコードの話は、サーバ側、アプリケーション側がどうなっているかに依存する、つまりwebサーバやアプリケーションサーバ、CGIもからんできて、単純にこうだとは書くことができません。

では

のように、HTMLとしては期待されていない処理を誘発し、XHTMLとしてはエラーになる属性値(value=の部分)の場合、swfに何が渡ってくるでしょうか(IEはobject要素がparam以外の要素を持てないのでコメント要素は取り除きます)。Flash Player 10.0.42.34との組み合わせで以下の通りです。もっとも、HTMLを解釈してFlash Playerに渡すまでの作業はwebブラウザ(HTMLユーザエージェント、HTMLパーサ)の仕事であり、もしFlash Playerのバージョンで変わるとすればそれはFlashVars自体の仕様の変化となります。また、XHTMLとしてちゃんとエラー扱いになった場合はそもそもFlash Playerが起動しません。

FF3 swfのampの内容は空
Safari4 swfのampの内容は空
Opera10 swfのampの内容は空
IE8 swfのampの内容は空

同時に&amp;amp=bazで正しくswfのampにbazが渡ってくること、そして残念ながら世の中に氾濫している&xxx=bazでも、エラー扱いではなくかつxxxが文字実体参照や数値文字参照にぶつかっていないものはbazが渡ってくることも確認しました。上の href=と同じ状況で予想通りです。

ところでこれはHTMLやXHTMLの世界での話なので、HTML内での記述ではなくて別の外部ファイル(.js等)に分けて、

などで提供される分にはまったく当てはまりません。パラメータhoge,p1,p2,ampにそれぞれ値を渡したい場合はそのまま

というような文字リテラルでOKです。

HTML内でのonclick=などの属性値ではContent-Script-Typeがapplication/javascript(text/javascript)の場合

のようになります。<script>で記述する場合は内容モデルがHTMLではCDATA, XHTMLでは#PCDATA(下記参照)という別な話が登場して終わらなくなってしまいますので機会があれば別途。とにかく外部ファイルにしてしまうと 決めていれば稀な場合でも大きな問題にならないはずです。

優れたバリデータは文法エラーは当然のこと、誤った処理をさせる部分を検出して警告してくれるので活用されると良いかもしれません。

なお、弊社遊び場の中のFlashアプリの ページでは、ActiveX用とNetscape式plugin用さらにはSWFObject用に同じパラメータを何度も書かなければいけないという問題 とSWFObjectだけではJavaScript依存にしてしまうという問題を解決し、かつActiveXでなくても古いFlash Playerが入っていればExpress Installationが起動するというちょっと素敵なやり方をしています。機会があればご紹介します。

長くなりましたが、以下に根拠となる仕様書(一部ですが)のリンクと、簡単な説明をまとめてみました。ぜひご自身でも読み解いて、上に書かれていることが本当か確認してください。間違いがあったらぜひコメントをお願いします。

<param>要素のvaue=属性の値に関する仕様書の一部の超訳

<a>要素,<link>要素のhref=属性の値に関する仕様書の一部の超訳

属性値の場合のCDATAに関連する仕様書の一部の超訳

  • HTML 4.01:CDATAは文書文字集合のシーケンスで、文字実体を含むことができる。ユーザエージェントは属性値を次のように解釈するべきである。文字実体を文字で置きかえる。LFを無視する。CRやTABは各々SPに置き換える。: http://www.w3.org/TR/1999/REC-html401-19991224/types.html#h-6.2
  • HTML 4.01(SGML tutorial):属性値はダブルクォートかシングルクォートで括る。決められた文字だけの場合は括らなくてもいいけど。数値文字参照を利用し て"でダブルクォート、'でシングルクォートを値に含められるし、ダブルクォートで括られている場合は文字実体参照を利 用して&quot;でシングルクォートを値に含められる。: http://www.w3.org/TR/1999/REC-html401-19991224/intro/sgmltut.html#h-3.2.2
  • XML 1.0: ダブルクォートかシングルクォートで括る。<と&と括り始めのクォート以外の文字、あるいは「参照」で構成される。: http://www.w3.org/TR/2008/REC-xml-20081126/#NT-AttValue
  • XML 1.0: 参照は、実体参照(例:&quot;)か、文字参照(例:",")である。: http://www.w3.org/TR/2008/REC-xml-20081126/#NT-Reference
  • XHTML 1.0: SGMLでもXMLでも&(ampersand character)は実体参照の開始宣言であるが、不幸にも多くのHTMLユーザエージェントは変な実体参照でも問題をシカトして先に進んでしまう。 XMLユーザエージェントはこの不正な使用を認められない: http://www.w3.org/TR/2002/REC-xhtml1-20020801/#C_12
  • HTML 5 (右は訳ではなくて注釈):今までのHTMLではそのものすばりと書かれていなかったようだけど、ついにどうやって間違った文法(前出のHTMLの場合で は&amp=を&ampy=にしたり、&copy=を&copydayo=にするといった悲しくも不正な回避方法が使わ れてしまった場合)をパースし続けるかが定義(恐るべし膨大なレガシー資産パワー!)される模様。: (このリンク先はレンダリングするのに結構リソース消費します。クリックするときは注意してください)http://dev.w3.org/html5/spec/Overview.html#tokenizing-character-references

<script>要素に関する仕様書の一部の超訳(参考)

要素内容の場合のCDATAに関連する仕様書の一部の超訳(参考)

Adobe.comでの説明(頻繁にURLが変わりpermalinkも無いのでたまに修正していますがリンク切れの場合がしょちゅうあります)(参考) (サンプルは適切でないです。修正されることはなさそうです。)

  • TechNote (Knowledge Base): <PARAM NAME=FlashVars VALUE=”foo=Hello%20Worldgraph=first+line%0Dsecond+line”> の部分はおそらく VALUE="foo=Hello%20World&amp;paragraph=first+line%0Dsecond+line" の意図で書かれたものと思われますが、graphの前に&すらなくなってしまっているのでサンプルの意味がとてもあいまいになってしまっています(2010/1/14時点)。Macromediaからのお引っ越しの際にでも発生したエラーでしょうか: Using FlashVars to pass variables to a SWF
  • Flex 4: この説明文の<param>等のHTMLでFlashVarsを使用しているもののうち、&lastname=の部分(2010/1 /14時点)は、勝手にlastnameが文字実態参照に使われないことを暗黙のうちにリザーブしています。lastname部分をampやquotやcopyやnbspやltやgtや…にした場合は動作しないことを記載するか、あるいは普通にXHTMLでもHTMLでもampやquotやcopyという変数を渡したいときでも百万が一にも文字実体参照に&lastname;が追加された場合も使えるサンプルにするためにも、&amp;lastname=を使用するのが妥当と考えられます: Passing request data with flashVars properties – Communicating with the wrapper
  • Developer Connection: ユーザの入力を動的にFlashVarsに渡すような場合、%エンコードすることの重要性やURLのような場合はスキーマやホストの確認なども重要であることが書かれています。一読をお勧めします。: Creating more secure SWF web applocations

2010/4/13 文章校正(項目の順序入れ替え)

検体送付先/誤検知連絡先メモ

おそらくまとめていらっしゃる方はたくさんいらっしゃると思いますが、DIY精神でメモメモ。

ドイツ語やらロシア語やら交じりのメイルが返ってきて、ファンタジーな感じです。

unbel32とKaspersky

2010/01/10日曜日のKasperskyさんの完全スキャンが実験機のC:\WINDOWS\System32\unbel32.dll(sha1:53ab09116a18b8387cf8574739ae8cf93fdd1d5a, md5:32ed3e6eb5df06067596c80a3f316eed, size:52224)をTrojan.Win32.Agent.dffbと判定したので、false alarmでしょうが念のためquarantineしておきました。Belonを扱うことがないので放置で良いといえば良いのですが…2日たっても隔離から復元できずにtrojan扱いなので、さすがに既に報告してくれた人もいらっしゃるでしょうが他人任せではいかんよと思い直してKaspersky Labに報告。夜に返事が来ていて確かに誤検出で次のアップデートで直るとのこと。遅くとも2010/1/13 8:36(+0900 JST)のリリースまででの修正を確認。すばやい対応ですね。以降最新のKasperskyの定義データベースでも検出された場合は本当にtrojanかもしれませんよ。これとは関係ないですがKasperskyさんのvulnerability検出はとても便利で役に立ってます。いやまじで。

注意: unbel32.dllの安全性を保証するものでは有りません。またファイル名だけで誤検知を判断するのはとても危険なので(当たり前ですが)ハッシュとサイズの両方での確認が必須です。

2010/1/13 17:48追記 念のためKasperskyさん以外にも一応連絡。Comodoさんは「false alarmでは『ない』」とのこと。

2010/1/14 9:31追記 Comodoさん、結局検知しなくなりましたね…ヒューリスティクスとしては検出して正解だ、という意味に受け取るべきなのかもしれませんが、うーむ。製品ユーザではないからでしょうか、返事の返事はいただけませんでした。

Kasperskyさんのお返事はこんな感じ。

2010/1/15 7:00追記 2010/1/15 6:51(+0900 JST)現在、VirusTotalで検出されなくなりました。VBA32は遅くとも3.12.12.1/20100114までに対応してくれたようです。使っていないので詳細は知りませんが、3.12.12.1は定義ではなくてエンジンのバージョンでしょうか。

2010/1/14 9:31追記 VirusTotalさんに伺った2010/1/14 7:05(+0900 JST)現在での検出状況。ほぼ消えました。VirusBlockAdaさんからも調べてから近いうちにアップデートするね、とお返事来てるので3.12.12.1でなくなったら消えるでしょうか。

というわけでVirusTotalさんに伺った2010/1/13 10:55(+0900 JST)現在の検出状況。過去の誤検出を悪用してその名前をmalwareに使うような悪い人もいるでしょうから、ファイル名だけで誤検出を確認するのはとても危険です。あたりまえながら。ハッシュをサイズとともに有効活用してください。

PivotXのユーザ登録で”_”(アンダースコア)が使えない

PivotXのマニュアルやヘルプによるとアンダースコアが使えるはずなのですが、Administration → Usersから登録しようとすると、入力時にアンダースコアが”-“(ハイフン)に自動的に置換されてしまいます。

pivotx/includes/js/pivotx.jsのsetSafename()を修正すれば良いのですが、サーバー側のコードのバリデーションが足りないことにも気付きました。JavaScriptの修正と合わせて、2009/5/19のpivotx-latest.tgzとsvnリリース2278用にパッチを作って報告してみました。