เจฒเฉ€เจจเจ•เจธ เจฒเจˆ เจชเจฒเฉ‡เจœ เจ†เจˆเจธเฉ‹เจฒเฉ‡เจธเจผเจจ เจตเจฟเจงเฉ€ เจจเฉ‚เฉฐ เจชเฉ‹เจฐเจŸ เจ•เจฐเจจ เจฒเจˆ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ

เจ•เฉŒเจธเจฎเฉ‹เจชเฉ‹เจฒเฉ€เจŸเจจ เจธเจŸเฉˆเจ‚เจกเจฐเจก เจธเฉ€ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจ…เจคเฉ‡ เจฐเฉˆเฉฑเจกเจฌเฉ€เจจ เจชเจฒเฉ‡เจŸเจซเจพเจฐเจฎ เจฆเฉ‡ เจฒเฉ‡เจ–เจ• เจจเฉ‡ เจฒเฉ€เจจเจ•เจธ เจฒเจˆ เจชเจฒเฉ‡เจœ() เจ†เจˆเจธเฉ‹เจฒเฉ‡เจธเจผเจจ เจตเจฟเจงเฉ€ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฆเจพ เจเจฒเจพเจจ เจ•เฉ€เจคเจพ เจนเฉˆเฅค เจชเจฒเฉ‡เจœ เจ…เจธเจฒ เจตเจฟเฉฑเจš เจ“เจชเจจเจฌเฉ€เจเจธเจกเฉ€ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฆเฉเจ†เจฐเจพ เจตเจฟเจ•เจธเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€ เจ…เจคเฉ‡ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจจเฉ‚เฉฐ เจจเจพ-เจตเจฐเจคเฉ€เจ†เจ‚ เจธเจฟเจธเจŸเจฎ เจ•เจพเจฒเจพเจ‚ เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจ•เจฐเจจ เจคเฉ‹เจ‚ เจšเฉ‹เจฃเจตเฉ‡เจ‚ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจฎเจจเจพเจนเฉ€ เจ•เจฐเจจ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ (เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฒเจˆ เจธเจฟเจธเจŸเจฎ เจ•เจพเจฒเจพเจ‚ เจฆเฉ€ เจ‡เฉฑเจ• เจ•เจฟเจธเจฎ เจฆเฉ€ เจธเจซเฉˆเจฆ เจธเฉ‚เจšเฉ€ เจฌเจฃเจพเจˆ เจ—เจˆ เจนเฉˆ, เจ…เจคเฉ‡ เจนเฉ‹เจฐ เจ•เจพเจฒเจพเจ‚ เจฆเฉ€ เจฎเจจเจพเจนเฉ€ เจนเฉˆ)เฅค เจฒเฉ€เจจเจ•เจธ เจตเจฟเฉฑเจš เจ‰เจชเจฒเจฌเจง เจธเจฟเจธเจŸเจฎ เจ•เจพเจฒ เจชเจพเจฌเฉฐเจฆเฉ€ เจตเจฟเจงเฉ€ เจฆเฉ‡ เจ‰เจฒเจŸ, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ seccomp, เจชเจฒเฉ‡เจœ เจฎเจ•เฉˆเจจเจฟเจœเจผเจฎ เจจเฉ‚เฉฐ เจ…เจธเจฒ เจตเจฟเฉฑเจš เจœเจฟเฉฐเจจเจพ เจธเฉฐเจญเจต เจนเฉ‹ เจธเจ•เฉ‡ เจธเจงเจพเจฐเจจ เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€เฅค

