Должен ли весь исходный код быть совместимым с PCI?

#pci-compliance

#соответствие стандарту pci

Вопрос:

В прошлом мы никогда не передавали, не обрабатывали и не хранили информацию о кредитной карте, поскольку все делали через PayPal, поэтому нам никогда не требовалось соответствовать требованиям PCI.

Тем не менее, мы запускаем новый интернет-магазин, и благодаря простому оформлению заказа, при котором информация о кредитной карте обрабатывается без перенаправления в PayPal, нам уже сейчас необходимо соответствие стандарту PCI.

Мы собираемся проконсультироваться с квалифицированной компанией по оценке безопасности, которая поможет нам получить и поддерживать соответствие требованиям PCI. Однако я хотел получить хорошее представление о том, на что я смотрю, прежде чем консультироваться с ними, прежде чем они попытаются продать вам все услуги в доме, которые вам могут не понадобиться.

Что касается соответствия PCI, я понимаю, что это должно быть сделано на программном и аппаратном уровне и соответствовать 12 пунктам , требуемым. Мы выбираем Magento Professional, поскольку в нем есть платежная система, совместимая с PCI, и мы выбираем компанию веб-хостинга, совместимую с PCI (выделенный сервер). Но с точки зрения программного обеспечения, вам нужно соответствие PCI во ВСЕМ? Или только программное обеспечение, которое передает, хранит и обрабатывает информацию о кредитной карте?

Например, согласно Magento, программное обеспечение для оплаты совместимо с PCI, в то время как платформа Magento — нет. Таким образом, это позволяет вам вносить изменения, доработки и кастомизации в Magento, не влияя на соответствие PCI платежного программного обеспечения.

Другими словами, я спрашиваю, вам нужно соответствие PCI только для исходного кода / программного обеспечения, которое занимается передачей, обработкой и хранением информации о кредитной карте? Эти «Квалифицированные компании по оценке безопасности» создают впечатление, что весь исходный код необходимо проверять на соответствие PCI, что невозможно!

Например, в случае Magento, могу ли я вносить в него изменения и доработки и при этом оставаться совместимым с PCI? При условии, что платежный модуль остается нетронутым, поскольку он совместим с PCI, а веб-хостинг, сервер и операционная система совместимы с PCI?

Я имею в виду, что php, javascript, mysql, которые не имеют отношения к кредитным картам, не обязательно должны быть совместимыми, не так ли? разумеется, они будут на одном сервере.

Комментарии:

1. Сделайте, как в Skype, изолируйте отдельный сервер, где вы работаете с данными карты. Взгляните на этот проект: github.com/joelonsql/pci-blackbox

Ответ №1:

Основной ответ заключается в том, что это зависит. В общем, только исходный код, который имеет дело (или может иметь дело) с конфиденциальными и защищенными данными PCI, должен быть совместим с PCI. Однако это означает, что если другие области вашего кода имеют доступ к защищенным областям, вам также необходима защита там. Например, если другая область вашего приложения окажется уязвимой для внедрения SQL, это может поставить под угрозу ваши системы кредитных карт. Вот почему некоторые люди склоняются к соответствию PCI для всего программного обеспечения. Должна быть некоторая уверенность в том, что плохо написанная часть программного обеспечения может быть использована для нарушения безопасности данных.

Я говорю, что это зависит, потому что всегда есть место для интерпретации теми, кто проводит проверку. Однако хорошей новостью является то, что из всех стандартов PCI, похоже, является наиболее прямым и конкретным в отношении того, что вам нужно делать, а чего вы не можете сделать. Вот больше информации о том, что PCI говорит напрямую:

https://www.pcisecuritystandards.org/documents/infosupp_6_6_applicationfirewalls_codereviews.pdf

Основная проблема здесь заключается в том, чтобы быть уверенным, что сайт нигде не может быть использован. Если вы разработаете достаточные «брандмауэры» между областями вашего приложения (данные кредитной карты и обычный веб-сайт), это будет иметь большое значение для демонстрации того, что вам нужно всего лишь отсканировать некоторый код. Кроме того, как указано в приведенном выше документе, вам не обязательно проверять исходный код на соответствие стандарту PCI. Однако ваше приложение необходимо тщательно протестировать, чтобы убедиться, что оно защищено от типичных уязвимостей.

Ответ №2:

Я не могу говорить о юридических деталях соответствия PCI, но если бы я был аудитором вашей системы, я бы очень громко кричал, если какой-либо несертифицированный код выполняется с тем же идентификатором пользователя, который запускает сертифицированный код.

Я бы также довольно внимательно посмотрел, какие исполняемые файлы setuid / setgid есть в системе, что выполняется с повышенными root правами или с повышенными capabilities(7) , которые могут повлиять на PCI-совместимое программное обеспечение, и я бы, вероятно, потребовал обязательных инструментов контроля доступа, таких как AppArmor, SELinux, TOMOYO или SMACK, и соответствующую конфигурацию, которая предотвращает вмешательство в PCI-совместимые части сервера ненадежными доменами выполнения.

Комментарии:

1. Хотя это может быть правдой, это как бы не имеет отношения к исходному вопросу