fix: EgovARIA·EgovGeneralCryptoServiceImpl setBlockSize 0·음수 입력 검증#270
Open
z3rotig4r wants to merge 1 commit into
Open
fix: EgovARIA·EgovGeneralCryptoServiceImpl setBlockSize 0·음수 입력 검증#270z3rotig4r wants to merge 1 commit into
z3rotig4r wants to merge 1 commit into
Conversation
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)·음수가 예외를 던지고 양수는 정상 처리됨을 확인.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
배경
EgovARIACryptoServiceImpl·EgovGeneralCryptoServiceImpl의encrypt(File, String, File)는new byte[blockSize]버퍼로 파일을 읽어 암호화합니다.blockSize는setBlockSize(int)로 설정되는데, 두 클래스 모두 이 값의 유효성을 검사하지 않습니다.setBlockSize(0)이 호출되면 버퍼가 길이 0이 되어InputStream.read(buffer)가 항상 0을 반환합니다. 두 클래스의 읽기 루프(while ((len = read(...)) != -1),while ((length = read(...)) >= 0))는 이 0을 종료 조건으로 인식하지 못해 무한 루프에 빠집니다(CWE-835). 음수blockSize는EgovGeneralCryptoServiceImpl에서new byte[blockSize]시NegativeArraySizeException을 일으킵니다.기본값은 1024이므로 정상 사용에는 문제가 없으나, 설정값이 0이나 음수로 주입되면 파일 암호화가 멈추거나 실패합니다.
변경 내용
두 클래스의
setBlockSize(int)가 0 이하의 값을IllegalArgumentException으로 거부하도록 입력 검증을 추가합니다.EgovARIACryptoServiceImpl은 기존에도setBlockSize에서 blockSize를BLOCKSIZE_MODULAR배수로 정규화하고 있어, 같은 지점에 검증을 더합니다.테스트
두 클래스의
setBlockSize(0)·음수 입력이IllegalArgumentException을 던지고, 양수 입력은 정상 처리됨을 확인하는 테스트를 추가했습니다. 기존 crypto 모듈 테스트도 그대로 통과합니다.영향
정상적인 양수 blockSize 사용에는 영향이 없으며, 잘못된 0·음수 설정이 무한 루프나 예외로 이어지기 전에 설정 시점에서 거부됩니다.