เจ“เจชเจจเจฌเฉ€เจเจธเจกเฉ€ เจฌเฉ‡เจธ เจเจจเจตเจพเจ‡เจฐเจฎเฉˆเจ‚เจŸ เจตเจฟเฉฑเจš เจธเจฟเจธเจŸเจฐเฉ‡เจธ เจตเจฟเจงเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ…เจฒเฉฑเจ— เจ•เจฐเจจ เจฆเฉ€ เจ…เจธเจซเจฒ เจชเจนเจฟเจฒเจ•เจฆเจฎเฉ€ เจจเฉ‡ เจฆเจฟเจ–เจพเจ‡เจ† เจ•เจฟ เจตเจฟเจ…เจ•เจคเฉ€เจ—เจค เจธเจฟเจธเจŸเจฎ เจ•เจพเจฒเจพเจ‚ เจฆเฉ‡ เจชเฉฑเจงเจฐ 'เจคเฉ‡ เจ†เจˆเจธเฉ‹เจฒเฉ‡เจธเจผเจจ เจฌเจนเฉเจค เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ เจ…เจคเฉ‡ เจธเจฎเจพเจ‚ เจฌเจฐเจฌเจพเจฆ เจ•เจฐเจจ เจตเจพเจฒเฉ€ เจธเฉ€เฅค เจ‡เฉฑเจ• เจตเจฟเจ•เจฒเจช เจฆเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡, เจ‡เฉฑเจ• เจตเจพเจ…เจฆเจพ เจชเฉเจฐเจธเจคเจพเจตเจฟเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€, เจœเจฟเจธ เจจเฉ‡ เจตเฉ‡เจฐเจตเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจœเจพเจฃ เจ…เจคเฉ‡ เจคเจฟเจ†เจฐ-เจฌเจฃเจพเจˆ เจชเจนเฉเฉฐเจš เจ•เจฒเจพเจธเจพเจ‚ เจตเจฟเฉฑเจš เจนเฉ‡เจฐเจพเจซเฉ‡เจฐเฉ€ เจ•เฉ€เจคเฉ‡ เจฌเจฟเจจเจพเจ‚ เจ…เจฒเฉฑเจ—-เจฅเจฒเฉฑเจ— เจจเจฟเจฏเจฎ เจฌเจฃเจพเจ‰เจฃเจพ เจธเฉฐเจญเจต เจฌเจฃเจพเจ‡เจ† เจธเฉ€เฅค เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจชเฉ‡เจธเจผ เจ•เฉ€เจคเฉ€เจ†เจ‚ เจ—เจˆเจ†เจ‚ เจ•เจฒเจพเจธเจพเจ‚ เจนเจจ stdio (เจ‡เจจเจชเฉเจŸ/เจ†เจ‰เจŸเจชเฉเฉฑเจŸ), rpath (เจธเจฟเจฐเจซเจผ เจฐเฉ€เจก-เจ“เจจเจฒเฉ€ เจซเจพเจˆเจฒเจพเจ‚), wpath (เจซเจพเจ‡เจฒเจพเจ‚ เจฒเจฟเจ–เฉ‹), cpath (เจซเจพเจ‡เจฒเจพเจ‚ เจฌเจฃเจพเจ“), tmppath (เจ†เจฐเจœเจผเฉ€ เจซเจพเจˆเจฒเจพเจ‚ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเฉ‹), inet (เจจเฉˆเฉฑเจŸเจตเจฐเจ• เจธเจพเจ•เจŸ), เจฏเฉ‚เจจเจฟเจ•เจธ ( unix เจธเจพเจ•เจŸ), dns (DNS เจฐเฉˆเจœเจผเฉ‹เจฒเจฟเจŠเจธเจผเจจ), getpw (เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจชเฉœเฉเจนเฉ‹), ioctl (ioctl เจ•เจพเจฒ), proc (เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจชเฉเจฐเจฌเฉฐเจงเจจ), exec (เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจฒเจพเจ‚เจš) เจ…เจคเฉ‡ id (เจเจ•เจธเฉˆเจธ เจ…เจงเจฟเจ•เจพเจฐ เจชเฉเจฐเจฌเฉฐเจงเจจ)เฅค

เจธเจฟเจธเจŸเจฎ เจ•เจพเจฒเจพเจ‚ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ เจจเจฟเจฏเจฎ เจเจจเฉ‹เจŸเฉ‡เจธเจผเจจเจพเจ‚ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจจเจฟเจฐเจงเจพเจฐเจค เจ•เฉ€เจคเฉ‡ เจ—เจ เจนเจจ, เจœเจฟเจธ เจตเจฟเฉฑเจš เจธเจฟเจธเจŸเจฎ เจ•เจพเจฒเจพเจ‚ เจฆเฉ€เจ†เจ‚ เจฎเจจเจœเจผเฉ‚เจฐเจธเจผเฉเจฆเจพ เจธเจผเฉเจฐเฉ‡เจฃเฉ€เจ†เจ‚ เจฆเฉ€ เจธเฉ‚เจšเฉ€ เจ…เจคเฉ‡ เจซเจพเจˆเจฒ เจฎเจพเจฐเจ—เจพเจ‚ เจฆเฉ€ เจ‡เฉฑเจ• เจฒเฉœเฉ€ เจธเจผเจพเจฎเจฒ เจนเฉˆ เจœเจฟเฉฑเจฅเฉ‡ เจชเจนเฉเฉฐเจš เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจนเฉˆเฅค เจธเฉ‹เจงเฉ€ เจนเฉ‹เจˆ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจจเฉ‚เฉฐ เจฌเจฃเจพเจ‰เจฃ เจ…เจคเฉ‡ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจ•เจฐเจจเจฒ เจจเจฟเจฐเจงเจพเจฐเจค เจจเจฟเจฏเจฎเจพเจ‚ เจฆเฉ€ เจชเจพเจฒเจฃเจพ เจฆเฉ€ เจจเจฟเจ—เจฐเจพเจจเฉ€ เจ•เจฐเจจ เจฆเจพ เจ•เฉฐเจฎ เจธเฉฐเจญเจพเจฒ เจฒเฉˆเจ‚เจฆเจพ เจนเฉˆเฅค

