Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book
Wykonanie dowolnego kodu na ekstremalnie popularnym: rubygems.org
Jeśli miałeś cokolwiek do czynienia z Ruby – na pewno musiałeś spotkać się z serwisem rubygems.org:
RubyGems.org is the Ruby community’s gem hosting service. Instantly publish your gems and then install them. Use the API find out more about available gems. Become a contributor and improve the site yourself.
Twórcy serwisu chwalą się:
16,728,878,438 DOWNLOADS & COUNTING
Robi wrażenie, prawda?
Podobnie wrażenie robi błąd, który prawdopodobnie istnieje od 2012 roku, a który przez deserializację YAML umożliwił zdalne wykonanie kodu na serwerze rubygems.org (podatne są też wcześniejsze niż 2.6.14 wersje pakietu rubygems, mogącego pracować lokalnie).
Dla bardziej dociekliwych: problem jest w funkcji yaml.load Wygląda bezpiecznie? Nie – bezpieczna jest yaml.safe_load
Logiczne, prawda? :-)
Co ciekawe, podobny problem zlokalizowany był w tym roku w API Airbnb (wykonanie kodu na ich serwerze), czy tutaj: tym razem na celowniku Python. Temat jest ogólnie niezależny od technologii… Coś w Javie? Proszę bardzo.
Jeśli nie używasz YAML-a, to możesz czuć się bezpieczny? Różnie z tym bywa, czasem mamy do czynienia z API, które akceptuje tylko wejście JSON, ale… można go przekodować do YAML i próbować wykonać zdalny kod na serwerze. Takie rzeczy omawiamy (również w praktyce) m.in. na naszym szkoleniu z bezpieczeństwa API (mam nadzieję, że pozwolicie na jeszcze jedną reklamę tego kursu, który wygląda naprawdę na czasie).
–ms