Niektórzy twierdzą, że obecność narzędzi programistycznych na maszynie produkcyjnej ułatwi życie atakującemu. Jest to jednak tak niewielka przeszkoda dla atakującego, że każdy inny argument za lub przeciw instalacji narzędzi programistycznych będzie ważył więcej.
Jeśli atakujący był do tej pory w stanie przeniknąć do systemu, aby mógł wywołać dowolne narzędzia znajdujące się na serwerze, oznacza to poważne naruszenie bezpieczeństwa. Bez narzędzi programistycznych istnieje wiele innych sposobów zapisywania danych binarnych do pliku, a następnie uruchomienia chmod na tym pliku. Osoba atakująca, która chce w tym momencie użyć niestandardowego pliku wykonywalnego kompilacji w systemie, może równie dobrze skompilować ją na własnym komputerze i przenieść na serwer.
Należy zwrócić uwagę na inne, bardziej odpowiednie rzeczy. Jeśli zainstalowane oprogramowanie zawiera błąd bezpieczeństwa, istnieje kilka sposobów na ujawnienie go atakującemu:
- Pakiet może zawierać plik wykonywalny suid lub sgid.
- Pakiet może uruchamiać usługi w systemie.
- Pakiet może instalować skrypty, które są wywoływane automatycznie w określonych okolicznościach (dotyczy to zadań cron, ale skrypty mogą być wywoływane przez inne zdarzenia, na przykład gdy zmienia się stan interfejsu sieciowego lub gdy użytkownik się loguje).
- Pakiet może instalować i-węzły urządzeń.
Nie spodziewałbym się, że narzędzia programistyczne będą pasować do jednego z powyższych i jako taki nie jest pakietem wysokiego ryzyka.
Jeśli masz przepływy pracy, w których korzystasz z narzędzi programistycznych, musisz najpierw zdecydować, czy są to uzasadnione przepływy pracy, a jeśli tak, to zainstaluj narzędzia programistyczne.
Jeśli okaże się, że tak naprawdę nie potrzebujesz tych narzędzi na serwerze, powinieneś powstrzymać się od ich instalowania z wielu powodów:
- Oszczędza miejsce na dysku, zarówno na serwerze, jak i na kopiach zapasowych.
- Mniej zainstalowane oprogramowanie ułatwia śledzenie zależności.
- Jeśli pakiet nie jest potrzebny, nie ma sensu podejmować dodatkowego ryzyka związanego z jego instalacją, nawet jeśli ryzyko to jest niewielkie.
Jeśli zdecydujesz, że ze względów bezpieczeństwa nie zezwolisz nieuprzywilejowanym użytkownikom na umieszczanie własnych plików wykonywalnych na serwerze, to powinieneś unikać nie narzędzi programistycznych, ale raczej katalogów zapisywalnych dla tych użytkowników w systemach plików zamontowanych z uprawnieniami do wykonywania. Narzędzia programistyczne mogą być nadal przydatne, nawet w takich okolicznościach, ale nie jest to bardzo prawdopodobne.