web-dev-qa-db-ja.com

openssl CVE-2014-0160の脆弱性を手動で確認する方法はありますか?

内部サービスの一部を CVE-CVE-2014-016 に対してチェックする方法はありますか(できればopenssl CLIを使用して)?

[〜#〜]できません[〜#〜]を使用してすべてをテストします: サーバーのHeartbleedをテストします(CVE-2014- 0160)

5
alexus

あなたは試すことができます:

openssl s_client -connect domain.com:443 -tlsextdebug 2>&1 | grep 'server extension "heartbeat" (id=15)' || echo safe

https://devcentral.f5.com/questions/openssl-and-heart-bleed-vuln から

6
saltface

たとえば、次のスクリプトを使用できます。 http://rehmann.co/projects/heartbeat/ssltest.py

2
MichelZ

ここにいくつかのローカルHeartbleed脆弱性検出器/チェッカーがあります:

github のtitanousはまだ開発中のようで、titanousもHeartbleed検出用のGoプログラミングコードをリリースし、今朝の時点でFilippoよりも優れたメッセージを出し、最後に更新されました32分前。完全な比較はしていませんが、Goライセンスの下にあるようです。 BSD 3条項ライセンスに似ています。

githubのmusalbas がリリースされましたPythonプログラム "ssltest.py"、コードの変種@MichelZの回答リンクはこれを行うように変更されていますMusalbasはまた、約5時間前のトップ100、1000、10000、および100万のインターネットサイトをスキャンした結果のリストをリリースしました。

Filippo.ioは最初のWebサイトの1つであり、 github でMITライセンス(Goプログラミング言語)を使用して)コードをリリースしました。

Codenomicon Defensics もHeartbleedを検出しているようです。

Lekensteyn もちろん、ペースメーカーをリリースしましたpythonクライアントチェッカー、数時間前に変更、ssltest.pyのオリジナルのスタッフォードバージョン。特定のライセンスはリストされていません。

Metasploitここにリンクされているサーバーチェック@ HDMooreおよび@Lekensteynからのクライアントチェック

さらに、攻撃は両方の方向に進む可能性があるため、 リアルタイムの侵害のインジケータ から新しいSnortルールをインストールすることにより、いくつかの自動攻撃検出と中断を取得することができます(クライアントは攻撃されても、脆弱であれば)。これは、誰かが過去にWebサイトを攻撃したかどうかはわかりませんが、誰かが今あなたを攻撃しているかどうかを知ることができます。

  • alert tcp any [!80、!445]-> any [!80、!445](msg: "FOX-SRT-不審-SSLv3ラージハートビートレスポンス"; flow:established、to_client; content: "| 18 03 00 | "; depth:3; byte_test:2、>、200、3、big; byte_test:2、<、16385、3、big; threshold:type limit、track by_src、count 1、seconds 600; reference:cve、2014- 0160; classtype:bad-unknown; sid:1000000; rev:4;)

  • alert tcp any [!80、!445]-> any [!80、!445](msg: "FOX-SRT-疑わしい-TLSv1ラージハートビートレスポンス"; flow:established、to_client; content: "| 18 03 01 | "; depth:3; byte_test:2、>、200、3、big; byte_test:2、<、16385、3、big; threshold:type limit、track by_src、count 1、seconds 600; reference:cve、2014- 0160; classtype:bad-unknown; sid:1000001; rev:4;)

  • alert tcp any [!80、!445]-> any [!80、!445](msg: "FOX-SRT-不審-TLSv1.1ラージハートビートレスポンス"; flow:established、to_client; content: "| 18 03 02 | ";深さ:3; byte_test:2、>、200、3、big; byte_test:2、<、16385、3、big;しきい値:タイプ制限、追跡by_src、カウント1、秒600;参照:cve、 2014-0160; classtype:bad-unknown; sid:1000002; rev:4;)

  • alert tcp any [!80、!445]-> any [!80、!445](msg: "FOX-SRT-不審-TLSv1.2ラージハートビートレスポンス"; flow:established、to_client; content: "| 18 03 03 | ";深さ:3; byte_test:2、>、200、3、big; byte_test:2、<、16385、3、big;しきい値:タイプ制限、追跡by_src、カウント1、秒600;参照:cve、 2014-0160; classtype:bad-unknown; sid:1000003; rev:4;)

