๋กœ์ผ“๐Ÿพ
article thumbnail

https://nakedsecurity.sophos.com/2019/05/10/chrome-browser-pushes-samesite-cookie-security-overhaul/

 

์ฟ ํ‚ค์— ๋Œ€ํ•ด ์ž์„ธํ•œ๊ฑด ๋‹ค๋ฅธ ๊ธ€์—์„œ ์•Œ์•„๋ณด๊ณ , ์ด ๊ธ€์—์„œ๋Š” ์ฟ ํ‚ค๋ฅผ ์–ด๋–ป๊ฒŒ ์ด์šฉํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

๋Š˜ Persistence ์ฟ ํ‚ค์™€ session ์ฟ ํ‚ค์— ๋Œ€ํ•ด ๋Œ€์ถฉ ์•Œ๊ณ  ๋„˜์–ด๊ฐ€๊ธฐ๋งŒ ํ–ˆ๋Š”๋ฐ ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์ฟ ํ‚ค์— ๋Œ€ํ•ด ์งš๊ณ  ๋„˜์–ด๊ฐ€๋ คํ•ฉ๋‹ˆ๋‹ค.

 

์ด ๊ธ€์˜ ์ฝ”๋“œ๋Š” ์ œ ํšŒ์‚ฌ์˜ ์ฝ”๋“œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ž‘์„ฑ ํ•˜์˜€๊ธฐ์— ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ํ๋ฆ„ ํŒŒ์•…ํ•˜๊ธฐ์—๋Š” ์ข‹์ง€๋งŒ, ์ง€๊ธˆ ๋‹น์žฅ ์ฟ ํ‚ค ๊ด€๋ จํ•œ ์ฝ”๋“œ๊ฐ€ ํ•„์š”ํ•˜์‹ ๋ถ„์€ ์ ํ•ฉํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

l ์ฟ ํ‚ค๋Š” ์–ด๋””์žˆ์„๊นŒ?

 

๊ฐœ๋ฐœ์ž ๋„๊ตฌ ๋‹จ์ถ•ํ‚ค๋Š” F12

 

๊ฐœ๋ฐœ์ž ๋„๊ตฌ Application ํƒญ์„ ๊ฐ€๋ณด๋ฉด ๋ธŒ๋ผ์šฐ์ €์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ์ฟ ํ‚ค์˜ ์ •๋ณด๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

JSESSIONID๋Š” Session ์ฟ ํ‚ค์— ๊ด€ํ•œ ์ •๋ณด์ด๊ณ , ๊ทธ์™ธ์—๋Š” Persistence ์ฟ ํ‚ค์— ๊ด€ํ•œ ๊ฒƒ์ธ๋ฐ ์—ฌ๊ธฐ์„  Persitence ์ฟ ํ‚ค๋ฅผ ๊ทธ๋ƒฅ ์ฟ ํ‚ค๋ผ๊ณ  ์ง€์นญํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

popup104, 105, 106 ์ฟ ํ‚ค๋Š” ์ œ๊ฐ€ ์ง์ ‘ ์‹ฌ์–ด ๋†“์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Value ๊ฐ’๋“ค์ด true ์ธ๊ฒƒ์„ ๋ณด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

l ์ฟ ํ‚ค๋Š” ์–ด๋””์„œ ์‚ฌ์šฉํ• ๊นŒ?

 

2๊ฐœ์˜ ํŒ์—…์ฐฝ

 

ํŒ์—…์ฐฝ์„ ๋ณด์‹œ๋ฉด ์ฒดํฌ๋ฐ•์Šค๋กœ '๋‹ค์‹œ๋Š” ๋„์šฐ์ง€ ์•Š์Œ' , '์˜ค๋Š˜์€ ๊ทธ๋งŒ๋ณด๊ธฐ' ํ•ญ๋ชฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ € ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ฒŒ๋” ํ•„์š”ํ•œ ๊ฒƒ์ด ๋ฐ”๋กœ ์ฟ ํ‚ค์ž…๋‹ˆ๋‹ค.

 

์œ„์—์„œ ๊ฐ ์ฟ ํ‚ค์˜ value ๊ฐ’๋“ค์„ ๊ฐ€์ง€๊ณ  ์„œ๋ฒ„๋‹จ์—์„œ ์ฟ ํ‚ค์˜ value๊ฐ€ true ์ด๋ฉด ํŒ์—…์ด ๋œจ์ง€ ์•Š๊ฒŒ๋” ํ•ด์ฃผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

getCookieValue : function(key){
	let cookieKey = key + "="; 
	let result = "";
	const cookieArr = document.cookie.split(";");

	for(let i = 0; i < cookieArr.length; i++) {
		if(cookieArr[i][0] === " ") {
			cookieArr[i] = cookieArr[i].substring(1);
		}

		if(cookieArr[i].indexOf(cookieKey) === 0) {
			result = cookieArr[i].slice(cookieKey.length, cookieArr[i].length);
			return result;
		}
	}
	return result;
}

 

 

