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

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

· 4년 전 · 1401

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

댓글 작성

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

로그인하기

게시글 목록

번호 제목
16893
16890
16889
16888
16887
16886
16885
16884
16883
16882
16881
16880
16871
16870
16868
16863
16861
16856
16852
16834
16833
16829
16827
16826
16823
16822
16819
16818
16817
16806