เจซเฉเจฐเฉ€เจฌเฉ€เจเจธเจกเฉ€ เจฒเจˆ เจตเจšเจจ เจฆเจพ เจ‡เฉฑเจ• เจตเฉฑเจ–เจฐเจพ เจฒเจพเจ—เฉ‚เจ•เจฐเจจ เจตเจฟเจ•เจธเจค เจ•เฉ€เจคเจพ เจœเจพ เจฐเจฟเจนเจพ เจนเฉˆ, เจœเฉ‹ เจ•เจฟ เจ‰เจนเจจเจพเจ‚ เจฆเฉ‡ เจ•เฉ‹เจก เจตเจฟเฉฑเจš เจฌเจฆเจฒเจพเจ… เจ•เฉ€เจคเฉ‡ เจฌเจฟเจจเจพเจ‚ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ…เจฒเฉฑเจ— เจ•เจฐเจจ เจฆเฉ€ เจฏเฉ‹เจ—เจคเจพ เจฆเฉเจ†เจฐเจพ เจตเฉฑเจ–เจฐเจพ เจนเฉˆ, เจœเจฆเฉ‹เจ‚ เจ•เจฟ เจ“เจชเจจเจฌเฉ€เจเจธเจกเฉ€ เจตเจฟเฉฑเจš เจชเจฒเฉ‡เจœ เจ•เจพเจฒ เจฆเจพ เจ‰เจฆเฉ‡เจธเจผ เจฌเฉ‡เจธ เจตเจพเจคเจพเจตเจฐเจฃ เจจเจพเจฒ เจธเจ–เจผเจค เจเจ•เฉ€เจ•เจฐเจฃ เจ…เจคเฉ‡ เจนเจฐเฉ‡เจ• เจฆเฉ‡ เจ•เฉ‹เจก เจตเจฟเฉฑเจš เจเจจเฉ‹เจŸเฉ‡เจธเจผเจจ เจœเฉ‹เฉœเจจเจพ เจนเฉˆเฅค เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ.

เจฒเฉ€เจจเจ•เจธ เจฒเจˆ เจชเจฒเฉ‡เจœ เจชเฉ‹เจฐเจŸ เจฆเฉ‡ เจกเจฟเจตเฉˆเจฒเจชเจฐเจพเจ‚ เจจเฉ‡ เจซเฉเจฐเฉ€เจฌเฉ€เจเจธเจกเฉ€ เจฆเฉ€ เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ เจ…เจคเฉ‡, เจ•เฉ‹เจก เจตเจฟเฉฑเจš เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจ•เจฐเจจ เจฆเฉ€ เจฌเจœเจพเจ, เจ‡เฉฑเจ• เจเจก-เจ†เจจ เจ‰เจชเจฏเฉ‹เจ—เจคเจพ pledge.com เจคเจฟเจ†เจฐ เจ•เฉ€เจคเจพ เจœเฉ‹ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจฌเจฆเจฒเฉ‡ เจฌเจฟเจจเจพเจ‚ เจชเจพเจฌเฉฐเจฆเฉ€เจ†เจ‚ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจธเจฟเจฐเจซเจผ stdio, rpath, inet เจ…เจคเฉ‡ threadstdio เจธเจฟเจธเจŸเจฎ เจ•เจพเจฒ เจ•เจฒเจพเจธเจพเจ‚ เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจจเจพเจฒ curl เจ‰เจชเจฏเฉ‹เจ—เจคเจพ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฒเจˆ, เจธเจฟเจฐเจซเจผ โ€œ./pledge.com -p 'stdio rpath inet thread' curl http://example.comโ€ เจšเจฒเจพเจ“เฅค

