Що роблять програмісти в охоронних фірмах?


10

Я чув про охоронні фірми, які консультуються з питань безпеки клієнтських систем. Усі люди, яких я знаю в цій галузі, - це мережеві інженери, але я знаю, що програмісти також залучаються до безпеки. Що насправді роблять програмісти з безпеки, які виконують аудит / консалтинг? Чи буквально вони проходять через кодову базу, шукаючи будь-яку вразливість у застарілих системах людей? Я завжди вважав, що це вони робили, але, здається, це було б дуже ненадійно і не мало би більше, ніж надання помилкового почуття безпеки. Примітка: я не говорю про програмістів, які пишуть алгоритми шифрування чи щось подібне, лише тих, хто займається аудитом безпеки / консалтингом.


1
Не соромтеся переглядати security.stackexchange.com для аудиторії багатьох інших людей із безпеки!
Rory Alsop

1
^ що він сказав, ми обоє модератори тем.

Відповіді:


12

Відверто кажучи, ми намагаємось не переглядати вашу кодову базу, ми намагаємось написати інструменти, щоб зробити це для нас.

По-перше, теорія. Безпека - це вимога програмної системи, тому як і інші вимоги (функціональність, зручність, доступність, продуктивність тощо), її слід враховувати на кожному етапі робочого процесу в галузі програмного забезпечення від збирання вимог до розгортання та обслуговування. Дійсно, це можливо, і існують рекомендації, які допомагають командам програмних програм зробити це. Хоча я в основному працюю з розробниками iOS, мій улюблений опис "життєвого циклу безпечної розробки" - від Microsoft Press .

У цій моделі безпека додатків починається тоді, коли ми намагаємося вимагати від наших користувачів вимог. Нам потрібно розкрити їхні проблеми безпеки та конфіденційності, що непросто, оскільки ми - експерти, а не користувачі, і де вони розуміють свої вимоги безпеки, їм може бути важко їх висловити. Нам також потрібно виявити, яким ризикам буде піддаватися програмне забезпечення при розгортанні та який рівень ризику є прийнятним.

Ми розробляємо нашу програму, відповідаючи цим вимогам. Ми пишемо код з метою задоволення цих вимог та уникаючи додаткових ризиків, пов’язаних із помилками безпеки на рівні коду. Ми тестуємо програмне забезпечення, щоб переконатися, що наша модель його безпеки відповідає тому, що ми насправді створили, тоді ми розгортаємо програмне забезпечення таким чином, що відповідає припущенням, які ми зробили щодо навколишнього середовища, коли ми розробляли річ. Нарешті, ми надаємо підтримку та технічне обслуговування, що допомагає користувачеві керувати програмним забезпеченням таким чином, що відповідає їх вимогам безпеки, а також дозволяє їм (і нам) реагувати на нові зміни в поданих ризиках.

Добре, стільки для теорії. На практиці з причин, які дуже добре пояснюються (хоча і нетехнічним чином) в Geekonomics, і які, в основному, пов'язані з тим, як мотивуються програмні компанії, більшість вищезазначених матеріалів не відбувається. Натомість ми отримуємо це. Розробники:

  • найняти охоронця або галя, який буде присутній, коли вони торгують контрактом, щоб показати, що вони "отримують" охорону.
  • писати програмне забезпечення.
  • найміть співробітника служби безпеки або галя, щоб перевірити програмне забезпечення перед випуском, виправити багато проблем, які виникли на кроці 2.
  • зафіксувати все інше після розгортання.

Тож, чим реально займаються більшість людей із безпеки додатків, це, як ви кажете, пошук помилок. Це дійсно прославлений огляд коду, але це високоорієнтований огляд коду, який проводять люди, які є експертами у тих видах помилок, які цей огляд шукає, тому в цьому все ще має значення отримання зовнішньої допомоги. Це, звичайно, правило тетінгу: звичайно, завжди будь-хто інший, щоб перевірити, хто не був причетний до створення речі.

Якщо ми сприймемо вищезазначене як істинне, то звідси випливає, що люди, які приймають рішення про покупку, швидше за все, порівнюють "здатного хлопця з безпеки" до "знаходить багато помилок". Ті, хто змушує комп’ютери виконати роботу, знайдуть більше помилок, ніж ті, хто цього не робить, тому, звичайно, вони в значній мірі покладаються на інструменти статичного аналізу і будуть спрямовані витрачати більше часу на розширення інструментів, ніж на кодування конкретних проблем для конкретних клієнтів. Тоді ми робимо висновок, що люди із безпеки додатків швидше пишуть інструменти для читання коду, ніж для читання коду.

** Попередження: залишається особиста думка та спекуляція **

Реальність порушена. Ви помітите, що теорія забезпечення програмного забезпечення полягала у виявленні та реагуванні на ризик покластися на програмну систему, в той час як практика полягала в тому, щоб знайти якомога більше помилок. Впевнені, це все одно знизить ризик, але лише як побічний ефект. Суть гри стала менш важливою, ніж «виграти» гру, тому правила змінюються, щоб полегшити перемогу.

Що ви можете зробити як розробник програмного забезпечення щодо цього? Пограйте в гру за її оригінальними правилами. Знайдіть когось у вашій команді (бажано, власне, у вашій команді, а не підряднику, щоб вони мотивувались забезпечити довгострокові результати, а не швидку перемогу), хто розуміє важливість безпеки та навчає б'єезу з них. Покладіть на цю особу відповідальність керувати командою у забезпеченні безперервної безпеки, описаної на початку моєї відповіді.

