Skip to content

fix: EgovARIA·EgovGeneralCryptoServiceImpl setBlockSize 0·음수 입력 검증#270

Open
z3rotig4r wants to merge 1 commit into
eGovFramework:mainfrom
z3rotig4r:fix/crypto-blocksize-validation
Open

fix: EgovARIA·EgovGeneralCryptoServiceImpl setBlockSize 0·음수 입력 검증#270
z3rotig4r wants to merge 1 commit into
eGovFramework:mainfrom
z3rotig4r:fix/crypto-blocksize-validation

Conversation

@z3rotig4r

Copy link
Copy Markdown
Contributor

배경

EgovARIACryptoServiceImpl·EgovGeneralCryptoServiceImplencrypt(File, String, File)new byte[blockSize] 버퍼로 파일을 읽어 암호화합니다. blockSizesetBlockSize(int)로 설정되는데, 두 클래스 모두 이 값의 유효성을 검사하지 않습니다.

setBlockSize(0)이 호출되면 버퍼가 길이 0이 되어 InputStream.read(buffer)가 항상 0을 반환합니다. 두 클래스의 읽기 루프(while ((len = read(...)) != -1), while ((length = read(...)) >= 0))는 이 0을 종료 조건으로 인식하지 못해 무한 루프에 빠집니다(CWE-835). 음수 blockSizeEgovGeneralCryptoServiceImpl에서 new byte[blockSize]NegativeArraySizeException을 일으킵니다.

기본값은 1024이므로 정상 사용에는 문제가 없으나, 설정값이 0이나 음수로 주입되면 파일 암호화가 멈추거나 실패합니다.

변경 내용

두 클래스의 setBlockSize(int)가 0 이하의 값을 IllegalArgumentException으로 거부하도록 입력 검증을 추가합니다. EgovARIACryptoServiceImpl은 기존에도 setBlockSize에서 blockSize를 BLOCKSIZE_MODULAR 배수로 정규화하고 있어, 같은 지점에 검증을 더합니다.

테스트

두 클래스의 setBlockSize(0)·음수 입력이 IllegalArgumentException을 던지고, 양수 입력은 정상 처리됨을 확인하는 테스트를 추가했습니다. 기존 crypto 모듈 테스트도 그대로 통과합니다.

영향

정상적인 양수 blockSize 사용에는 영향이 없으며, 잘못된 0·음수 설정이 무한 루프나 예외로 이어지기 전에 설정 시점에서 거부됩니다.

encrypt(File, String, File)는 new byte[blockSize] 버퍼로 파일을 읽어 암호화한다.
setBlockSize(0)이 호출되면 버퍼 길이가 0이 되어 InputStream.read(buffer)가 항상 0을
반환하고, 읽기 루프가 이를 종료 조건(!=-1 / >=0)으로 인식하지 못해 무한 루프에 빠진다(CWE-835).
음수 blockSize는 EgovGeneralCryptoServiceImpl에서 NegativeArraySizeException을 일으킨다.

기본값은 1024라 정상 사용에는 문제가 없으나, 0이나 음수가 주입되면 파일 암호화가 멈추거나
실패한다. 두 클래스의 setBlockSize가 0 이하 값을 IllegalArgumentException으로 거부하도록
입력 검증을 추가한다. ARIA는 기존 정규화 지점에 검증을 더한다.

테스트: 두 클래스의 setBlockSize(0)·음수가 예외를 던지고 양수는 정상 처리됨을 확인.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant