α’ααααα·αααααααααααΆααααααααααΆα Cosmopolitan C αα·ααααα·ααΆ Redbean ααΆααααααΆαααΈααΆαα’αα»ααααααααααΆαα―αα pledge() αααααΆααααΈαα»α α ααΆααααααΆαααααααΌαααΆααααααΎαα‘αΎαααααΌαααααααααα OpenBSD α αΎαα’αα»ααααΆαα±ααα’αααααααΎαααΎαα αΆαααΆαααααααα·ααΈααΈααΆαα αΌαααααΎααΆαα α ααΌαααααααααααααααααα·αααααΎ (αααααααααααααΈαααααΆαα α ααΆαααααααααααααΌαααΆααααααΎαα‘αΎααααααΆαααααααα·ααΈ α αΎαααΆαα α ααΌαααααααααααααααααΌαααΆαα αΆαααΆαα)α αα·αααΌα ααααααΆααααααααααααΆαα αΌαααααΎ syscall αααααΆααα αααα»αααΈαα»α ααΌα ααΆ seccomp αα ααααααΆααααααΆααααΌαααΆααα ααΆα‘αΎαααΈααΌαααααΆααα αΌααααααΆααααα½αααααΎααΆααααα’αΆα ααααΎαα ααΆαα
αααα·ααααα½α ααααΎαααααααΆααααααα»αααΆαααααααααα·ααΈαα αααα»αααα·ααΆααΆαααΌαααααΆα OpenBSD αααααααΎααααααΆα systrace ααΆααααα αΆαααΆ ααΆαα―αααα ααααα·αααααΆαα α ααΆααααααααααα»ααααααΊαααα»αααααΆαααα αα·αα αααΆααααα αααΎαα ααΆαααααΎααα½α ααΆααααααΆαα½αααααΌαααΆαααααΎα‘αΎα αααα’αα»ααααΆαα±αααααααΎαα αααΆααααΆα ααααα‘αα ααααα·αα αΆαααΆα αα αΌααα αααα»αααααααΆααααα’α·α αα·ααααα αααααΆααα αΌαααααΎααααΆαααααααααααα½α ααΆααααα α α§ααΆα ααα ααααΆααααααααααααΌαααΊ stdio (αααα αΌα/αα·ααααα) rpath (ααα’αΆαα―αααΆα) wpath (ααΆααααααα―αααΆα) cpath (αααααΎαα―αααΆα) tmppath (ααααΎααΆαααΆαα½αα―αααΆαααααααα’αΆαααα) inet (αααααααααΆα) unix (unix αααα), dns (αααααααααΆα DNS), getpw (α’αΆαααΆαα αΌαααααΎααΌαααααΆααα·ααααααα’αααααααΎααααΆαα), ioctl (ααΆαα α ααΌααααα ioctl), proc (ααΆααααααααααααααΎαααΆα), exec (α αΆααααααΎαααααΎαααΆα) αα·αααααααααΆαα (ααΆααααα½ααα·αα·αααααΆαα’αα»ααααΆα)α
α αααΆαααααααΆααααααΎααΆαααΆαα½αααΆαα α ααΌαααααααααααααααααΌαααΆααααααΆαααααα»αααααααααα αααΆαααααααααααα½ααααα αΌααααααΈααααααΆααα α αααααααααααααΆαα’αα»ααααΆα αα·αα’αΆααααααααΌαα―αααΆααααααΆαα αΌαααααΎααααΌαααΆαα’αα»ααααΆαα αααααΆααααΈαααααΎα αα·αααααΎαααΆααααααα·ααΈαααααΆααααααα ααΊαααααΉααααααααααααΆαααΆααααα½ααα·αα·αααααΆαα’αα»αααααΆαα αααΆαααααααΆααααααΆααα
αααα‘ααααΈααααΆ ααΆαα’αα»ααααααΆααααααΆαααααΆαα FreeBSD αααα»αααααΌαααΆααααααΎαα‘αΎα αααααααΌαααΆααααααΆααααααααααααΆααααα»αααΆαααααααααα·ααΈααααα·αα αΆαααΆα αααααΎααΆαααααΆααααααΌαααΌααααααα½ααα ααααααααααα αααα»α OpenBSD ααΆαα α αααααΆααΊαααα ααΎααΆααα½ααααα αΌααααΆαααΉααααΉαααΆαα½αααΉαααα·ααΆααΆαααΌαααααΆα αα·αααααααα αααΆααααααααα ααΆααααΌαααΈαα½ααα αααααα·ααΈα
α’αααα’αα·ααααααααα αααααΈαα»α ααααΆααααααΆααΆαααα§ααΆα ααα FreeBSD α αΎααααα½αα±ααααΆαααααΆααααααΌαααΌα ααΆααααα αα§ααααααααααα pledge.com αααα’αα»ααααΆαα±ααα’αααα’αα»ααααααΆαααΉααααααΉαααααα·αααααΆααααααΌαααΌααααααα·ααΈα α§ααΆα ααα ααΎααααΈααααΎαααΆαα§αααααααααΎααααΆαα curl ααΆαα½αααΉαααΆαα αΌαααααΎααααααΆααα α αααααααα stdio, rpath, inet, αα·α threadstdio ααα»ααααα ααααΆααααααααΎαααΆα "./pledge.com -p 'stdio rpath inet thread' curl http://example.com" .
α§αααααααααΎααααΆαααααααΆααααΎαααΆαααΎααΆαα ααα αΆαααΈαα»α ααΆααα’ααα αΆααααΆααααΈ RHEL6 α αΎααα·αααααΌαααΆααα·αααα·ααΆ root ααα ααΎαααΈααα αααααα’ααααΎαααααΆαααααα API αα½αααααΌαααΆααααααααΌααααααΆααααΆααααααααααααΆαααΉααααααΉααα αααα»αααΌααααααααα·ααΈαα αααα»αααΆααΆ C αααα’αα»ααααΆαα±αααααααΎα enclaves αααααΆααααααΎαααΎαααΆαααΉααααααΉαααΆαα αΌαααααΎααααΆααααΆααααααΉααα»αααΆααααααα·ααΈαα½αα ααα½αα
ααΆαα’αα»αααααα·ααααααΌαα±ααααΆαααΆαααααΆααααααΌαααΊααααα - ααΆαααΉααααααΉαααΆααααααΆααααΌαααΆααααααααα
ααΆα
αααΆαα SECOMP BPF αα·αααααΎαααΆααααααααΎααααααΆαα―ααααΆαα α
ααΆαααααααααααΈαα»α
ααΎαα α§ααΆα ααα ααΆαα α
ααΌααααααααααΆ("stdio rpath", 0) ααΉαααααΌαααΆαααααααααα
ααΆααααα BPF static const struct sock_filter kFilter[] = { /* L0*/ BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, syscall, 0, 14 - 1) , / * L1*/ BPF_STMT(BPF_LD | BPF_W | BPF_ABS, OFF(args[0])), /* L2*/ BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, 2, 4 - 3, 0), /* L3*/ BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, 10, 0, 13 - 4), /* L4*/ BPF_STMT(BPF_LD | BPF_W | BPF_ABS, OFF(args[1])), /* L5*/ |BPF_STUMTAL BPF_K, ~0x80800), /* L6*/ BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, 1, 8 - 7, 0), /* L7*/ BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_2, /* L0*/ BPF_STMT(BPF_LD | BPF_W | BPF_ABS, OFF(args[13])), /* L8*/ BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, 8, 2 - 9, 0), /*L12*/BPFJ (BPF_JMP | BPF_JEQ | BPF_K, 10, 0 - 10, 6), /*L12*/ BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, 11, 0, 11 - 17), /*L0*/ BPPPF_MTRE, BPPF_MTRE α’αα»ααααΆα ), /*L13*/ BPF_STMT(BPF_LD | BPF_W | BPF_ABS, OFF(nr)), /*L11*/ /* ααααααααααΆαα */ };
ααααα: opennet.ru