Крім того, надайте цій особі повноваження виконувати їх . Якщо дизайн не виражає вимог безпеки, його слід переглянути. Якщо реалізація не відповідає вимогам безпеки, вона не повинна бути звільнена . Ваша особа з безпеки може зробити виклик рішення, але йому потрібно дозволити діяти за цим рішенням. Я усвідомлюю, що це може звучати як хлопець із безпеки, який говорить: "Безпека OMFG - це найважливіше", але це не те, що я маю на увазі. Якщо ваш продукт також не відповідає вимогам щодо функціональності, зручності використання або продуктивності, ви також не повинні випускати цю річ.

Чому б ти хотів це зробити? Це повинно бути дешевше: ми всі бачили (і, мабуть, цитували дешеві +10 повторень) таблицю Code Complete, де дефекти дорожчають, чим пізніше ви їх виправите, правда? Добре дефекти безпеки теж є дефектами. Я правила гри в реальному світі, більшість з них - це проблеми в вимогах, які фіксуються в обслуговуванні. Це дешево?

Гаразд, тепер що я можу як пістолет безпеки взяти напрокат? Ну виявляється, що я можу відмовитися грати за зміненими правилами. Я можу сказати розробникам, що справа в тому, щоб зменшити ризик, що це можна робити на кожному етапі, і тоді я можу допомогти їм у цьому.


Для людини, яка займає ваше становище, я здивований, що ви не можете запропонувати більше обговорень. Мені було б дуже цікаво почути, що ти маєш сказати.
Стівен Еверс

Ти маєш рацію, я втомився (реактивне відставання), коли написав відповідь. Спробую трохи заповнити.

@snorfus Я повинен вибачитися за те, що не дав хорошої відповіді. Мені справді шкода.

@Graham Lee: Я підозрював, що ви чудово відповіли від нас :) Ваші зміни довели саме це; Дякую тобі!
Стівен Еверс

@snorfus Я дійсно повинен подумати, перш ніж відправляти повідомлення. І якщо я не в стані для роздумів, я не повинен розміщувати повідомлення ...

5

Починаючи з 15 років роботи програм забезпечення безпеки щодо малих і надзвичайно великих додатків, середовищ, систем тощо, я б сказав, що тут є все. У своїх командах у мене завжди було декілька, які є хардкор-кодерами.

На детальному рівні деякі зводиться до дуже глибокого огляду коду - як приклад, я зараз працюю над багатомільйонною кодовою лінією, використовуючи інструменти для звуження можливих проблем, а потім розглядаю кожну з них, щоб класифікувати.

(Правда, тоді я передаю розробникам, щоб переадресувати або пояснити мені, чому проблема не становить небезпеки)

Але це специфічне завдання, для якого профілем ризику є сенс проводити подібну ресурсоємну роботу.

Набагато більш стандартною та значно більш ефективною є спроба зрозуміти профіль ризику організації та зосередитись на ризиках зверху вниз, наприклад:

  • Апетит до ризику - вплив на бізнес, моделювання загроз
  • Управління - відповідність законодавству, звітність тощо
  • Політика - визначення для забезпечення ефективності системи управління
  • Процеси - технічні та людські
  • Стандарти - визначення для кожного контролю безпеки
  • Впровадження - як це зробити

Сторона програмування дійсно входить лише в останні два з переглядом коду та тестуванням на певне проникнення. Для деяких організацій це дуже мало важливо, наприклад, якщо у вас є багатошаровий контроль безпеки, який вже пройшов ретельний перегляд (різні типи шифрування, скажімо), то, хоча ви можете перевірити свою реалізацію, зазвичай не збираєтесь повторно перевіряти всі код, як це було зроблено раніше.


2
Я + 1d, але будьте обережні "або поясніть мені, чому це питання не становить небезпеки". Розробники часто знаходять причину уникати зміни речі, яку вони зробили (виступаючи як розробник), і крім того, можливо, не розуміють ризиків клієнтів. Адже саме розробники написали Windows 98 ;-)

@Graham - ви сказали, що не слід було називати :-) І мені подобається ваша відповідь у новій довшій версії! +1
Rory Alsop

Авжеж. Я навмисно сказав це, тому що раніше не хотів називати Windows 98, але три роки.

1

Я ніколи не стикався ні з одним, що йшов набагато далі, ніж неясним чином обговорювати архітектуру / кращі практики під час проектування та / або запуску наборів тестування нападів / фризинг / виняток щодо готових проектів.

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

Я гадаю, що є декілька, які насправді потребують часу, щоб вивчити код і зробити тестування на огляд / дошку, але мені ще доводиться стикатися з ними в реальному житті.


це здається, що компанія, в якій ви працюєте, постійно викуповує і забирає хаків, які говорять про гарну гру, але насправді не розуміють. Окрім себе, та інших відповідей тут, я працював і тренувався з багатьма, хто робить це правильно. Справді, я, мабуть, зустрічав більше подібного, який у вас теж був ...
AviD,

@avid Я не вважав це негативом. Я впевнений, що якщо ви заплатили верхній долар, ви могли б знайти достатньо конкуруючих фірм, але навіть коли ви, як правило, отримуєте набагато більше пропозицій, щоб купити щось, ніж ви робите поради щодо вдосконалення / впровадження чогось. ЧИМО НЕ БАЄТЬСЯ, якщо використовувати відомий продукт із хорошими записами безпеки, це краще, коли це належно підходить для проблемного простору. ОП спеціально згадала АУДИТИ, і в діапазоні, який ви платите за щорічний аудит третьої сторони, ви проходите через 2, 3 і 1/2 четвертого пункту Рорі.
Білл
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.