
أداة مسح ضوئي لثغرة Heartbleed في OpenSSL (CVE-2014-0160).
$ git clone [email protected]:pblittle/suture.git
$ cd suture
$ bundle install
$ bundle exec ./bin/suture --help
$ bundle exec ./bin/suture <options> check
Suture هي أداة لتنفيذ أوامر عشوائية على مثيلات AWS EC2 الخاصة بك. يمكنك تشغيلها على مثيل واحد أو على منطقة بأكملها. تم كتابة Suture في الأصل لتحديد ما إذا كانت أي من مثيلات EC2 قيد التشغيل تستخدم إصدارًا من OpenSSL معرضًا لثغرة Heartbleed.
سوف يقوم فحص suture بإجراء SSH إلى كل مثيل من مثيلات EC2 وتنفيذ أمر معين. ستتم مقارنة مخرجات الأمر بسلسلة نصية أو تعبير منتظم (regex) للتحقق.
افتراضيًا، يقوم Suture بتشغيل openssl version -v للتحقق من إصدار OpenSSL. إذا تطابق مخرجات الأمر مع 1.0.(1[a-f]|2-beta1)، فإننا نعرف أن البنية لا تتضمن ثغرة Heartbleed. سيشير التقرير إلى نتيجة المقارنة.
إذا كنت لا تستخدم هذا للتحقق من ثغرة OpenSSL، فما عليك سوى تمرير أمر فحص مخصص باستخدام --check-command والنتيجة المرغوبة باستخدام --check-result. سيتم إجراء تطابق regex لتحديد النتيجة.
إذا كنت تفضل فحص مثيل واحد فقط، فمرر العلامة --instance-id مع معرف المثيل المعني. سيؤدي ذلك إلى تقليل الاستعلام إلى مثيل واحد.
إذا كنت تفحص منطقة غير us-east-1، فقدم المنطقة المطلوبة باستخدام العلامة --region.
ستحتاج أولاً إلى تقديم بيانات اعتماد AWS الخاصة بك لـ suture. يمكنك إما تصدير بيانات AWS_ACCESS_KEY_ID و AWS_SECRET_ACCESS_KEY:
$ export AWS_ACCESS_KEY_ID='your-access-key'
$ export AWS_SECRET_ACCESS_KEY='your-secret-key'
بدلاً من ذلك، يمكنك استخدام علامات سطر الأوامر --aws-access-key و --aws-secret-access-key للمصادقة.
بشكل افتراضي، يستخدم suture المستخدم ubuntu للاتصال بالمثيل. يمكن تغيير ذلك باستخدام العلامة --ssh-user. مسار المفتاح الخاص الافتراضي هو ~/.ec2. يمكنك استبدال هذا المسار باستخدام العلامة --identity-file-path.
أخيرًا، قم بتشغيل الأمر check لعرض حالة مثيلاتك:
$ bundle install
$ bundle exec ./bin/suture [<options>] check
للحصول على خيارات إضافية للأوامر، استخدم ./bin/suture --help:
Usage: suture [<options>] check
-A, --aws-access-key-id KEY معرّف مفتاح الوصول
-K SECRET, مفتاح الوصول السري
--aws-secret-access-key
-x, --ssh-user USERNAME اسم مستخدم SSH
-i IDENTITY_FILE_PATH, ملف الهوية SSH المستخدم للمصادقة
--identity-file-path
-I, --instance-id INSTANCE_ID المثيل المراد فحصه
--region REGION منطقة AWS الخاصة بك
-c CHECK_COMMAND, أمر الفحص الذي سيتم تشغيله
--check-command
-r, --check-result CHECK_RESULT نتيجة الفحص المراد مطابقتها
ستجد القيم الافتراضية للتكوين في هاش options. يجب استبدال هذه القيم باستخدام علامات سطر الأوامر أعلاه.
options = {
:aws => {
:access_key_id => ENV['AWS_ACCESS_KEY_ID'],
:secret_access_key => ENV['AWS_SECRET_ACCESS_KEY'],
:ec2 => {
:ssh_user => 'ubuntu',
:instance_id => nil,
:identity_file_path => ::File.join(Dir.home, '.ec2')
},
:region => 'us-east-1'
},
:check_command => 'openssl version -v',
:check_result => 'OpenSSL 1.0.1g 7 Apr 2014'
}
git checkout -b my-new-feature)git commit -am 'Add some feature')git push origin my-new-feature)يتم توزيع هذا التطبيق بموجب رخصة Apache، الإصدار 2.0.