เชเช•เซเชเชฟเชฎเชฎเชพเช‚ เชจเชฟเชฐเซเชฃเชพเชฏเช• เชจเชฌเชณเชพเชˆ เชœเซ‡ เช•เซ‹เชกเชจเซ‡ เชธเชฐเซเชตเชฐ เชชเชฐ เชฐเซ‚เชŸ เชตเชฟเชถเซ‡เชทเชพเชงเชฟเช•เชพเชฐเซ‹ เชธเชพเชฅเซ‡ เชšเชฒเชพเชตเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡

เชเช•เซเชเชฟเชฎ เชฎเซ‡เชฒ เชธเชฐเซเชตเชฐเชฎเชพเช‚ เช“เชณเช–เชพเชฏเซ‡เชฒ เช•เซเชฐเชฟเชŸเซ€เชšเซ‡เชธเซเช•เชพ เชจเชฌเชณเชพเชˆ (CVE-2019-10149), เชœเซ‡ เช–เชพเชธ เชฐเชšเชฟเชค เชตเชฟเชจเช‚เชคเซ€ เชชเชฐ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชฐเซ‚เชŸ เช…เชงเชฟเช•เชพเชฐเซ‹ เชธเชพเชฅเซ‡ เชธเชฐเซเชตเชฐ เชชเชฐ เชฐเซ€เชฎเซ‹เชŸ เช•เซ‹เชก เชเช•เซเชเชฟเช•เซเชฏเซเชถเชจ เชคเชฐเชซ เชฆเซ‹เชฐเซ€ เชถเช•เซ‡ เช›เซ‡. เชธเชฎเชธเซเชฏเชพเชจเชพ เชถเซ‹เชทเชฃเชจเซ€ เชถเช•เซเชฏเชคเชพ 4.87 เชฅเซ€ 4.91 เชธเชนเชฟเชคเชจเซ€ เช†เชตเซƒเชคเซเชคเชฟเช“เชฎเชพเช‚ เช…เชฅเชตเชพ EXPERIMENTAL_EVENT เชตเชฟเช•เชฒเซเชช เชธเชพเชฅเซ‡ เชจเชฟเชฐเซเชฎเชพเชฃ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชจเซ‹เช‚เชงเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€.

เชกเชฟเชซเซ‰เชฒเซเชŸ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจเชฎเชพเช‚, เชธเซเชฅเชพเชจเชฟเช• เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชฆเซเชตเชพเชฐเชพ เชฌเชฟเชจเชœเชฐเซ‚เชฐเซ€ เช—เซ‚เช‚เชšเชตเชฃเซ‹ เชตเชฟเชจเชพ เชนเซเชฎเชฒเซ‹ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡ "เชšเช•เชพเชธเชฃเซ€ = เชชเซเชฐเชพเชชเซเชคเช•เชฐเซเชคเชพ" ACL เชฒเชพเช—เซ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชœเซ‡ เชฌเชพเชนเซเชฏ เชธเชฐเชจเชพเชฎเชพเช‚เช“ เชฎเชพเชŸเซ‡ เชตเชงเชพเชฐเชพเชจเซ€ เชคเชชเชพเชธ เช•เชฐเซ‡ เช›เซ‡. เชœเซเชฏเชพเชฐเซ‡ เชธเซ‡เชŸเชฟเช‚เช—เซเชธ เชฌเชฆเชฒเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เชคเซเชฏเชพเชฐเซ‡ เชฐเซ€เชฎเซ‹เชŸ เชเชŸเซ‡เช• เช†เชตเซ€ เชถเช•เซ‡ เช›เซ‡, เชœเซ‡เชฎ เช•เซ‡ เชฌเซ€เชœเชพ เชกเซ‹เชฎเซ‡เชจ เชฎเชพเชŸเซ‡ เชธเซ‡เช•เชจเซเชกเชฐเซ€ MX เชคเชฐเซ€เช•เซ‡ เช•เชพเชฎ เช•เชฐเชตเซเช‚, "verify=recipient" ACL เชจเซ‡ เชฆเซ‚เชฐ เช•เชฐเชตเซเช‚ เช…เชฅเชตเชพ local_part_suffix เชฎเชพเช‚ เช…เชฎเซเช• เชซเซ‡เชฐเชซเชพเชฐเซ‹). เชœเซ‹ เชนเซเชฎเชฒเชพเช–เซ‹เชฐ เชธเชฐเซเชตเชฐ เชธเชพเชฅเซ‡ เช•เชจเซ‡เช•เซเชถเชจเชจเซ‡ 7 เชฆเชฟเชตเชธ เชธเซเชงเซ€ เช–เซเชฒเซเชฒเซ‹ เชฐเชพเช–เชตเชพเชฎเชพเช‚ เชธเช•เซเชทเชฎ เชนเซ‹เชฏ เชคเซ‹ เชฐเชฟเชฎเซ‹เชŸ เชเชŸเซ‡เช• เชชเชฃ เชถเช•เซเชฏ เช›เซ‡ (เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชธเชฎเชฏเชธเชฎเชพเชชเซเชคเชฟเชจเซ‡ เชฌเชพเชฏเชชเชพเชธ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชชเซเชฐเชคเชฟ เชฎเชฟเชจเชฟเชŸ เชเช• เชฌเชพเชˆเชŸ เชฎเซ‹เช•เชฒเชตเซ€). เชคเซ‡ เชœ เชธเชฎเชฏเซ‡, เชถเช•เซเชฏ เช›เซ‡ เช•เซ‡ เชธเชฎเชธเซเชฏเชพเชจเชพ เชฆเซ‚เชฐเชธเซเชฅ เชถเซ‹เชทเชฃ เชฎเชพเชŸเซ‡ เชธเชฐเชณ เชนเซเชฎเชฒเชพ เชตเซ‡เช•เซเชŸเชฐ เช›เซ‡.

