📌 3줄 요약쓰기 길이는 대상 크기를, 읽기 길이는 원본 크기를 넘으면 안 됩니다. 길이를 한쪽에서만 가져오면 반대쪽이 넘칩니다.가장 찾기 어려운 것은 "snprintf로 잘라 놓고 memcpy는 잘리기 전 길이로" 하는 패턴입니다. 테스트에서 뒤 필드가 조용히 덮어써졌고, ASan도 잡지 못했습니다.strncpy는 고정 길이를 써도 원본이 n바이트 이상이면 널 문자를 붙이지 않습니다. 그 필드를 문자열로 다루는 곳에서 옆 필드까지 읽힙니다.진단 결과에 대한 회신을 마치고 같은 소스 파일을 처음부터 다시 읽어 보면, 탐지 목록에 없던 복사 코드가 눈에 들어옵니다. 도구가 조용히 넘긴 줄들이지만 전부 같은 질문으로 정리됩니다. 복사 길이를 어디서 가져왔느냐는 것입니다.memcpy와 strncpy에 넘기는..
📌 3줄 요약snprintf는 넘겨받은 크기만큼만 씁니다. 그 크기를 대상 버퍼가 아니라 원본 길이로 계산하면 snprintf도 그대로 넘칩니다.반환값은 실제로 쓴 길이가 아니라 "버퍼가 충분했다면 썼을 길이"입니다. 이 값을 다음 위치나 memcpy 길이로 쓰다가 생긴 CVE가 여럿 있습니다.크기 인자는 항상 sizeof(대상), 반환값은 0 이상이고 크기 미만인지 확인한 뒤에만 사용합니다. %04d 같은 폭 지정은 최댓값이 아니라 최솟값입니다.앞 글에서는 길이 제한 없는 memcpy를 snprintf로 바꾸는 수정안을 냈습니다. 그런데 같은 코드베이스를 다시 훑어보면 이미 snprintf를 쓰고 있는데도 넘칠 수 있는 줄이 나옵니다. 코드 리뷰에서 "snprintf니까 안전"이라는 말로 넘어가기 쉬..
📌 3줄 요약"인덱스 탐지된 줄이 오탐이 되려면 절삭 기준값, 절삭 함수의 길이 보장, 절삭 직전 버퍼의 널 종료라는 세 전제가 모두 맞아야 합니다.세 번째 전제는 윗줄의 길이 제한 없는 복사에서 자주 깨집니다. snprintf로 받고 memcpy에 상한을 드러내면 탐지 줄과 윗줄을 함께 정리할 수 있습니다.C 소스 진단 결과서에 같은 문구가 수십 줄 반복돼 있습니다. "memo 식이 버퍼의 끝을 넘어서는 메모리를 참조합니다. 버퍼 크기는 50이나, 인덱스는 탐지된 줄만 보면 그 답이 맞습니다. 그런데 오탐 근거를 적으려고 한 줄씩 거슬러 올라가 보면, 근거가 성립하려면 필요한 조건이 생각보다 하나 더 있고, 그 조건이 탐지되지 않은 윗줄에서 깨지는 경우가 있습니다. 직접 실행해 본 결과로 그 과정을..
- Total
- Today
- Yesterday
- 사이버보안
- C 보안
- 보안뉴스
- 개인정보유출
- 시큐어코딩
- 보안상식
- 취약점 분석평가
- sast
- 개발자보안
- 정보보안
- 선박사이버보안
- 오픈소스보안
- mcp 서버
- 금취분평
- 랜섬웨어
- 전자금융기반시설취약점분석평가
- AI보안
- 해킹주의
- 악성코드
- 공급망공격
- 취약점
- 전자금융기반시설
- 펜테스트
- cve
- AI모의해킹
- DevSecOps
- PentestGPT
- 개인정보보호
- 자율침투테스트
- 해킹예방
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 |
