XML::FeedPP で要素取得ができないで困ったとき

やっと取得できた!寝て起きて仕事して帰ってきてふとした瞬間にあ、とれたしみたいな。サンプルコードは以下のようなもの。JVN の API 叩いてます・・・取得といえばそろそろ夏休み取りたいなぁ。

サンプルコード

動作結果

たとえば、こんな感じの RSS があったとして、title や link の値は取得できる、sec:identifier も取得できる。でも、sec:cpe-item の sec:title が取得できないとかそのような場合の対処方法です。

http://jvndb.jvn.jp/myjvn?method=getVulnOverviewList&keyword=CVE-2015-5477
$VAR1 = bless( {
                 'dc:creator' => 'Information-technology Promotion Agency, Japan',
                 'link' => 'http://jvndb.jvn.jp/ja/contents/2015/JVNDB-2015-003942.html',
                 'dcterms:modified' => '2015-07-31T17:06:04+09:00',
                 'sec:identifier' => 'JVNDB-2015-003942',
                 'dc:date' => '2015-07-31T17:06:04+09:00',
                 'dc:publisher' => 'Information-technology Promotion Agency, Japan',
                 'title' => 'ISC BIND 9 にサービス運用妨害 (DoS) の脆弱性',
                 'sec:cpe-item' => {
                                     '-name' => 'cpe:/a:isc:bind',
                                     'sec:vname' => 'ISC, Inc.',
                                     'sec:title' => 'BIND'
                                   },
                 'description' => 'ISC BIND 9 には、サービス運用妨害 (DoS) の脆弱性が存在します。  ISC BIND 9 には、TKEY クエリの処理に起因するサービス運用妨害 (DoS) の脆弱性が存在します。  ISC のアドバイザリには次のように記載されています。  ISC アドバイザリ https://kb.isc.org/article/AA-01272/   "An error in the handling of TKEY queries can be exploited by an attacker for use as a denial-of-service vector, as a constructed packet can use the defect to trigger a REQUIRE assertion failure, causing BIND to exit."  また、問題となる処理は、パケット処理のなかで境界チェックが行われる前に実行されているため、ACL や設定によって本脆弱性への攻撃を防ぐことはできません。  なお、本脆弱性を使用した攻撃コードが公開されており、攻撃も確認されています。  また、National Vulnerability Database (NVD) では、CWE-19 として公開されています。  CWE-19: Data Handling http://cwe.mitre.org/data/definitions/19.html',
                 'sec:cvss' => {
                                 '-version' => '2.0',
                                 '-vector' => '(AV:N/AC:L/Au:N/C:N/I:N/A:C)',
                                 '-score' => '7.8',
                                 '-severity' => 'High'
                               },
                 'sec:references' => [
                                       {
                                         '-id' => 'CVE-2015-5477',
                                         '-source' => 'CVE',
                                         '#text' => 'http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-5477'
                                       },
                                       {
                                         '-source' => 'CWE IPA JA',
                                         '-id' => 'その他(CWE-Other)',
                                         '#text' => 'http://www.ipa.go.jp/security/vuln/CWE.html#CWEOther'
                                       },
                                       {
                                         '-id' => 'DNS サーバ BIND の脆弱性対策について(CVE-2015-5477)',
                                         '-source' => 'IPA CFA',
                                         '#text' => 'https://www.ipa.go.jp/security/ciadr/vul/20150731-bind.html'
                                       },
                                       {
                                         '-id' => 'JPCERT-AT-2015-0027',
                                         '-source' => 'JPCERT-AT',
                                         '#text' => 'http://www.jpcert.or.jp/at/2015/at150027.html'
                                       },
                                       {
                                         '-id' => '(緊急)BIND 9.xの脆弱性(DNSサービスの停止)について(2015年7月29日公開)',
                                         '-source' => 'JPRS',
                                         '#text' => 'http://jprs.jp/tech/security/2015-07-29-bind9-vuln-tkey.html'
                                       },
                                       {
                                         '#text' => 'http://jvn.jp/vu/JVNVU91955066/',
                                         '-source' => 'JVN',
                                         '-id' => 'JVNVU#91955066'
                                       },
                                       {
                                         '-id' => 'CVE-2015-5477',
                                         '-source' => 'NVD',
                                         '#text' => 'http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2015-5477'
                                       }
                                     ],
                 'dcterms:issued' => '2015-07-30T10:47:48+09:00',
                 '-rdf:about' => 'http://jvndb.jvn.jp/ja/contents/2015/JVNDB-2015-003942.html'
               }, 'XML::FeedPP::RDF::Item' );
¥n¥n--- 上記データの取得結果 ---
title:ISC BIND 9 にサービス運用妨害 (DoS) の脆弱性
link:http://jvndb.jvn.jp/ja/contents/2015/JVNDB-2015-003942.html
description:ISC BIND 9 には、サービス運用妨害 (DoS) の脆弱性が存在します。  ISC BIND 9 には、TKEY クエリの処理に起因するサービス運用妨害 (DoS) の脆弱性が存在します。  ISC のアドバイザリには次のように記載されています。  ISC アドバイザリ https://kb.isc.org/article/AA-01272/   "An error in the handling of TKEY queries can be exploited by an attacker for use as a denial-of-service vector, as a constructed packet can use the defect to trigger a REQUIRE assertion failure, causing BIND to exit."  また、問題となる処理は、パケット処理のなかで境界チェックが行われる前に実行されているため、ACL や設定によって本脆弱性への攻撃を防ぐことはできません。  なお、本脆弱性を使用した攻撃コードが公開されており、攻撃も確認されています。  また、National Vulnerability Database (NVD) では、CWE-19 として公開されています。  CWE-19: Data Handling http://cwe.mitre.org/data/definitions/19.html
sec:identifier:JVNDB-2015-003942
-rdf:about:http://jvndb.jvn.jp/ja/contents/2015/JVNDB-2015-003942.html
sec:cpe-item_-name:cpe:/a:isc:bind
sec:cvss:7.8
sec:cpe-item_sec:title:BIND
sec:cpe-item_sec:vname:ISC, Inc.

参考サイト

ガラクタの軌跡 – [Perl]XML::FeedPPで任意の要素の取得方法
work.log – PerlのXML::FeedPP使い方のメモ(補完)

スポンサーリンク

シェアする

フォローする

スポンサーリンク