Bug 26413

Summary: Обеспечить возможность общаться с демоном непосредственно, через socket.
Product: Sisyphus Reporter: Dmitriy Kruglikov <Dmitriy.Kruglikov>
Component: alteratorAssignee: manowar <manowar>
Status: ASSIGNED --- QA Contact: qa-sisyphus
Severity: enhancement    
Priority: P3 CC: anubix, barabashka, boyarsh, cas, gns, imz, manowar, mike, sem, shakirov
Version: unstable   
Hardware: all   
OS: Linux   

Description Dmitriy Kruglikov 2011-10-05 12:51:46 MSK
Для построения TUI для alterator необходимо и достаточно обеспечить возможность общаться с демоном через сокет, напрямую.
В каком-нибудь удобоваримом (XML?) формате.

При этом сохраняется вся существующая инфраструктура, к которой планируется добавить модульный TUI.
Comment 1 manowar@altlinux.org 2011-10-05 12:53:36 MSK
Давайте я попробую.
Comment 2 Andrey Cherepanov 2011-10-05 15:53:04 MSK
У нас уже есть alteratord, имеющий /var/run/alteratord/.socket.
alterator-browser-qt тоже общается через Unix-сокет (/root/tmp/alterator/browser-sock) (насколько я знаю, обмен происходит через структуры Scheme). Осталось научится снифферить эти сокеты (ни через nc, ни через strace у меня это не получилось).

Считаю, что XML будет оверхедом. Если уже делать грамотно, то лучше JSON.
Comment 3 Dmitriy Kruglikov 2011-10-05 16:01:17 MSK
(В ответ на комментарий №2)
> Если уже делать грамотно, то лучше JSON.

Разработчики, которые обещали мне содействие в решении вопроса с TUI,
также произносили это слово.
+1 за JSON.
Comment 4 Sergey V Turchin 2011-10-05 16:04:56 MSK
(В ответ на комментарий №2)
> насколько я знаю, обмен происходит через структуры Scheme
К browser-qt XML, обратно Scheme.
Comment 5 Sergey V Turchin 2011-10-05 16:10:00 MSK
(В ответ на комментарий №3)
> JSON.
его синтаксис соответствует синтаксису JavaScript и это создает ряд проблем безопасности. Зачастую для обработки данных, полученных от внешнего источника в формате JSON, к ним применяется функция eval() без какой-либо предварительной проверки.
http://ru.wikipedia.org/wiki/JSON#.D0.92.D0.BE.D0.BF.D1.80.D0.BE.D1.81.D1.8B_.D0.B1.D0.B5.D0.B7.D0.BE.D0.BF.D0.B0.D1.81.D0.BD.D0.BE.D1.81.D1.82.D0.B8
Comment 6 Andrey Cherepanov 2011-10-05 16:11:28 MSK
(В ответ на комментарий №4)
> К browser-qt XML, обратно Scheme.
Преобразование ведётся в alterator-browser-qt, которая и держит сокет?
Comment 7 Nick S. Grechukh 2011-10-05 16:21:52 MSK
> формате JSON, к ним применяется функция eval() без какой-либо предварительной
> проверки.

Ну и не надо применять eval. 

