본문 바로가기

Security

[systemhacking] Off-by-one

반응형

Off-by-one 취약점은 경계 검사에서 하나의 오차가 있을 때 발생하는 취약점.

버퍼의 경계 계산 혹은 반복문의 횟수 계산 시 < 대신 <= 을 쓰거나, 0부터 시작하는 인덱스 고려하지 못하는 경우 발생.

#include <stdio.h>
void copy_buf(char *buf, int sz) {
    char temp[16];
    
    for(i = 0; i <= sz; i++)
        temp[i] = buf[i];
}
int main(void) {
    char buf[16];
    
    read(0, buf, 16);
    copy_buf(buf, sizeof(buf));
}

size + 1 만큼 반복이 돌면서 off-by-one 발생.

반응형