概要
SNMPでファームウェアバージョンを取得し、CPENameを作る POC なプログラムを作った。
可能なら、sysDescription の収集に協力いただきたい(sysDescriptionが集まると、CPE変換のためのルールが書ける)
snmp2cpeとは
snmpでsysDescriptionを取得することで、ファームウェアバージョンを取得し、そこからCPENamewo作ります。
- これにより、ネットワーク機器のファームウェアバージョン管理が楽になる、かもしれない。
既存の監視では、自動でsshを行ってバージョンを取得していた。これは結構危険だと思っており、もう少し安全な方法がないかを検討していた。
ネットワーク機器の運用監視では、SNMPで各ポートのトラフィックなどを取得していることも多い。これが使えないか確認したところ、sysDescriptionにファームウェアバージョンが出ている場合が多いことを確認した。故に、snmpgetでsysDescriptionを確認することで、ファームウェア管理ができそう。
どう使うの?
https://github.com/hogehuga/snmp2cpe に置いたので、これをcloneして実行してみてください。
- 引数として、snmpgetで利用する
SNMPのバージョン
,SNMPコミュニティ名
,IPアドレス
が必要になります。 - sysNameで名前を、sysDescriptionでファームウェア情報を取るため、アクセスができるようにネットワークおよびSNMPの設計が必要です。
バージョンが取れたとして、CPEにすると何がうれしいかですが、CPE形式であればNVDの脆弱性情報が利用できます。そのため、CPEでNVDとマッチさせることで、残存する脆弱性を検出することができるようになります。
- 但し、NVDへの登録速度に依存するので、ベンダ発表の方が早いかも
- というか、そもそもネットワーク機器ベンダは、バージョン管理しやすいようにできていないし、OVALなどの情報も出していないので、無いよりは全然まし。
ツール的にはVulsなどで登録すればいいんじゃないでしょうか。
お願い
で、このツールはsysDescriptionを解析することでバージョン判別していますが、sysDescriptionの書き方が、ベンダごとに、製品ごとに違うみたいです。一括して判定することが不可能のなので、現存する機器のsysDescriptionをもとに推定するための正規表現などを書かないといけない。
その情報はさすがに手に入りにくいので、オープンソースの力を借りて、利用者皆さんからissue等で回収させてもらいたいのです。
自分のsysDescriptionを(機微なところは外したとしても)報告してもらうことで、同じ形式のものはCPE変換ができるようになるので、今後は自動脆弱性判断ができるようになります。
なにとぞ、sysDescriptionを頂ければ…(twitterでメンションでもいいですが、140文字に収まらないのでは…)
あと、CPE変換前のバージョン文字列も出力できるようにする予定なので、エクセルで確認する運用でも安心、になるはず。