เช† เชจเชฌเชณเชพเชˆ /src/deliver.c เชซเชพเชˆเชฒเชฎเชพเช‚ เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เชกเชฟเชฒเชฟเชตเชฐ_เชฎเซ‡เชธเซ‡เชœ() เชซเช‚เช•เซเชถเชจเชฎเชพเช‚ เชชเซเชฐเชพเชชเซเชคเช•เชฐเซเชคเชพเชจเชพ เชธเชฐเชจเชพเชฎเชพเชจเซ€ เช–เซ‹เชŸเซ€ เชšเช•เชพเชธเชฃเซ€เชจเซ‡ เช•เชพเชฐเชฃเซ‡ เชฅเชพเชฏ เช›เซ‡. เชเชกเซเชฐเซ‡เชธ เชซเซ‹เชฐเซเชฎเซ‡เชŸเชฟเช‚เช—เชฎเชพเช‚ เชšเชพเชฒเชพเช•เซ€ เช•เชฐเซ€เชจเซ‡, เชนเซเชฎเชฒเชพเช–เซ‹เชฐ เชฐเซ‚เชŸ เชฐเชพเช‡เชŸเซเชธ เชธเชพเชฅเซ‡ execv() เชซเช‚เช•เซเชถเชจ เชฆเซเชตเชพเชฐเชพ เช•เชนเซ‡เชตเชพเชคเชพ เช†เชฆเซ‡เชถเชจเซ€ เชฆเชฒเซ€เชฒเซ‹เชฎเชพเช‚ เชคเซ‡เชจเชพ เชกเซ‡เชŸเชพเชจเซ‡ เชฌเชฆเชฒเซ€ เชถเช•เซ‡ เช›เซ‡. เช“เชชเชฐเซ‡เชถเชจ เชฎเชพเชŸเซ‡ เชฌเชซเชฐ เช“เชตเชฐเชซเซเชฒเซ‹ เช…เชฅเชตเชพ เชฎเซ‡เชฎเชฐเซ€ เชญเซเชฐเชทเซเชŸเชพเชšเชพเชฐ เชฎเชพเชŸเซ‡ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชคเซ€ เชœเชŸเชฟเชฒ เชคเช•เชจเซ€เช•เซ‹เชจเชพ เช‰เชชเชฏเซ‹เช—เชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€;

เชธเชฎเชธเซเชฏเชพ เชธเชฐเชจเชพเชฎเชพเช‚ เชฐเซ‚เชชเชพเช‚เชคเชฐ เชฎเชพเชŸเซ‡ เชฐเชšเชจเชพเชจเชพ เช‰เชชเชฏเซ‹เช— เชธเชพเชฅเซ‡ เชธเช‚เชฌเช‚เชงเชฟเชค เช›เซ‡:

เชกเชฟเชฒเชฟเชตเชฐ_เชฒเซ‹เช•เชฒเชชเชพเชฐเซเชŸ = เชตเชฟเชธเซเชคเซƒเชค_เชธเซเชŸเซเชฐเชฟเช‚เช— (
string_sprintf("${local_part:%s}", new->เชธเชฐเชจเชพเชฎเซเช‚));
เชกเชฟเชฒเชฟเชตเชฐ_เชกเซ‹เชฎเซ‡เชจ = เชตเชฟเชธเซเชคเซƒเชค_เชธเซเชŸเซเชฐเชฟเช‚เช— (
string_sprintf("${domain:%s}", new->เชธเชฐเชจเชพเชฎเซเช‚));