Heartbleed検出ルールのセット をリリースすることについて、snort.orgにも感謝します。通常は、開始する前の最初の30日間はVRT(有料サブスクリプション)ルールリストにのみ存在していました。コミュニティへ:

  • アラートtcp $ EXTERNAL_NET any-> $ HOME_NET 443(msg: "SERVER-OTHER OpenSSL SSLv3ハートビート読み取りオーバーラン試行"; flow:to_server、established; content: "| 18 03 00 |"; depth:3; dsize:> 40; detection_filter:track by_src、カウント3、1秒;メタデータ:ポリシーバランスドipドロップ、ポリシーセキュリティipsドロップ、サービスssl;参照:cve、2014-0160;クラスタイプ:attempted-recon; sid:30510; rev:2; )

  • アラートtcp $ EXTERNAL_NET任意-> $ HOME_NET 443(msg: "SERVER-OTHER OpenSSL TLSv1ハートビート読み取りオーバーラン試行"; flow:to_server、established; content: "| 18 03 01 |"; depth:3; dsize:> 40; detection_filter:track by_src、カウント3、1秒;メタデータ:ポリシーバランスドIPドロップ、ポリシーセキュリティIPドロップ、サービスSSL;参照:cve、2014-0160;クラスタイプ:attempted-recon; sid:30511; rev:2; )

  • アラートtcp $ EXTERNAL_NET任意-> $ HOME_NET 443(msg: "SERVER-OTHER OpenSSL TLSv1.1ハートビート読み取りオーバーラン試行"; flow:to_server、established; content: "| 18 03 02 |"; depth:3; dsize:> 40; detection_filter:track by_src、カウント3秒1;メタデータ:policy釣り合ったipsドロップ、ポリシーsecurity-ipsドロップ、サービスssl;参照:cve、2014-0160; classtype:attempted-recon; sid:30512; rev: 2;)

  • アラートtcp $ EXTERNAL_NET任意-> $ HOME_NET 443(msg: "SERVER-OTHER OpenSSL TLSv1.2ハートビート読み取りオーバーラン試行"; flow:to_server、established; content: "| 18 03 03 |"; depth:3; dsize:> 40; detection_filter:track by_src、count 3秒1;メタデータ:policy釣り合ったipsドロップ、ポリシーsecurity-ipsドロップ、サービスssl;リファレンス:cve、2014-0160; classtype:attempted-recon; sid:30513; rev: 2;)

  • アラートtcp $ HOME_NET 443-> $ EXTERNAL_NET any(msg: "SERVER-OTHER SSLv3ラージハートビートレスポンス-可能性のあるssl heartbleed試行"; flow:to_client、established; content: "| 18 03 00 |"; depth:3; byte_test: 2、>、128,0、relative; detection_filter:track by_dst、count 5、seconds 60;メタデータ:policy Balanced-ips drop、policy security-ips drop、service ssl; reference:cve、2014-0160; classtype:attempted-偵察; sid:30514; rev:3;)

  • アラートtcp $ HOME_NET 443-> $ EXTERNAL_NET any(msg: "SERVER-OTHER TLSv1 large heartbeat response-可能なssl heartbleedの試み"; flow:to_client、established; content: "| 18 03 01 |"; depth:3; byte_test: 2、>、128,0、relative; detection_filter:track by_dst、count 5、seconds 60;メタデータ:policy Balanced-ips drop、policy security-ips drop、service ssl; reference:cve、2014-0160; classtype:attempted-偵察; sid:30515; rev:3;)

  • アラートtcp $ HOME_NET 443-> $ EXTERNAL_NET any(msg: "SERVER-OTHER TLSv1.1大きなハートビート応答-可能性のあるsslハートブリード試行"; flow:to_client、established; content: "| 18 03 02 |"; depth:3; byte_test:2、>、128,0、relative; detection_filter:track by_dst、count 5、seconds 60; metadata:policy釣り合ったipsドロップ、ポリシーsecurity-ipsドロップ、サービスssl;リファレンス:cve、2014-0160;クラスタイプ:偵察の試み; sid:30516; rev:3;)

  • アラートtcp $ HOME_NET 443-> $ EXTERNAL_NET any(msg: "SERVER-OTHER TLSv1.2大きなハートビート応答-可能性のあるsslハートブリード試行"; flow:to_client、established; content: "| 18 03 03 |"; depth:3; byte_test:2、>、128,0、relative; detection_filter:track by_dst、count 5、seconds 60; metadata:policy釣り合ったipsドロップ、ポリシーsecurity-ipsドロップ、サービスssl;リファレンス:cve、2014-0160;クラスタイプ:偵察の試み; sid:30517; rev:3;)

2

サーバーはssltest.pyツールでテストできます。クライアントはペースメーカーツールでテストできます。どちらも https://github.com/Lekensteyn/pacemaker にあります。

サーバ

テストクライアントを実行すると、サーバーに脆弱性があるかどうかが表示されます。

python2 ssltest.py example.com

クライアント

サーバーを起動します(デフォルトはポート4433です):

./pacemaker.py

次に、クライアントをhttps://address.of.machine:4433/に接続し、サーバーの出力を確認します。 MySQLもサポートされています。これを書いている時点では、まだSTARTTLSサポートを追加していません。

オプションを増やすには、どちらのツールにも必ず--helpを追加してください。

0
Lekensteyn