์œ„ ์ฝ”๋“œ๋Š” Cookie์˜ value ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๋Š” ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.

 

 

์ฝ˜์†”๊ฐ’์œผ๋กœ true๊ฐ€ ์ถœ๋ ฅ๋˜์‹ ๊ฑธ ๋ณด์‹ค์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

var cookieKey = result.data.result[index].seq;
					
var today = _this.getToday();

var cookieValue = _this.getCookieValue(`popup${cookieKey}`);
alert(cookieValue);

if(cookieValue !== 'true'){
	if(today >= str_date && today <= end_date){
		var options = `top=`+ posY +`, left=`+ posX +`,width=` + width + `, height=`+ height + `, status=no, menubar=no, toolbar=no, resizable=no`;
		window.open("adm/popup/openPopup?popup_seq="+result.data.result[index].seq, "popup="+result.data.result[index].seq, options);				
	}
}

 

๊ทธ๋ฆฌ๊ณ  ๊ฐ€์ ธ์˜จ value ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ๋งŒ์•ฝ true๊ฐ€ ์•„๋‹ˆ๋ฉด ํŒ์—…์ฐฝ์„ ๋„์–ด์ค๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์ฟ ํ‚ค๋ฅผ ์‹ฌ์–ด์ฃผ์ง€ ์•Š์•˜๋‹ค๋ฉด ํ•ด๋‹น ์ฟ ํ‚ค์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ์—†์–ด์„œ cookieValue๊ฐ€ true ๊ฐ’์„ ๊ฐ€์ง€์ง€ ๋ชปํ•ด ํŒ์—…์ฐฝ์ด ๋œจ๊ฒŒ ๋ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

(์ฟ ํ‚ค Value์˜ true์€ ์ œ๊ฐ€ ์ž„์˜๋กœ ์ •ํ•ด๋‘”๊ฑฐ๋ผ ์ €์žฅํ•˜๊ณ  ์‹ถ์€์‹ ๋Œ€๋กœ ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.)

 

function setCookie(c_name,value,exdays){
            var exdate=new Date();
            exdate.setDate(exdate.getDate() + exdays);
            var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
            <% if(popupTy == 1){ %>
            window.opener.document.cookie=c_name + "=" + c_value;
            //์ž์‹์ฐฝ์œผ๋กœ๋ถ€ํ„ฐ ๋ถ€๋ชจ์ฐฝ์— ์žˆ๋Š” ์†์„ฑ๋“ค์„ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•์€ opener ๋ผ๋Š”๊ฒƒ์„ ํ™œ์šฉํ•˜์—ฌ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ 
            <% }else{ %>
            window.parent.document.cookie=c_name + "=" + c_value;
            //window.parent๋Š” <iframe> ํƒœ๊ทธ์˜ ๋ถ€๋ชจ, opener๋ž‘์€ ์—„์—ฐํžˆ ๋‹ค๋ฅด๋‹ค
            <% } %>
        }
        function setCookieClick( key, value, day ){
            setCookie(key, value, day);
            closePopup('<%=cSR.getParamterInt(popup,"popup_seq")%>');
        }
        function closePopup( id ){
            window.open('about:blank','_self').close();
            <% if(popupTy == 0){ %>
            parent.closeLayerPopup( id );
            <% } %>
        }

 

์œ„ ์ฝ”๋“œ๋Š” JSP์— ์žˆ๋Š” ์ฟ ํ‚ค๋ฅผ ๋ธŒ๋ผ์šฐ์ €์— ์‹ฌ์–ด์ฃผ๋Š” ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋ˆˆ์—ฌ๊ฒจ ๋ณผ ์ฝ”๋“œ๋Š” window.opener์™€ window.parent์ž…๋‹ˆ๋‹ค.

 

์ด ๋‘˜์˜ ํŒ์—…์ฐฝ์˜ ๋ถ€๋ชจ๋ฅผ ์„ ํƒํ•ด์ฃผ๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. ์ฆ‰ ํŒ์—…์˜ ๋ถ€๋ชจ๋‹ˆ๊น ๊ฒฐ๊ตญ ํŒ์—…์„ ์‹คํ–‰์‹œ์ผœ์ค€ ํŽ˜์ด์ง€๊ฐ€ ๋ถ€๋ชจ๊ฐ€ ๋˜๊ฒ ์ง€์š”. ์ฐจ์ด๋Š” window.opener์˜ ๊ฒฝ์šฐ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์œˆ๋„์šฐ ์ฐฝ์—์„œ์˜ ๊ฒฝ์šฐ์ด๊ณ , window.parent๋Š” iframe ๊ด€๋ จํ•œ ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.

 