и вообще, YAML читабельнее.
Comment 8 barabashka 2011-10-05 16:24:33 MSK
(In reply to comment #7)
> > формате JSON, к ним применяется функция eval() без какой-либо предварительной
> > проверки.
> 
> Ну и не надо применять eval. 
> 
> и вообще, YAML читабельнее.

Что вы имеет против eval? Хотелось бы отметить, тот факт что в eval приезжает результат работы backend-а, который выполняется с правами root. Какая безопасность, о чем вы?
Comment 9 Andrey Cherepanov 2011-10-05 16:31:38 MSK
(В ответ на комментарий №8)
> Что вы имеет против eval? Хотелось бы отметить, тот факт что в eval приезжает
> результат работы backend-а, который выполняется с правами root. Какая
> безопасность, о чем вы?
Это для alteratord. Здесь же предлагается сделать общий сервер приложений с отдельным сокетом.
Comment 10 Dmitriy Kruglikov 2011-10-05 16:43:41 MSK
(В ответ на комментарий №9)
> Здесь же предлагается сделать общий сервер приложений с отдельным сокетом.

Зачем отдельный?
alteratord уже сть. И сокет у него уже есть. И backend-ов много понаписано.

Не хватает только TUI для полного счастья.
Если alteratord будет уметь "разговаривать" с внешним миром посредством JSON или еще каким-то удобоваримым образом, то TUI может быть реализован в обозримом будущем.

Если сегодня в backend можно написать все, что угодно, вплоть до rm -rf /,
то о какой (без)опасности еще говорить?

Все останется в таком же виде.
Comment 11 Sergey V Turchin 2011-10-05 16:48:41 MSK
(В ответ на комментарий №8)
> Что вы имеет против eval?
Не только. Там еще есть. А против того, что это потом начнут в веббраузер тащить.
Comment 12 barabashka 2011-10-05 17:53:06 MSK
(In reply to comment #10)


> Если сегодня в backend можно написать все, что угодно, вплоть до rm -rf /,
> то о какой (без)опасности еще говорить?
> 
> Все останется в таком же виде.

Отличный вид. (In reply to comment #11)
> (В ответ на комментарий №8)
> > Что вы имеет против eval?
> Не только. Там еще есть. А против того, что это потом начнут в веббраузер
> тащить.

Там это где? Что тащить в веббраузер? Eval и так там уже. form.js -> form_ajax()

Есть какая-то опасность, что от backend-а приедет s-выражение, которое потом будет преобразовано в некий json, который выполнится на стороне клиента и приведет к ужасному и страшному? (речь про alterator-fbi)
Comment 13 barabashka 2011-10-05 17:53:57 MSK
(In reply to comment #10)

> Если сегодня в backend можно написать все, что угодно, вплоть до rm -rf /,
> то о какой (без)опасности еще говорить?
> 

А что хочется то? Выполнять backend-ы под учетной записью пользователя?
Comment 14 Dmitriy Kruglikov 2011-10-05 19:01:39 MSK
(В ответ на комментарий №13)

> А что хочется то? Выполнять backend-ы под учетной записью пользователя?

Дожить до того дня, когда комментирующие будут помнить о том, что все эти телодвижения ради TUI,
о чем написано в первой же фразе описания FR.

TUI, естественно, запускается от root.
Либо доступ к модулю также, как и в web-варианте.
Comment 15 Nick S. Grechukh 2011-10-05 19:19:00 MSK
(In reply to comment #14)
> TUI, естественно, запускается от root.

Типа, работающий с правами рута бэкэнд может провести атаку - передать пакет данных специального вида и выполнить произвольный код с правами рута?
Comment 16 Dmitriy Kruglikov 2011-10-05 20:09:30 MSK
(В ответ на комментарий №15)
 
> Типа, работающий с правами рута бэкэнд может провести атаку - передать пакет
> данных специального вида и выполнить произвольный код с правами рута?

Типа посредством TUI можно сделать все, то же, что и посредством alterator-qt
и/или через WEB-интерфейс.

Не больше, но и не меньше.

Не понимаю, в чем проблема.
Comment 17 manowar@altlinux.org 2011-10-05 23:14:59 MSK
Товарищи, я просто хотел добавить text->xml->scm в качестве альтернативного преобразования к уже имеющемуся сейчас text->scm и всё (d.scm). Если получится, можно будет потом и text->json->scm прикрутить рядышком.

  Всё остальное останется как было: один alteratord, один сокет, и права рута в бакендах. В браузер тащить оттуда нечего.
Comment 18 Lenar Shakirov 2011-10-06 10:44:57 MSK
(В ответ на комментарий №13)
> А что хочется то? Выполнять backend-ы под учетной записью пользователя?

Я этого хочу, но в другой баге ;-)
https://bugzilla.altlinux.org/23377
Comment 19 Zerg 2012-07-20 11:35:12 MSK
(В ответ на комментарий №6)
> (В ответ на комментарий №4)
> > К browser-qt XML, обратно Scheme.
> Преобразование ведётся в alterator-browser-qt, которая и держит сокет?
Никакого преобразования не ведется.