Almaniyada baş tutan 39C3 (Chaos Communication Congress) konfransında, GnuPG (GNU Privacy Guard) alətində 12 əvvəllər bilinməyən və hələ də aradan qaldırılmamış (0-gün) zəifliklərin detalları açıqlanıb. Bu alət OpenPGP və S/MIME standartlarına uyğun şifrləmə, elektron imza ilə işləmə, açar idarəsi və ictimai açar anbarlarına daxil olmaq üçün istifadə olunur. Ən təhlükəli zəifliklər, imzanın təsdiqini aşmağa və ASCII formatında şifrlənmiş məlumatların işlənməsi zamanı kod icrasını əldə etməyə imkan tanıyır. İşçi prototipləşdirilmiş exploitlər və patçalar daha sonra yayımlanacaq. CVE identifikatorları hələ təyin edilməyib.
Zəifliklər, məlumatların işlənməsi və formatların parsilənməsi ilə bağlı koddakı səhvlərlə bağlıdır və kriptoalqoritmlərdəki boşluqlarla əlaqəli deyildir. Məsələn, parserdəki bir səhv, faktiki imzalanmış məlumatları müəyyənləşdirməkdə uğursuzluğa səbəb olur və yoxlanan məlumatların imzalanmış məlumatlarla uyğun gəlməməsi üçün şərait yaradır, bu da hücumçunun gizli açara daxil olmadan açıq mətni dəyişdirməsinə imkan tanıyır.
Müxtəlif problemlər aşkar edilmişdir:
- ASCII-Armor formatında («BEGIN/END PGP ARMORED FILE» blokları olan mətn faylları) yayımlanan şifrlənmiş məlumatların parser kodundakı səhv, buferin sərhədindən kənara yazılmağa səbəb olur. Bu problem, gpg tərəfindən xüsusi hazırlanmış məlumatların işlənməsi zamanı kod icrasına səbəb ola bilər. Zəiflik armor_filter() funksiyasında ortaya çıxır və for dövründə «n» sayğacının iki dəfə artırılması ilə əlaqədardır — dövrün içində «n++» olmasına baxmayaraq, sayğac həmçinin dövrün bədənində «buf[n++]» daxilindəki məlumatları buferə yazarkən artırılır. Nəticədə, buferin sərhədindən kənara əlavə bir bayt yazılır və «ret_len» ölçü dəyişəni faktiki ölçüdən artıq bir dəyər alır.
- Mövcud icazə hüquqlarına görə istənilən faylın yaradılması və ya üzərinə yazılması imkanının qeyri-dəqiq işlənməsi səbəbindən baş verə bilər, bu da verilənlər paketindəki «filename» sahəsinin məzmununun qeyri-dəqiq işlənməsi ilə bağlıdır. Zəiflik, alıcının «gpg —decrypt poc.enc» və «gpg poc.enc» əmrlərini icra edərkən sistemdə kodun icra olunan təşkil olunmasına imkan yaradır. Kodun icrasını təmin etmək üçün, məsələn, ~/.bash_completion və ya ~/.ssh/authorized_keys fayllarının yaradılması ilə həyata keçirilə bilər.
- İstifadəçiyə "--decrypt" seçimini göstərdikdə açıq mətni dəyişdirmək imkanı və ayrıca təqdim olunan rəqəmsal imzalar ilə təsdiqləmə (Detached Signature, "--detach-sig" seçimi ilə yaradılır və ayrıca sig-faylda təqdim edilir). Problemin mahiyyəti odur ki, mesaj və sig-fayl ayrı göndərildikdə, aralıqdakı traffic'i nəzarət edən bir hücumçu (MITM) sig-faylda dəyişiklik edə bilər, nəticədə təsdiqləmə uğurlu qalacaq, lakin sig-fayldakı mesajın "--decrypt" seçimi ilə baxılması zamanı fərqli bir məzmun təqdim olunacaq. echo Plaintext > plaintext gpg --detach-sig plaintext # hücumçu tərəfindən plaintext.sig faylında əlavə mətn daxil edilməsi gpg --verify plaintext.sig plaintext # təsdiqləndi gpg --decrypt plaintext.sig # təsdiqləndi, lakin fərqli mətn çıxarılır
- İmzalanmış mesaja imzanın uğurlu təsdiqini qoruyaraq istənilən məlumatların əlavə olunması imkanı. Problemin yaranma səbəbi, hash hesablanarkən 20000 simvol sərhədində məlumatların kəsilməsi ilə bağlıdır.
- Autentifikasiya edilmiş şifrələmə kodlarının (MDC — Modification Detection Codes) qeyri-düzgün təsdiqi, şifrələnmiş paketləri manipulyasiya etməyə imkan verir ki, deşifrləndikdə əldə olunan məzmun başqa bir paket növü olaraq emal olunur (məsələn, dərc olunan açıq açar kimi qəbul edilir).
- Cleartext Signature (CS) imzalarına "--not-dash-escaped" flaqı istifadə edərək və ya ayrıca təqdim edilən imzalardan (Detached Signature) çevrilmə yolu ilə əlavə məlumatların daxil edilməsi imkanı. Bu zəiflik, istifadəçidə imzalanmış məlumatların real olması barədə yanlış təəssüratlar yaratmaq üçün istifadə oluna bilər. Məsələn, istifadəçi rəqəmsal imzanın təsdiqini yoxlamaq üçün etibarlı mənbələrdən düzgün açarı yükləyə bilər, lakin hücumçu MITM hücumu zamanı istifadəçinin yüklədiyi iso-şəklini dəyişdirə bilər və imzanın altına əlavə bir hash əlavə edə bilər, beləliklə sistemdə düzgün tədqiqat açarı olduğu halda dəyişdirilmiş obrazın təsdiqi müvəffəqiyyətlə keçəcək.
- ASCII-formatlı CS-imzasına (Cleartext Signature) sıfır kodlu simvol daxil etməklə əlavə məlumatların daxil edilməsi. Bu zəiflik, məsələn, Hash başlığına istənilən mətni daxil etməyə imkan verir.
- OpenPGP formatının qeyri-düzgün şərhi nəticəsində "One-Pass Signed Message" mesajının ASCII-kodlaşdırılmış formatda "Cleartext Signature" mesajı kimi müəyyən bir başlıq dəyişikliyi ilə emal olunması. Bu zəiflik orijinal imzalanmış məlumatları zərərli məzmunla əvəz etməyə imkan verir, müvəffəqiyyətli təsdiqləmə görünüşünü qoruyaraq.
- Məlumatın rəqəmsal imzanın və mesajın uğurla yoxlanması barədə açıq ayrılma olmaması, bu cür məlumatı icra edərkən «gpg --decrypt» daxil olan saxta imzasız mesajların həqiqi kimi görünməsinə səbəb olur.
- OpenPGP mesajlarının yaradılması imkanı, bu mesajların gpg-də digər OpenPGP tətbiqlərindən fərqli bir şəkildə işlənməsi. Problem, OpenPGP məlumatlarının ASCII nümayişində çox uzun sətirlərin işlənməsinin xususiyyətləri ilə bağlıdır.
- Rəqəmsal imzanın təsdiqlənməsi prosesində təhlükəsiz olmayan SHA1 hash yoxlama alqoritminə geri dönmə şəraitinin yaradılması.
- Öz ikincil açarlarını (subkey) onların səlahiyyətindən kənar olaraq əsas açarının privat komponenti ilə istifadə etmə imkanı. Hücum, «--keyring» seçimi yolu ilə saxta açar deposunun əlavə edilməsi ilə həyata keçirilir.
Minisign-də iki zəiflik aşkar olunmuşdur, bu, rəqəmsal imzanaların yaradılması və yoxlanması üçün asanlaşdırılmış bir alətdir. Hər iki zəiflik (1, 2), proqramın çıxışını dəyişdirmək üçün şərh sahəsində terminal idarəetmə ardıcıllıqlarını («\e[1E») və ya xüsusi simvolları («\r») istifadə etməyə imkan verir.
Mənbə: opennet.ru