expand_string() เชซเช‚เช•เซเชถเชจ เช "${run{command arguments}" เช†เชฆเซ‡เชถเชจเซ‡ เช“เชณเช–เชตเชพ เชธเชนเชฟเชค, เชเช• เชตเชงเซ เชœเชŸเชฟเชฒ เชธเช‚เชฏเซ‹เชœเชจ เช›เซ‡, เชœเซ‡ เชฌเชพเชนเซเชฏ เชนเซ‡เชจเซเชกเชฒเชฐเชจเชพ เชฒเซ‹เชจเซเชš เชคเชฐเชซ เชฆเซ‹เชฐเซ€ เชœเชพเชฏ เช›เซ‡. เช†เชฎ, SMTP เชธเชคเซเชฐเชฎเชพเช‚ เชนเซเชฎเชฒเซ‹ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชธเซเชฅเชพเชจเชฟเช• เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเชจเซ‡ เชซเช•เซเชค 'RCPT TO โ€œusername+${run{...}}@localhostโ€' เชœเซ‡เชตเซ‹ เช†เชฆเซ‡เชถ เชฎเซ‹เช•เชฒเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เชœเซเชฏเชพเช‚ เชฒเซ‹เช•เชฒเชนเซ‹เชธเซเชŸ เช local_domains เชธเซ‚เชšเชฟเชฎเชพเช‚เชฅเซ€ เชเช• เชนเซ‹เชธเซเชŸ เช›เซ‡, เช…เชจเซ‡ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชจเชพเชฎ เช เชนเชพเชฒเชจเชพ เชธเซเชฅเชพเชจเชฟเช• เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเชจเซเช‚ เชจเชพเชฎ เช›เซ‡.

เชœเซ‹ เชธเชฐเซเชตเชฐ เชฎเซ‡เช‡เชฒ เชฐเชฟเชฒเซ‡ เชคเชฐเซ€เช•เซ‡ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡, เชคเซ‹ เชคเซ‡ เชฆเซ‚เชฐเชธเซเชฅ เชฐเซ‚เชชเซ‡ 'RCPT TO "${run{...}}@relaydomain.com" เช†เชฆเซ‡เชถ เชฎเซ‹เช•เชฒเชตเชพ เชฎเชพเชŸเซ‡ เชชเซ‚เชฐเชคเซเช‚ เช›เซ‡, เชœเซเชฏเชพเช‚ relaydomain.com เช relay_to_domains เชฎเชพเช‚ เชธเซ‚เชšเชฟเชฌเชฆเซเชง เชนเซ‹เชธเซเชŸเซเชธเชฎเชพเช‚เชจเซเช‚ เชเช• เช›เซ‡. เชธเซ‡เชŸเชฟเช‚เช—เซเชธ เชตเชฟเชญเชพเช—. เชเช•เซเชเชฟเชฎ เชตเชฟเชถเซ‡เชทเชพเชงเชฟเช•เชพเชฐ เชฎเซ‹เชกเชจเซ‡ เช›เซ‹เชกเชตเชพ เชฎเชพเชŸเซ‡ เชกเชฟเชซเซ‹เชฒเซเชŸ เชจเชฅเซ€ (deliver_drop_privilege = false), "${run{...}}" เชฆเซเชตเชพเชฐเชพ เชชเชธเชพเชฐ เช•เชฐเชพเชฏเซ‡เชฒ เช†เชฆเซ‡เชถเซ‹ เชฐเซ‚เชŸ เชคเชฐเซ€เช•เซ‡ เชเช•เซเชเชฟเช•เซเชฏเซเชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡.

