<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
	<id>http://junhoahn.kr/noriwiki/index.php?action=history&amp;feed=atom&amp;title=Software_fault_isolation</id>
	<title>Software fault isolation - 편집 역사</title>
	<link rel="self" type="application/atom+xml" href="http://junhoahn.kr/noriwiki/index.php?action=history&amp;feed=atom&amp;title=Software_fault_isolation"/>
	<link rel="alternate" type="text/html" href="http://junhoahn.kr/noriwiki/index.php?title=Software_fault_isolation&amp;action=history"/>
	<updated>2026-05-14T20:46:37Z</updated>
	<subtitle>이 문서의 편집 역사</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>http://junhoahn.kr/noriwiki/index.php?title=Software_fault_isolation&amp;diff=20&amp;oldid=prev</id>
		<title>Ahn9807: 새 문서: 분류: 소프트웨어 기반 보안  == 개요 == SFI (software fault isolation)은 memory access와 control transfer operation에 dynmaic한 checks를 수행함으로써 malicious한 프로그램의 실행에서 host를 보호하는 기법이다. SFI는 OS kernel extension의 분리, browser에서 plug-in들의 분리, 그리고 JVM에서 native libraries들의 분리와 같은 여러 분야에서 사용되고 있다.  == 원리 == SFI는 machine-code level에서 프로...</title>
		<link rel="alternate" type="text/html" href="http://junhoahn.kr/noriwiki/index.php?title=Software_fault_isolation&amp;diff=20&amp;oldid=prev"/>
		<updated>2023-02-03T06:28:06Z</updated>

		<summary type="html">&lt;p&gt;새 문서: &lt;a href=&quot;/noriwiki/index.php?title=%EB%B6%84%EB%A5%98:%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4_%EA%B8%B0%EB%B0%98_%EB%B3%B4%EC%95%88&quot; title=&quot;분류:소프트웨어 기반 보안&quot;&gt;분류: 소프트웨어 기반 보안&lt;/a&gt;  == 개요 == SFI (software fault isolation)은 memory access와 control transfer operation에 dynmaic한 checks를 수행함으로써 malicious한 프로그램의 실행에서 host를 보호하는 기법이다. SFI는 OS kernel extension의 분리, browser에서 plug-in들의 분리, 그리고 JVM에서 native libraries들의 분리와 같은 여러 분야에서 사용되고 있다.  == 원리 == SFI는 machine-code level에서 프로...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;새 문서&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[분류: 소프트웨어 기반 보안]]&lt;br /&gt;
&lt;br /&gt;
== 개요 ==&lt;br /&gt;
SFI (software fault isolation)은 memory access와 control transfer operation에 dynmaic한 checks를 수행함으로써 malicious한 프로그램의 실행에서 host를 보호하는 기법이다. SFI는 OS kernel extension의 분리, browser에서 plug-in들의 분리, 그리고 JVM에서 native libraries들의 분리와 같은 여러 분야에서 사용되고 있다.&lt;br /&gt;
&lt;br /&gt;
== 원리 ==&lt;br /&gt;
SFI는 machine-code level에서 프로세스간의 logical protection을 제공한다. SFI는 untrust한 code가 동작하는 memory 영역을 구별한다. 이러한 protection을 제공하기 위해서, interpreter, rewriter 혹은 compiler의 지원으로 동작한다. SFI는 구별된 memory 영역에서 conde의 data-access와 control flow에 제한을 가하는 것으로 protection을 구현한다. (즉 Data region, code region그리고 trusted runtime region을 구별한다.)&lt;br /&gt;
* 모든 data access는 반드시 data region에 있는 메모리 영역만 참조할 수 있다.&lt;br /&gt;
* control flow는 code region사이에서만 일어나거나 external trusted runtime region만을 참고할 수 있다. &lt;br /&gt;
&lt;br /&gt;
이 두 원칙을 구현하는 모든 code는 지정된 protection boundary밖으로 탈출 할 수 없기에, protection boundary에서 돌아간다고 할 수 있다. 이러한 원칙을 구현하기 위해서 다음과 같은 방식들이 사용된다.&lt;br /&gt;
* Binary translation: interpreter가 모든 machine code들을 검사하면서, 이 machine code들이 제대로 SFI policy를 따르고 있는지 검사하는 기법이다. &lt;br /&gt;
* Inlined Reference monitor: Machine code rewriter가 실행하고자 하는 프로그램에 inline checks들을 삽입해서, 실행하는 프로그램이 SFI policy를 따르고 있는지 감시하는 기법이다. &lt;br /&gt;
&lt;br /&gt;
== 한계 ==&lt;br /&gt;
Bound check그리고 Pointer maksing과 같은 Runtime overhead가 매우 크다. 예를 들어서 [[Native Client]]와 같은 경우 untrusted code 실행에 있어서 거의 42%의 해당하는 overhead가 발생한다고 알려져 있다. &lt;br /&gt;
&lt;br /&gt;
또한 SFI는 control flow를 탈취하거나 변조하는 공격에는 취약하다. 따라서 이러한 한계를 극복하기 위해서 SFI는 [[CFI]]와 같은 control-flow의 integrity를 체킹하는 기법들과 함께 사용되어야 한다. 그러나 CFI와 같은 기법들은 오버헤드가 심하기 때문에 또한 여기서도 performance downgradation이 발생한다. &lt;br /&gt;
&lt;br /&gt;
== 참고 ==&lt;br /&gt;
# http://www.cse.psu.edu/~gxt29/papers/sfi-final.pdf&lt;br /&gt;
# https://dl.acm.org/doi/abs/10.1145/168619.168635&lt;/div&gt;</summary>
		<author><name>Ahn9807</name></author>
	</entry>
</feed>