테스트 사이트 - 개발 중인 베타 버전입니다

Redos ( Regular expression Denial of Service ) 대응관련 모듈

· 4년 전 · 1406

1. Redos ( Regular expression Denial of Service )의 정의 및 대응방안

 

 - 역추적 알고리즘 기반으로된 정규식의 취약점을 이용하여 서버의 자원을 상당부분 차지하여 서버를 마비시키는 공격 

 - 역추적 알고리즘 기반의 정규식이 아닌 automata 알고리즘을 사용한 google re2 사용 권장

 

2. google re2 특징 

 

- Re2는 automata 이론을 사용하여 정규식 입력 검색에서 선형시간에 실행되도록 보장

- 메모리 제한을 구현하여 정규식 검색시 한정된 메모리 양으로 제한

   => 정규식인해 서버다운될 일이 없을것 같습니다.

 

3. 설치

 

설치법은 간단합니다.

[code]

npm install --save re2

[/code]

 

 

4. 사용법

 

[code]

var RE2 = require("re2");

// with default flags
var re = new RE2("a(b*)");
var result = re.exec("abbc");
console.log(result[0]); // "abb"
console.log(result[1]); // "bb"

result = re.exec("aBbC");
console.log(result[0]); // "a"
console.log(result[1]); // ""

// with explicit flags
re = new RE2("a(b*)", "i");
result = re.exec("aBbC");
console.log(result[0]); // "aBb"
console.log(result[1]); // "Bb"

// from regular expression object
var regexp = new RegExp("a(b*)", "i");
re = new RE2(regexp);
result = re.exec("aBbC");
console.log(result[0]); // "aBb"
console.log(result[1]); // "Bb"

// from regular expression literal
re = new RE2(/a(b*)/i);
result = re.exec("aBbC");
console.log(result[0]); // "aBb"
console.log(result[1]); // "Bb"

// from another RE2 object
var rex = new RE2(re);
result = rex.exec("aBbC");
console.log(result[0]); // "aBb"
console.log(result[1]); // "Bb"

// shortcut
result = new RE2("ab*").exec("abba");

// factory
result = RE2("ab*").exec("abba");
 

[/code]

 

 

참고 링크1 : https://github.com/uhop/node-re2/

참고 링크2 : https://github.com/google/re2 

참고 링크3 : https://owasp.org/www-community/attacks/Regular_expression_Denial_of_Service_-_ReDoS

참고 링크:4 : https://techxplore.com/news/2021-08-high-performance-tool-redos-vulnerability.html

참고 링크5 : https://stackoverflow.com/questions/37378330/how-to-trigger-regex-denial-of-service-in-php
 

번외 PHP Redos 관련 링크 : https://www.codetd.com/en/article/7672378

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

게시글 목록

번호 제목
17523
17516
17515
17514
17498
17493
17490
17487
17485
17481
17478
17477
17474
17473
17472
17470
17469
17463
17462
17461
17460
17458
17457
17454
17453
17448
17447
17446
17445
17444