เช‰เชฒเซเชฒเซ‡เช–เชจเซ€เชฏ เช›เซ‡ เช•เซ‡ เชจเชฌเชณเชพเชˆ เชนเชคเซ€ เชจเชพเชฌเซ‚เชฆ เชซเซ‡เชฌเซเชฐเซเช†เชฐเซ€เชฎเชพเช‚ เชฐเชฟเชฒเซ€เช เชฅเชฏเซ‡เชฒเซ€ 4.92 เชฐเซ€เชฒเซ€เชเชฎเชพเช‚, เช เชตเชพเชค เชชเชฐ เชญเชพเชฐ เชฎเซ‚เช•เซเชฏเชพ เชตเชฟเชจเชพ เช•เซ‡ เชธเซเชงเชพเชฐเซ‹ เชธเซเชฐเช•เซเชทเชพ เชธเชฎเชธเซเชฏเชพเช“ เชคเชฐเชซ เชฆเซ‹เชฐเซ€ เชถเช•เซ‡ เช›เซ‡. เชเชตเซเช‚ เชฎเชพเชจเชตเชพ เชฎเชพเชŸเซ‡ เช•เซ‹เชˆ เช•เชพเชฐเชฃ เชจเชฅเซ€ เช•เซ‡ เชเช•เซเชเชฟเชฎ เชกเซ‡เชตเชฒเชชเชฐเซเชธ เชฆเซเชตเชพเชฐเชพ เชˆเชฐเชพเชฆเชพเชชเซ‚เชฐเซเชตเช• เชจเชฌเชณเชพเชˆเชจเซ‡ เช›เซเชชเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€, เช•เชพเชฐเชฃ เช•เซ‡ เช† เชธเชฎเชธเซเชฏเชพเชจเซเช‚ เชจเชฟเชฐเชพเช•เชฐเชฃ เชฆเชฐเชฎเชฟเชฏเชพเชจ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚. เชธเซเชงเชพเชฐเซ‹ เชจเชฟเชทเซเชซเชณเชคเชพ เช•เซ‡ เชœเซเชฏเชพเชฐเซ‡ เช–เซ‹เชŸเชพ เชธเชฐเชจเชพเชฎเชพเช‚ เชชเซเชฐเชธเชพเชฐเชฟเชค เชฅเชพเชฏ เช›เซ‡ เชคเซเชฏเชพเชฐเซ‡ เชฅเชพเชฏ เช›เซ‡, เช…เชจเซ‡ เชเช•เซเชเชฟเชฎเชฎเชพเช‚ เชซเซ‡เชฐเชซเชพเชฐเซ‹เชจเชพ เช“เชกเชฟเชŸ เชฆเชฐเชฎเชฟเชฏเชพเชจ เช•เซเชตเซ‹เชฒเชฟเชธ เชฆเซเชตเชพเชฐเชพ เชจเชฌเชณเชพเชˆ เช“เชณเช–เชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€.

เช…เช—เชพเช‰เชจเชพ เชธเช‚เชธเซเช•เชฐเชฃเซ‹ เชฎเชพเชŸเซ‡ เชเช• เชซเชฟเช•เซเชธ เช•เซ‡ เชœเซ‡ เชตเชฟเชคเชฐเชฃเชฎเชพเช‚ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชจเซเช‚ เชšเชพเชฒเซ เชฐเชพเช–เซ‡ เช›เซ‡ เชคเซ‡ เชนเชพเชฒเชฎเชพเช‚ เชฎเชพเชคเซเชฐ เชคเชฐเซ€เช•เซ‡ เช‰เชชเชฒเชฌเซเชง เช›เซ‡ เชชเซ‡เชš. เชธเชฎเชธเซเชฏเชพเชจเซ‡ เช‰เช•เซ‡เชฒเชตเชพ เชฎเชพเชŸเซ‡ เช…เช—เชพเช‰เชจเซ€ เชถเชพเช–เชพเช“ เชฎเชพเชŸเซ‡ เชธเซเชงเชพเชฐเชพเชคเซเชฎเช• เชชเซเชฐเช•เชพเชถเชจ 11เชฎเซ€ เชœเซ‚เชจเซ‡ เชธเซเชจเชฟเชถเซเชšเชฟเชค เชฅเชฏเซ‡เชฒ เช›เซ‡. เชชเซ‡เช•เซ‡เชœ เช…เชชเชกเซ‡เชŸ เชฎเชพเชŸเซ‡ เชคเซˆเชฏเชพเชฐ เช›เซ‡ เชกเซ‡เชฌเชฟเชฏเชจ, เช‰เชฌเซเชจเซเชŸเซ, เช“เชชเชจเชธเซเชธ. เช†เชฐเซเช• เชฒเชฟเชจเช•เซเชธ ะธ Fedora เชคเซ‡เช“ เชธเช‚เชธเซเช•เชฐเชฃ 4.92 เชธเชชเซเชฒเชพเชฏ เช•เชฐเซ‡ เช›เซ‡, เชœเซ‡เชฎเชพเช‚ เชธเชฎเชธเซเชฏเชพ เชฆเซ‡เช–เชพเชคเซ€ เชจเชฅเซ€. RHEL เช…เชจเซ‡ CentOS เชธเชฎเชธเซเชฏเชพ เชธเช‚เชตเซ‡เชฆเชจเชถเซ€เชฒ เชจเชฅเซ€, เช•เชพเชฐเชฃ เช•เซ‡ เชเช•เซเชเชฟเชฎ เชคเซ‡เชฎเชจเชพ เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค เชชเซ‡เช•เซ‡เชœ เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€เชฎเชพเช‚ เชธเชฎเชพเชตเซ‡เชฒ เชจเชฅเซ€.

เชธเซ‹เชฐเซเชธ: opennet.ru

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