PengantarOWASP merupakan singkatan dari Open Web Application Security Project, yang merupakan sebuah project Security Web Application open source yang diperkasai oleh para penggiat teknologi atau pengembang aplikasi, OWASP sering mengadakan seminar, forum diskusi serta pendidikan untuk para Developer.jadi yang dimaksud OWASP TOP 10? owasp top 10 merupakan sebuah cara untuk mengkategorikan resiko kerentanan yang sering terjadi pada sebuah aplikasi berbasis website, dari yang paling atas (resiko tertinggi) hingga yang paling bawah (tingkat resiko rendah), Tujuannya apa ?, tentu saja ini sangat berguna bagi para developer aplikasi supaya mereka jadi lebih aware terhadap kerentanan di aplikasi mereka.di artikel ini kita akan membahas owasp top 10 yang paling teratas untuk tahun 2021 (owasp tiap 4 tahun sekali), ialah Cryptographic Failures.Cryptographic FailuresApa itu Cryptographic FailuresCryptographic Failures adalah sebuah kondisi dimana pengimplementasian kriptografi atau pengenkripsian yang kurang baik di sebuah aplikasi sehingga menyebabkan data sensitive terekspos dengan mudah.Developer yang menerapkan konsep buruk kriptografi sering menyebabkan data Breach, karna ya tadi… data tidak di enkripsi (sembunyikan) dari attacker dengan baik, yang mana dimanfaatkan oleh attacker untuk mengakses data yang lebih sensitive lagi.Beberapa hal yang sering terjadi pada Cryptographic Failures ialah:Transmit / Menyimpan sebuah data sensitif tidak dalam keadaan terenkripsi (Cleartext)Menggunakan enkripsi / encoding yang sudah lawas, atau sudah mudah ditemukan pemecahnya.Menggunakan default key untuk sebuah enkripsi, tidak menerapkan management key dan key rotationTidak memvalidasi sertifikat server dan trust chainMelakukan Transmit / Menyimpan data sensitif dengan protocol yang tidak aman.PraktikalBerikut saya cantumkan beberapa contoh report dari orang lain di celah keamanan Cryptographic Failures :#1066410 Google API key leaks and security misconfiguration leads Open Redirect VulnerabilitySumber : https://hackerone.com/reports/1066410ednpoint :https://account.clario.co/js/main.044af6485f6b0cd90809.js'https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=AIzaSyAw-SpLHVTIP3IFEIkckCuEmIhnUrY9OrQ'; Kemudian attacker memanfaatkan kebocoran dari API Key Ref Link1 => https://support.google.com/firebase/answer/9021429 Ref Link2 =>https://firebase.google.com/docs/dynamic-links/rest Saat Attacker mau mengetes Regex, ia menemukan bahwa terdapat kerentanan OpenRedirect pada sistem yang dimana ia bisa memasukkan URL (yang sudah di pendekkan (bisa dengan Postman)) yang akan mengarahkan ke situs manapun.https://lnk.clario.co/?link=[URLHERE]Berikut dilampirkan Proof of Concept :https://drive.google.com/uc?id=1PtFwYSFwMyNFz796o9vvFUGfpJXOiOW0#396467 Github Token Leaked publicly for https://github.sc-corp.netSumber : https://hackerone.com/reports/396467endpoint :https://github.com/█████/leetcode/blob/0eec6434940a01e490d5eecea9baf4778836c54e/TopicMatch.py import os import requests import sys pull_number = 76793 pull_url = "https://github.sc-corp.net/api/v3/repos/Snapchat/android/pulls/" + str(pull_number) payload = {} payload["Authorization"] = "token " + "9db9ca3440e535d90408a32a9c03d415979da910" print payload r = requests.get(pull_url, ## I didn't try anything with the token, and dont know what access it has, and i know that in order to login to https://github.sc-corp.net you need to have an email @snap but still i though it would be a good idea to share this finding with you in case it can be used in a way that i dont know. #173268 Login credentials transmitted in cleartext on index.rubygems.orgsumber : https://hackerone.com/reports/173268Pertama pergi ke https://hackerone.com/reports/1066410lalu attacker intercept ke endpoit di atas, melakukan Method POSTPOST /session HTTP/1.1 Host: index.rubygems.org User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Referer: http://index.rubygems.org/sign_in Cookie: _gauges_unique_hour=1; _gauges_unique_day=1; _gauges_unique_month=1; _gauges_unique_year=1; _gauges_unique=1; _ga=GA1.2.406017651.1475277378 DNT: 1 Connection: keep-alive Upgrade-Insecure-Requests: 1 Pragma: no-cache Cache-Control: no-cache Hasil :utf8=✓authenticity_token=9dML75aXwXcw4rqJlOeKDK2/SdRK78+5ciMEtrMbDgEf160r9v1TX0/pXynzDC+pYSp5M1oGLsmtvkixo+MfdA== session[who]=Eterm1 session[password]=5[redacted]W commit=Sign+in dari hasil di atas kita mendapati bahwa authenticity_token, session, commit tidak dilakukan enkripsi dengan baikMitigasiEnkripsi semua data dengan menggunakan algoritma yang terpercayaEnkripsi semua data yang ada di transit dengan menggunakan protokol terbaru seperti TLSMelakukan Identifikasi dan pengontrolan semua sensitive data yang adaJangan mengambil dan menyimpan data yang dirasa tidak pentingSimpan password dengan baik, Pakai Hash.Beberapa kerentanan lain di list CWE:CWE-261 Weak Encoding for PasswordCWE-296 Improper Following of a Certificate’s Chain of TrustCWE-310 Cryptographic IssuesCWE-319 Cleartext Transmission of Sensitive InformationCWE-321 Use of Hard-coded Cryptographic KeyCWE-322 Key Exchange without Entity AuthenticationCWE-323 Reusing a Nonce, Key Pair in EncryptionCWE-324 Use of a Key Past its Expiration DateCWE-325 Missing Required Cryptographic StepCWE-326 Inadequate Encryption StrengthCWE-327 Use of a Broken or Risky Cryptographic AlgorithmCWE-328 Reversible One-Way HashCWE-329 Not Using a Random IV with CBC ModeCWE-330 Use of Insufficiently Random ValuesCWE-331 Insufficient EntropyCWE-335 Incorrect Usage of Seeds in Pseudo-Random Number Generator(PRNG)CWE-336 Same Seed in Pseudo-Random Number Generator (PRNG)CWE-337 Predictable Seed in Pseudo-Random Number Generator (PRNG)CWE-338 Use of Cryptographically Weak Pseudo-Random Number Generator(PRNG)CWE-340 Generation of Predictable Numbers or IdentifiersCWE-347 Improper Verification of Cryptographic SignatureCWE-523 Unprotected Transport of CredentialsCWE-720 OWASP Top Ten 2007 Category A9 — Insecure CommunicationsCWE-757 Selection of Less-Secure Algorithm During Negotiation(‘Algorithm Downgrade’)CWE-759 Use of a One-Way Hash without a SaltCWE-760 Use of a One-Way Hash with a Predictable SaltCWE-780 Use of RSA Algorithm without OAEPCWE-818 Insufficient Transport Layer ProtectionCWE-916 Use of Password Hash With Insufficient Computational Effort