✏️ Java 코드 에디터
취약한 코드
import java.security.Signature;
public class SignatureVerifier {
public boolean verifySignature(byte[] data, byte[] sign, java.security.PublicKey key) throws Exception {
Signature verifier = Signature.getInstance("SHA256withRSA");
verifier.initVerify(key);
verifier.update(data);
// [취약점] verify() 메서드를 호출하지만 그 결과를 확인하지 않고
// 무조건 true를 반환하여 서명 검증을 우회함
verifier.verify(sign);
return true;
}
}
💡 수정 가이드
1. verify() 반환값 확인
verify() 메서드는 서명이 유효하면 true, 아니면 false를 반환합니다. 이 값을 리턴하세요.
return verifier.verify(sign);
📊 분석 결과
🎯 목표
전자서명 검증 기능은 데이터의 무결성과 인증을 보장합니다. 서명 검증 함수의 결과값을 무시하고 무조건 성공(true)을 반환하는 코드를 수정하여 실제 검증 결과를 반환하도록 하세요.