เจชเจฒเฉ‡เจœ เจฏเฉ‚เจŸเจฟเจฒเจฟเจŸเฉ€ RHEL6 เจจเจพเจฒ เจธเจผเฉเจฐเฉ‚ เจนเฉ‹เจฃ เจตเจพเจฒเฉ€เจ†เจ‚ เจธเจพเจฐเฉ€เจ†เจ‚ เจฒเฉ€เจจเจ•เจธ เจกเจฟเจธเจŸเจฐเฉ€เจฌเจฟเจŠเจธเจผเจจเจพเจ‚ 'เจคเฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจฆเฉ€ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธ เจฒเจˆ เจฐเฉ‚เจŸ เจชเจนเฉเฉฐเจš เจฆเฉ€ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจฌเฉเจฐเจนเจฟเจฎเฉฐเจกเฉ€ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจฆเฉ‡ เจ…เจงเจพเจฐ 'เจคเฉ‡, C เจญเจพเจธเจผเจพ เจตเจฟเฉฑเจš เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎ เจ•เฉ‹เจก เจตเจฟเฉฑเจš เจชเจพเจฌเฉฐเจฆเฉ€เจ†เจ‚ เจฆเฉ‡ เจชเฉเจฐเจฌเฉฐเจงเจจ เจฒเจˆ เจ‡เฉฑเจ• API เจชเฉเจฐเจฆเจพเจจ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจœเฉ‹ เจ•เจฟ เจนเฉ‹เจฐ เจšเฉ€เจœเจผเจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ, เจ•เฉเจ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจซเฉฐเจ•เจธเจผเจจเจพเจ‚ เจฆเฉ‡ เจธเจฌเฉฐเจง เจตเจฟเฉฑเจš เจšเฉ‹เจฃเจตเฉ‡เจ‚ เจคเฉŒเจฐ 'เจคเฉ‡ เจชเจนเฉเฉฐเจš เจจเฉ‚เฉฐ เจธเฉ€เจฎเจค เจ•เจฐเจจ เจฒเจˆ เจเจจเจ•เจฒเฉ‡เจต เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค

เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฒเจˆ เจ•เจฐเจจเจฒ เจตเจฟเฉฑเจš เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจฆเฉ€ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆ - เจตเจšเจจเจฌเฉฑเจง เจชเจพเจฌเฉฐเจฆเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ SECOMP BPF เจจเจฟเจฏเจฎเจพเจ‚ เจตเจฟเฉฑเจš เจ…เจจเฉเจตเจพเจฆ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจจเฉ‡เจŸเจฟเจต เจฒเฉ€เจจเจ•เจธ เจธเจฟเจธเจŸเจฎ เจ•เจพเจฒ เจ†เจˆเจธเฉ‹เจฒเฉ‡เจธเจผเจจ เจตเจฟเจงเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆเฅค เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจ•เจพเจฒ เจชเจฒเฉ‡เจœ("stdio rpath", 0) เจจเฉ‚เฉฐ เจ‡เฉฑเจ• BPF เจซเจฟเจฒเจŸเจฐ เจธเจŸเฉˆเจŸเจฟเจ• เจ•เฉฐเจธเจŸ เจธเจŸเฉเจฐเจ•เจŸ sock_filter kFilter [] = { /* L0*/ BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, syscall, 0, 14 - เจตเจฟเฉฑเจš เจฌเจฆเจฒเจฟเจ† เจœเจพเจตเฉ‡เจ—เจพ ), / * L1*/ BPF_STMT(BPF_LD | BPF_W | BPF_ABS, OFF(args[1])), /* L0*/ BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, 2, 2 - 4, 3), /* L0* / BPF_JUMP( BPF_JMP | BPF_JEQ | BPF_K, 3, 10, 0 - 13), /* L4*/ BPF_STMT(BPF_LD | BPF_W | BPF_ABS, OFF(args[4])), /* L1*/ BPF_ALMT | | BPF_K, ~5x0), /* L80800*/ BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, 6, 1 - 8, 7), /* L0*/ BPF_JUMP(BPF_JMP | BPF_JEQ, BPF_7, -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 BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, 10, 0 - 10, 6), /*L12*/ BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, 11, 0, 11 - 17) SECCOMP_RET_ALLOW), /*L0*/ BPF_STMT(BPF_LD | BPF_W | BPF_ABS, OFF(nr)), /*L13*/ /* เจ…เจ—เจฒเจพ เจซเจฟเจฒเจŸเจฐ */ };

เจธเจฐเฉ‹เจค: opennet.ru

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