๋งŒ์•ฝ winow.openr.document.cookie ๊ฐ€ ์•„๋‹ˆ๊ณ  ๊ทธ๋ƒฅ document.cookie๋ฅผ ํ•ด์ค€๋‹ค๋ฉด ํŒ์—… ์ž์ฒด ๋ธŒ๋ผ์šฐ์ €์— ์ฟ ํ‚ค๋ฅผ ์‹ฌ๊ฒŒ๋˜์„œ ๊ธฐ๋Šฅ์— ์˜ค๋ฅ˜๊ฐ€ ์ƒ๊ธฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋ฉ”์ธ ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” ์ฟ ํ‚ค์˜ ์œ ๋ฌด๋ฅผ ํŒ๋‹จํ•ด์ค„์ˆ˜ ์—†๊ฒŒ ๋˜์ง€์š”.

 

l ์ฟ ํ‚ค๋ฅผ ์ง์ ‘ ์‹คํ—˜ํ•ด๋ณด์ž

 

 

๋‹ค์Œ๊ณผ ํŒ์—…์ด ์žˆ๊ณ  ์ด ํŒ์—…์— ๋Œ€ํ•œ ์ฟ ํ‚ค๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ '๋‹ค์‹œ๋Š” ๋„์šฐ์ง€ ์•Š์Œ', '์˜ค๋Š˜์€ ๊ทธ๋งŒ๋ณด๊ธฐ'๋ฅผ ์ฒดํฌํ•  ๊ฒฝ์šฐ!!

 

 

popup105, popup106 ์ฟ ํ‚ค๊ฐ€ ์‹ฌ์–ด์ง„ ๊ฒƒ์„ ๋ณด์‹ค์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  popup105์˜ expires ๊ฒฝ์šฐ 2021๋…„์ธ๋ฐ ์ด๋Š” '๋‹ค์‹œ๋Š” ๋„์šฐ์ง€ ์•Š์Œ' ์„ 1๋…„์œผ๋กœ ์„ค์ •ํ•ด๋†“์•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. popup106 ๊ฐ™์€ ๊ฒฝ์šฐ '์˜ค๋Š˜์€ ๊ทธ๋งŒ๋ณด๊ธฐ' ์ด๋ฏ€๋กœ ๊ธ€์“ด ๊ธฐ์ค€ ๋‚ ์งœ(2020-12-29)์œผ๋กœ ํ•˜๋ฃจ ๋‹ค์Œ๋‚ ์ด 2020-12-30์ธ๊ฒƒ์„ ํ™•์ธ ํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋งŒ๋ฃŒ๊ฐ€ ๋˜๋ฉด ํ•ด๋‹น ์ฟ ํ‚ค๋ฅผ ์‚ฌ๋ผ์งˆ ๊ฒƒ์ด๋ฉฐ, Value ๊ฐ’์ด ์—†์–ด์„œ ํŒ์—…์€ ๋‹ค์‹œ ๋‚˜ํƒ€๋‚˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

ใ…ฃ ์š”์•ฝ

 

  • ํŒ์—…์ฐฝ์˜ ์ฟ ํ‚ค ๊ฐ™์€ ๊ฒฝ์šฐ ๋ถ€๋ชจ ๋ธŒ๋ผ์šฐ์ €์— ์ฟ ํ‚ค๋ฅผ ์‹ฌ์–ด์ค˜์•ผ ์ œ ๊ธฐ๋Šฅ์„ ํ•œ๋‹ค.
  • ์ฟ ํ‚ค์˜ Value ๊ฐ’์€ ์•„๋ฌด๊ฑฐ๋‚˜ ํ•ด๋„ ์ƒ๊ด€์—†๋‹ค.
  • ์ฟ ํ‚ค ๋งŒ๋ฃŒ ๊ธฐ๊ฐ„์ด ์ง€๋‚˜๋ฉด ์ฟ ํ‚ค๋ฅผ ์•Œ์•„์„œ ์—†์–ด์ง„๋‹ค.
  • ํŒ์—…์˜ ๊ธฐ๋Šฅ ๊ฐ™์€ ๊ฒฝ์šฐ ์ฟ ํ‚ค Value๋ฅผ ๊ฐ€์ ธ์™€ ๊ฐ’์ด ์žˆ์œผ๋ฉด ํŒ์—…์„ ์•ˆ๋„์šฐ๊ฒŒ ํ•ด์ค€๋‹ค.

 

 

์ฝ์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์งˆ๋ฌธ์€ ์–ธ์ œ๋‚˜ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.

 

"๋‚œ ๋ฐ˜๋“œ์‹œ ๋ฐฑ์—”๋“œ ์™•์ด ๋ ๊ฑฐ์•ผ"

profile on loading

Loading...