Busy Waiting
·
DevSec
Busy Waiting?바쁜 대기(Busy Waiting)는 말그대로 CPU를 바쁘게 쓰면서 기다린다는 뜻이다.어떤 스레드에서 공유 자원을 쓰려할때 다른 스레드가 이미 락(Lock)을 쥐고 있을 때 Sleep 하는 대신 무한 루프를 돌면서 락이 풀렸는지 계속 확인하는 방식이다.예시 코드volatile int lock = 0;void critical_section(){ while (lock == 1) { } lock = 1; lock = 0;}이런식으로 구현된다.왜 씀?굳이 Sleep 시키지 않고 무한 루프를 돌면서 CPU를 낭비해가면서 이걸 쓰는 이유가 있다.속도가 빠르다: 조건이 만족되었을 때는 속도가 빠르다. 뮤텍스(Mutex)같은 방식은 락을 못 얻으면 Sleep시키고 락이 풀..
Context Switching
·
DevSec
Context Switching?CPU는 한번에 하나의 작업만 처리할 수 있다. 근데 난 노래를 들으면서 게임을 하면서 강의를 들으면서 친구와 디스코드로 대화를 한다.이게 어떻게 가능할까?이게 가능한 이유는 컴퓨터가 여러 프로세스나 스레드를 아주 매우 많이 빠르게 전환해 번갈아가면서 실행하기 때문이다.이때 작업중이던 작업에서 다른 작업으로 넘어가는 것을 Context Switching이라고 한다.저장과 복원현재 하던 작업 A의 상태, 예를 들어서 어디까지 계산했는지나, 레지스터 값 등을 프로세스 제어 블록(PCB)등에 저장하고 넘어갈 작업 B의 이전 상태를 복원해서 이어서 할 수 있다.오버헤드(Overhead)이 전환 과정은 CPU가 실제로 무슨 유용한 프로그램을 실행하는게 아니라 운영체제가 내부 시스템..
Spinlock and Mutex
·
DevSec
스핀락과 뮤텍스 (Spinlock & Mutex)동기화(Synchronization)의 필요성멀티프로세스 및 멀티스레드 환경에서는 여러 작업이 동시에 실행되면서 공유 데이터를 다루게 된다. 이 과정에서 동기화 기법이 필요한 이유는 다음 현상들을 방지하기 위해서다.경쟁 상태 (Race Condition): 두 개 이상의 프로세스나 스레드가 공유 자원에 동시에 접근해서 실행 순서에 따라 결과값이 의도치 않게 달라질 수 있는 것.임계 구역 (Critical Section): 여러 프로세스 혹은 스레드가 공유 자원에 접근하는 코드 영역, 레이스 컨디션이 발생할 수 있는 구역이다.이러한 Critical Section 문제를 해결하고 데이터의 일관성을 보장하기 위해서는 한 프로세스가 임계 구역에 들어가 있을 때 다..
Calling Convention
·
DevSec
함수 호출 규약함수 호출 규약(Calling Convention): 함수의 호출 및 반환에 대한 약속어느 함수에서 다른 함수를 호출(Calling)할 때 프로그램의 실행 흐름이 다른 함수로 이동한다. 그 후 호출한 함수가 반환되면 다시 원래 함수로 돌아와서 기존 실행 흐름을 이어간다.그렇기 때문에 함수를 호출할 때는 반환된 이후의 실행 흐름을 이어나가기 위해 Caller 의 Stack frame 와 Return Address 를 저장해야한다. 그리고 Caller 는 Callee 가 요구하는 인자는 전달해줘야 하고 Callee 의 실행이 종료될 때는 반환값을 전달받아야 한다.함수 호출 규약이 적용되는 것은 보통 개발자가 고수준 언어로 코드를 짜면 컴파일러에 의해서 함수들이 Calling Convention..
Stack Canary
·
DevSec
Stack Canary스택 카나리(Stack Canary): 스택 버퍼 오버플로우를 탐지하기 위해 함수의 스택 프레임에 삽입되는 보호 값.Stack Canary 보호 기법Stack Canary는 함수가 실행될 때 스택에 임의의 값을 넣어두고, 함수가 종료되기 전에 해당 값이 변조되었는지 확인하는 보호 기법이다.버퍼 오버플로우가 발생하면 일반적으로 지역 변수 영역을 넘어 SFP, Return Address 까지 덮어쓰게 된다.이때 Return Address 앞에 Canary 값을 배치해두면, Return Address가 덮이기 전에 Canary 값이 먼저 변조된다.char buf[0x30];read(0, buf, 0x100);위의 C언어 코드는 buf의 크기보다 더 많은 데이터를 입력받기 때문에 Stack..
Shellcode - orw Shellcode
·
DevSec
Shellcode셸코드(Shellcode): 익스플로잇을 위해 제작된 어셈블리 코드 조각.orw Shellcodeorw 셸코드: 파일을 열고, 읽고 화면에 출력하는 셸코드.char buf[0x30];int fd = open("/tmp/flag", RD_ONLY, NULL);read(fd, buf, 0x30);write(1, buf, 0x30);위의 C언어 코드를 셸코드로 구현해보자orw Shellcode를 작성하기 위해 필요한 syscall은syscall rax rdi rsi rdxread0x00unsigned int fdchat *bufsize_t countwrite0x01unsigned int fdconst char *bufsize_t countopen0x02const char *filenameint..
1-Day : CVE-2026-28466
·
DevSec
CVSS: 9.9대상 서비스OpenClaw게이트웨이와 노드 간 WebSocket 기반 통신을 통해 명령 실행, 도구 호출, 원격 작업을 처리하는 시스템연결된 노드 호스트에 대해 system.run 같은 명령 실행 기능을 제공함게이트웨이에서 인증된 클라이언트 요청을 받아 노드 레지스트리를 통해 대상 노드로 전달하는 구조임승인 기반 실행 통제 로직을 통해 위험 명령의 실행 여부를 제어하는 보안 게이트를 포함하고 있음대상 버전영향 받는 버전: 2026.2.14 이전의 OpenClaw 버전패치 버전: 2026.2.14 이후 수정 버전취약점 개요취약점의 종류RCE인증 후 원격 코드 실행승인 우회node.invoke 호출 시 내부 승인 필드가 정화되지 않아 실행 승인 게이트를 우회할 수 있음.파라미터 인젝션공격자가..
1-Day : CVE-2026-26954
·
DevSec
CVSS: 10.0대상 서비스SandboxJSJavaScript 코드를 격리된 환경에서 실행하기 위한 JavaScript 샌드박스 라이브러리호스트 전역 객체 및 위험한 내장 객체에 대한 접근을 제한해 비신뢰 코드 실행 환경을 제공하는 목적의 라이브러리내부적으로 허용된 프로토타입과 속성 집합, 래퍼 객체, taint 추적, 실행 제한 등을 기반으로 샌드박스 경계를 유지함Node.js 환경 등에서 동적 코드 실행, 플러그인 처리, 사용자 스크립트 격리 용도로 사용될 수 있음대상 버전영향 받는 버전: SandboxJS 0.8.34 이전 모든 버전패치 버전: SandboxJS 0.8.34취약점 개요취약점의 종류Sandbox EscapeRCE비인증 임의 코드 실행 가능 구조taint 추적 우회위험한 호스트 함수가..
1-Day : CVE-2026-3672
·
DevSec
CVSS: 7.8대상 서비스JeecgBootJava 기반의 저코드/엔터프라이즈 개발 프레임워크코드 생성기, 권한 관리, 딕셔너리, 온라인 개발 등 백오피스 성격의 기능을 통합 제공함Spring Boot, MyBatis-Plus, Vue 기반으로 구성되며 국내외에서 빠른 업무 시스템 구축 용도로 사용됨내부적으로 WAF 성격의 SQL 필터링 로직을 포함하고 있어 일부 동적 쿼리 입력에 대한 방어를 수행함대상 버전영향 받는 버전: JeecgBoot 3.9.0, 3.9.1취약점 개요취약점의 종류SQL Injection인증 후 SQL 인젝션WAF 우회JeecgBoot 내장 WAF의 정규식 및 블랙리스트 검증 로직을 우회할 수 있음.동적 SQL 인젝션외부 입력이 filterSql로 해석되어 SQL의 where 절 ..
1-Day : CVE-2026-21236
·
DevSec
CVSS : 7.8대상 서비스Windows Ancillary Function Driver for WinSock (AFD.sys)Windows 커널 모드에서 동작하는 드라이버유저 모드의 WinSock(Windows Socket) API 호출을 커널 레벨에서 처리하는 네트워킹 컴포넌트TCP/IP, UDP 등 네트워크 프로토콜의 소켓 서비스를 구현함유저 모드 소켓 API를 마샬링하고 IOCTL 및 제어 요청을 처리한 뒤 하위 레벨 전송 드라이버와 상호작용함커널 컨텍스트에서 실행되면서도 일반적인 네트워킹 API를 통해 접근이 가능함대상 버전Windows 11: 22H3, 23H2, 24H2, 25H2, 26H1 (build 10.0.28000.0)Windows 10: 1607, 1809, 21H2, 22H2Wi..