728x90
GattLib 0.2의 Stack Buffer Overflow
유형
Stack-Based Buffer Overflow
CWE-121
Exploit-db
https://www.exploit-db.com/exploits/46215
분석
// gattlib.c
// Transform string from 'DA:94:40:95:E0:87' to 'dev_DA_94_40_95_E0_87'
strncpy(device_address_str, dst, sizeof(device_address_str));
for (i = 0; i < strlen(device_address_str); i++) {
if (device_address_str[i] == ':') {
device_address_str[i] = '_';
}
}
char *strncpy(char *dest, const char* origin, size_t n); 는 origin의 문자열을 dest로 복사하는데 n만큼 복사하는 함수이다. n이 origin의 길이 이하이면 \0이 복사되지 않는다.
항상 null로 종료되지 않기 때문에 버퍼 오버플로우가 발생할 수 있다.
// discover.c
if (argc != 2) {
printf("%s <device_address>\n", argv[0]);
return 1;
}
connection = gattlib_connect(NULL, argv[1], BDADDR_LE_PUBLIC, BT_SEC_LOW, 0, 0);
if (connection == NULL) {
fprintf(stderr, "Fail to connect to the bluetooth device.\n");
return 1;
}
argv[1] 크기를 처리하지 않으면 오버플로우가 발생할 수 있다.
728x90
'보안 > 취약점 분석' 카테고리의 다른 글
CVE-2023–37734: Buffer-overflow in mp3_audio_converter (0) | 2023.08.11 |
---|---|
CVE-2017-17969: ZIP Shrink Heap Buffer Overflow (0) | 2023.08.11 |
CVE-2022-0453: A Remote Stack Overflow in The Linux Kernel (0) | 2023.08.08 |
CVE-2017-15048: Zoom Linux Client Stack-based Buffer Overflow (0) | 2023.08.08 |
CVE-2017-5375, CVE-2016-1960 (0) | 2023.08.02 |