ES / EDS allows to change password (by extending it on right-side) when this is
done starting from 2nd iteration of cursor loop
-------------------------------------------------------------------------------------------------------------------------------
Key: CORE-5027
URL: http://tracker.firebirdsql.org/browse/CORE-5027
Project: Firebird Core
Issue Type: Bug
Components: Engine, Security
Affects Versions: 3.0 RC 1
Reporter: Pavel Zotov
(I've decided to set issue type = 'bug', but it seems like 'oddity'. It's a
pity that currently no such item in this list :-))
Running this script on FB 3.0 with auth = Srp (or Legacy, no matter):
===
show version;
set list on;
select
mon$user
,mon$remote_protocol
,mon$remote_address
,mon$client_version
,mon$remote_version
,mon$auth_method
from mon$attachments where mon$attachment_id = current_connection;
commit;
recreate table t_source(id int, x int);
recreate table t_target(id int, x int);
commit;
insert into t_source values(1, 10);
insert into t_source values(2, 20);
insert into t_source values(3, 30);
insert into t_source values(4, 40);
commit;
set term ^;
execute block returns( iter int, password_on_iter varchar(80) )
as
declare v_stt varchar(80);
declare v_dbname varchar(255);
declare v_who varchar(31) = 'SYSDBA';
declare c_source cursor for (select id, x from t_source);
declare v_id int;
declare v_x int;
begin
v_stt = 'insert into t_target( id, x ) values( ?, ?)';
iter = 1;
password_on_iter = 'masterke';
open c_source;
while (1=1) do
begin
fetch c_source into v_id, v_x;
if ( row_count = 0 ) then leave;
execute statement (v_stt) ( :v_id, :v_x )
on external rdb$get_context('SYSTEM','DB_NAME')
as user v_who
password password_on_iter
;
suspend;
iter = iter + 1;
--password_on_iter = 'x' || password_on_iter;
password_on_iter = password_on_iter || left(uuid_to_char(gen_uuid()),
5);
end
close c_source;
end
^
set term ;^
commit;
set list off;
set echo on;
select * from t_target;
===
I've got:
===
ISQL Version: WI-V3.0.0.32179 Firebird 3.0 Release Candidate 1
Server version:
Firebird/Windows/Intel/i386 (access method), version "WI-V3.0.0.32179 Firebird
3.0 Release Candidate 1"
Firebird/Windows/Intel/i386 (remote server), version "WI-V3.0.0.32179 Firebird
3.0 Release Candidate 1/tcp (csprog)/P13"
Firebird/Windows/Intel/i386 (remote interface), version "WI-V3.0.0.32179
Firebird 3.0 Release Candidate 1/tcp (csprog)/P13"
on disk structure version 12.0
MON$ATTACHMENT_ID 265
MON$SERVER_PID 1656
MON$STATE 1
MON$ATTACHMENT_NAME e30
MON$USER SYSDBA
MON$ROLE NONE
MON$REMOTE_PROTOCOL TCPv4
MON$REMOTE_ADDRESS 192.168.43.154
MON$REMOTE_PID 5408
MON$CHARACTER_SET_ID 0
MON$TIMESTAMP 2015-11-22 00:22:30.2720
MON$GARBAGE_COLLECTION 1
MON$REMOTE_PROCESS C:\MIX\Firebird\fb30\isql.exe
MON$STAT_ID 8
MON$CLIENT_VERSION WI-V3.0.0.32179 Firebird 3.0 Release Candidate 1
MON$REMOTE_VERSION P13
MON$REMOTE_HOST csprog
MON$REMOTE_OS_USER zotov
MON$AUTH_METHOD Srp
MON$SYSTEM_FLAG 0
ITER 1
PASSWORD_ON_ITER masterke
ITER 2
PASSWORD_ON_ITER masterke07896
ITER 3
PASSWORD_ON_ITER masterke07896D46CA
ITER 4
PASSWORD_ON_ITER masterke07896D46CA6C52C
ID X
============ ============
1 10
2 20
3 30
4 40
===
So, starting from SECOND iteration of cursor loop which does ES/EDS one may
to... increment string which stored PASSWORD! :-)
But such increment can be done only on right side, i.e. after last character of
previous password value.
With adding to left-side exception about 'invalid user/password' will raise (as
expected).
PS.
Trace shows that event when engine does attach/detach to security3.fdb was only
ONCE, at the beginning of script (i.e. before show version). Thus another
question raises: "who" checks authentification when we do ES/EDS *inside*
cursor loop ? In other words: why one kind of password changing can be done OK
and another ( password_on_iter = 'x' || password_on_iter; ) - fails ?
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://tracker.firebirdsql.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
------------------------------------------------------------------------------
Firebird-Devel mailing list, web interface at
https://lists.sourceforge.net/lists/listinfo/firebird-devel